lowpoly será descontinuado a 30/10/2026. Mude de modelo antes destas datas para evitar erros nos pedidos. Ver todas as descontinuações

API de Relevo

Transforme uma fotografia num modelo 3D em baixo-relevo e num mapa de profundidade de 16 bits, para impressão 3D, gravação a laser e esculpido CNC.


POST/openapi/v1/relief

Criar uma tarefa de Relevo

Cria uma tarefa de Relevo. A tarefa transforma uma fotografia num modelo de baixo-relevo. Quando é bem-sucedida, a tarefa produz o modelo como um ficheiro GLB e um ficheiro STL, um mapa de profundidade em escala de cinzentos de 16 bits e uma imagem de pré-visualização. Para obter apenas o mapa de profundidade, defina should_generate_model como false.

A tarefa é executada em segundo plano.

Uma tarefa de Relevo não pode ser a entrada de outro endpoint, como Remesh, Converter, ou Auto Split. Esses pedidos devolvem 403.

Request

POST
/openapi/v1/relief
# Simple request: a low relief, 60 mm on its longer side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "image_url": "<your publicly accessible image url or base64-encoded data URI>"
  }'

# Advanced request: a deep 120 mm relief with a thicker base, curved from side to side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "image_url": "<your publicly accessible image url or base64-encoded data URI>",
    "variant": "high",
    "size_mm": 120,
    "carving_depth_mm": 10,
    "base_thickness_mm": 3,
    "bend_mode": "convex",
    "bend_angle": 90
  }'

Response

{
  "result": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20"
}

Parâmetros

  • Name
    image_url
    Type
    string
    Obrigatório
    Description

    A fotografia a transformar num relevo, como um URL público ou um data URI (data:image/png;base64,...).

    A imagem deve ser um ficheiro JPG, JPEG, PNG ou WebP com no máximo 20 MB, e pelo menos 32 × 32 pixels. O seu lado mais longo pode ter, no máximo, cerca de 16 vezes o seu lado mais curto. Qualquer outra imagem devolve 400. O Meshy preenche as áreas transparentes a preto antes de construir o relevo.

  • Name
    variant
    Type
    string
    predefinição low
    Description

    O estilo do relevo. Define o mapa de profundidade e define o valor predefinido de carving_depth_mm.

    Valores disponíveis:

    • high: entalhe mais profundo, para peças impressas em 3D.
    • low: entalhe raso, para gravação a laser, entalhe CNC e placas finas.

    Enviar null ou "" equivale a omiti-lo. Qualquer outro valor devolve 400.

  • Name
    should_generate_model
    Type
    boolean
    predefinição true
    Description

    Se deve construir o modelo de relevo. Defina-o como false para uma tarefa que produza apenas o mapa de profundidade, sem modelo e sem imagem de pré-visualização. O Meshy continua a verificar os parâmetros de tamanho, entalhe, base, curvatura e resolução, mas não os utiliza. Isto não altera o custo em créditos.

  • Name
    size_mm
    Type
    number
    predefinição 60
    Description

    O comprimento do lado mais longo da fotografia no modelo, medido na posição plana antes de qualquer curvatura, de 20 a 250 milímetros. Com remove_base, o modelo pode ser mais pequeno.

  • Name
    carving_mode
    Type
    string
    predefinição emboss
    Description

    Se o motivo se destaca da placa ou é entalhado nela.

    Valores disponíveis:

    • emboss: as partes mais próximas da fotografia destacam-se.
    • engrave: a profundidade é invertida, pelo que as partes mais próximas ficam entalhadas para dentro.

    O mapa de profundidade é o mesmo em ambos os modos.

  • Name
    carving_depth_mm
    Type
    number
    predefinição 6 (high), 3 (low)
    Description

    Até que profundidade o relevo é entalhado, de 0 a 60 milímetros. Com remove_base definido como true, 0 deixa um modelo vazio. A tarefa continua bem-sucedida e custa 20 créditos, e os seus ficheiros GLB e STL não têm geometria.

  • Name
    remove_base
    Type
    boolean
    predefinição false
    Description

    Se deve cortar o fundo e não construir nenhuma placa de base. Quando é true, removal_threshold define o que conta como fundo. O Meshy verifica removal_threshold em ambos os casos.

Aplica-se apenas quando remove_base = true
  • Name
    removal_threshold
    Type
    number
    predefinição 0.01
    Description

    A profundidade abaixo da qual o Meshy corta o fundo, de 0.01 a 1, onde o mapa de profundidade varia de 0 a 1. Um valor elevado pode cortar todo o relevo e deixar um modelo vazio, o que ainda assim é bem-sucedido e cobrado.

  • Name
    base_thickness_mm
    Type
    number
    predefinição 1, or 0 with remove_base
    Description

    A espessura da placa de base, de 0.1 a 10 milímetros. Quando remove_base é true, omita-a ou envie 0.

  • Name
    bend_mode
    Type
    string
    predefinição off
    Description

    Se deve curvar o relevo, e em que sentido. Quando não é off, bend_axis e bend_angle definem a curvatura. O Meshy verifica-os em ambos os casos.

    Valores disponíveis:

    • off: um relevo plano.
    • convex: a frente abaúla para fora.
    • concave: a frente curva para dentro.
Aplica-se apenas quando bend_mode = convex or concave
  • Name
    bend_axis
    Type
    string
    predefinição xz
    Description

    Que arestas a curvatura enrola.

    Valores disponíveis:

    • xz: as arestas esquerda e direita.
    • yz: as arestas superior e inferior.
  • Name
    bend_angle
    Type
    number
    predefinição 60
    Description

    O arco que a curvatura abrange, de 0 a 360 graus. Abaixo de 1, o relevo mantém-se plano.

  • Name
    mesh_resolution
    Type
    integer
    predefinição 1024
    Description

    O número de pontos da malha ao longo do lado mais longo da fotografia, de 512 a 2048. Um valor mais elevado preserva mais detalhe e cria ficheiros maiores. No valor predefinido 1024, o ficheiro GLB tem cerca de 40 a 50 MB e o ficheiro STL cerca de 80 a 105 MB. Uma fotografia quadrada dá os tamanhos maiores. Em 2048, são cerca de 150 MB e 300 MB. Uma curvatura torna-os maiores: o ficheiro STL pode atingir cerca de 800 MB em 2048.

Devolve

202 Accepted, com o ID da nova tarefa de Relevo em result.

Modos de falha

  • Name
    400 - Bad Request
    Description

    O pedido não pode ser executado. A mensagem de erro indica qual o problema encontrado. Por exemplo:

    • Parâmetro em falta: image_url não foi enviado.
    • Parâmetro inválido: Um parâmetro tem o tipo errado, está fora do seu intervalo, ou não é um dos seus valores disponíveis. Por exemplo, variant não é high nem low, ou mesh_resolution não é um número inteiro de 512 a 2048.
    • Espessura da base: base_thickness_mm não é 0 com remove_base definido como true, ou é inferior a 0.1 sem ele.
    • URL inacessível: O Meshy não consegue transferir a imagem de image_url, por exemplo porque o URL devolve 404 ou expira o tempo de espera.
    • Imagem inválida: A imagem não é um ficheiro JPG, JPEG, PNG ou WebP, tem mais de 20 MB, é mais pequena do que 32 × 32 pixels, tem demasiados pixels, ou não pode ser lida.
    • Proporção extrema: O lado mais longo da imagem é mais de cerca de 16 vezes o seu lado mais curto.

    Corrija o pedido e, em seguida, envie-o novamente. O Meshy não cobra por isso. Consulte Erros.

  • Name
    401 - Unauthorized
    Description

    A chave de API está em falta ou é inválida. Verifique o cabeçalho Authorization.

  • Name
    402 - Payment Required
    Description

    Por exemplo:

    • Créditos insuficientes: A conta não tem créditos suficientes para esta tarefa, ou a conta atingiu um limite de créditos. Verifique o seu saldo de créditos e tente novamente.
    • Plano gratuito: A criação de uma tarefa requer um plano pago. Atualize o seu plano nas definições de subscrição e tente novamente.
  • Name
    403 - Forbidden
    Description

    A moderação de conteúdo bloqueou a imagem. O Meshy não cobra pelo pedido. Envie uma imagem diferente.

  • Name
    429 - Too Many Requests
    Description

    Um destes limites foi atingido:

    • Enviou demasiados pedidos. Aguarde e tente novamente. Consulte Limites de taxa.
    • Demasiadas das suas tarefas estão em fila de espera ou em execução. Aguarde que algumas terminem e tente novamente.
    • Num plano ilimitado sem créditos restantes, atingiu o número de tarefas que podem ser executadas sem créditos. Aguarde que uma tarefa termine, ou adicione créditos.

Se uma verificação de segurança recusar a imagem enquanto a tarefa está em execução, a tarefa falha com task_error.type definido como invalid_input e task_error.code definido como provider_content_refused. O Meshy reembolsa os créditos da tarefa. Envie uma imagem diferente. Consulte Erros.


GET/openapi/v1/relief/:id

Obter uma tarefa de Relevo

Devolve uma tarefa de Relevo através do respetivo ID.

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
curl https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
  "type": "relief",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
  },
  "depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000060000,
  "expires_at": 1700259260000,
  "task_error": null,
  "consumed_credits": 20
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa proveniente da resposta de criação.

Devolve

O objeto de tarefa de Relevo.


DELETE/openapi/v1/relief/:id

Eliminar uma tarefa de Relevo

Elimina permanentemente uma tarefa de Relevo, incluindo o seu modelo, mapa de profundidade e dados. Não pode anular uma eliminação.

Request

DELETE
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS. The task keeps running:
{
  "message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}

Parâmetros de caminho

  • Name
    id
    Type
    path
    Description

    O ID da tarefa a eliminar.

Estado da tarefa

Eliminar uma tarefa PENDING reembolsa os créditos que utilizou ao criá-la.

Uma tarefa IN_PROGRESS não pode ser eliminada. O pedido devolve 409 Conflict, e a tarefa continua a ser executada. O Meshy não reembolsa uma tarefa que já começou, por isso eliminá-la custar-lhe-ia tanto os créditos como o resultado. Aguarde que chegue a SUCCEEDED ou FAILED e, só depois, elimine-a.

Eliminar uma tarefa SUCCEEDED não reembolsa os seus créditos. Uma tarefa FAILED já foi reembolsada quando falhou.

Retorna

200 OK quando a tarefa é eliminada, ou 409 Conflict quando a tarefa está IN_PROGRESS.


GET/openapi/v1/relief

Listar tarefas de Relevo

Devolve uma lista das suas tarefas de Relevo.

Request

GET
/openapi/v1/relief
curl https://api.meshy.ai/openapi/v1/relief?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
    "type": "relief",
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
    },
    "depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
    "thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
    "progress": 100,
    "status": "SUCCEEDED",
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000060000,
    "expires_at": 1700259260000,
    "task_error": null,
    "consumed_credits": 20
  }
]

Parâmetros

  • Name
    page_num
    Type
    integer
    Description

    O número da página a devolver. Começa em e tem por predefinição 1.

  • Name
    page_size
    Type
    integer
    Description

    O número de tarefas por página, até 100. O valor predefinido é 10. O Meshy trata um valor entre 101 e 255 como 100, e um valor maior devolve 400.

  • Name
    sort_by
    Type
    string
    Description

    A ordem de ordenação.

    Valores disponíveis:

    • +created_at: mais antigas primeiro
    • -created_at: mais recentes primeiro

Devolve

Uma lista paginada de objetos de tarefa de Relevo.


GET/openapi/v1/relief/:id/stream

Transmitir uma tarefa de Relevo em stream

Transmite as atualizações de uma tarefa de Relevo como Server-Sent Events (SSE).

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream
curl -N https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example
event: error
data: {
  "status_code": 404,
  "message": "Task not found"
}

// Message event examples illustrate task progress (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
  "id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
  "type": "relief",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
  },
  "depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000060000,
  "expires_at": 1700259260000,
  "task_error": null,
  "consumed_credits": 20
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa proveniente da resposta de criação.

Retorna

Um stream de objetos de tarefa de Relevo como Server-Sent Events.

Cada evento message contém o objeto de tarefa completo, o mesmo que Obter uma tarefa de Relevo devolve. Enquanto a tarefa está PENDING ou IN_PROGRESS, os campos que mudam entre eventos são progress, status, started_at e preceding_tasks (presente apenas enquanto houver tarefas à frente desta). model_urls, depth_map_url e thumbnail_url recebem os seus valores quando a tarefa atinge SUCCEEDED. Uma tarefa apenas de mapa de profundidade mantém model_urls como {} e um thumbnail_url vazio.

Um evento error contém apenas status_code e message, por isso verifique o nome do evento antes de ler status.


O objeto de tarefa Relief

Um objeto de tarefa Relief descreve um relevo feito a partir de uma fotografia. model_urls, depth_map_url e thumbnail_url estão sempre presentes, e vazios até a tarefa ser concluída com sucesso.

The Relief Task Object

{
  "id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
  "type": "relief",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
  },
  "depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000060000,
  "expires_at": 1700259260000,
  "task_error": null,
  "consumed_credits": 20
}

Depth map only

{
  "id": "0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31",
  "type": "relief",
  "model_urls": {},
  "depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31/output/depth.png?Expires=***",
  "thumbnail_url": "",
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000030000,
  "expires_at": 1700259230000,
  "task_error": null,
  "consumed_credits": 20
}
  • Name
    id
    Type
    string
    Description

    O ID da tarefa. Trate-o como uma string opaca e não dependa do seu formato.

  • Name
    type
    Type
    string
    Description

    O tipo de tarefa, sempre relief.

  • Name
    model_urls
    Type
    object
    Description

    URLs de download para o modelo do relevo. Os ficheiros podem ser grandes; mesh_resolution indica os tamanhos típicos.

    • Name
      glb
      Type
      string
      Description

      O ficheiro GLB, sem textura. As suas unidades são metros. Ausente numa tarefa apenas de mapa de profundidade.

    • Name
      stl
      Type
      string
      Description

      O mesmo modelo como um ficheiro STL binário. As suas unidades são milímetros, pelo que abre no tamanho real do relevo, com o Z para cima. Ausente numa tarefa apenas de mapa de profundidade.

  • Name
    depth_map_url
    Type
    string
    Description

    URL de download para o mapa de profundidade em escala de cinzentos de 16 bits a partir do qual o relevo é construído. Os pixels mais claros são mais altos. Os valores são alturas relativas, não milímetros. O software de gravação a laser e CNC pode utilizá-lo como mapa de alturas. O ficheiro tem cerca de 1 a 2 MB. Vazio se não existir nenhum.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL de download para uma imagem de pré-visualização do modelo de relevo. Vazio se nenhuma tiver sido gerada, incluindo numa tarefa apenas de mapa de profundidade.

  • Name
    progress
    Type
    integer
    Description

    Quanto da tarefa está concluído, em percentagem. É 0 até a tarefa começar e 100 quando é concluída com sucesso.

  • Name
    status
    Type
    string
    Description

    O estado da tarefa, um de PENDING, IN_PROGRESS, SUCCEEDED ou FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    O número de tarefas à frente desta na fila. O campo é omitido quando o valor é 0, pelo que só aparece enquanto existem tarefas à frente desta.

  • Name
    created_at
    Type
    timestamp
    Description

    Momento em que a tarefa foi criada, em milissegundos Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Momento em que a tarefa começou, em milissegundos Unix. É 0 até a tarefa começar.

  • Name
    finished_at
    Type
    timestamp
    Description

    Momento em que a tarefa terminou, em milissegundos Unix. É 0 até a tarefa terminar.

  • Name
    expires_at
    Type
    timestamp
    Description

    Momento em que o resultado da tarefa expira, em milissegundos Unix. É 0 até a tarefa terminar.

  • Name
    task_error
    Type
    object
    Description

    Os detalhes do erro quando a tarefa falha. Ver Erros.

  • Name
    consumed_credits
    Type
    integer
    Description

    O número de créditos que a tarefa utilizou: 20, ou 0 para uma tarefa FAILED, que a Meshy reembolsa.