lowpoly será descontinuado em 30 de out. de 2026. Troque de modelo antes dessas datas para evitar erros nas solicitações. Ver todas as descontinuações

API de Relevo

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


POST/openapi/v1/relief

Criar uma tarefa de Relevo

Cria uma tarefa de Relevo. A tarefa transforma uma foto em um modelo de baixo-relevo. Quando é bem-sucedida, a tarefa gera o modelo como um arquivo GLB e um arquivo STL, um mapa de profundidade em escala de cinza 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. Essas requisições retornam 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 foto a ser transformada em relevo, como uma URL pública ou uma data URI (data:image/png;base64,...).

    A imagem deve ser um arquivo JPG, JPEG, PNG ou WebP de no máximo 20 MB, e no mínimo 32 × 32 pixels. Seu lado maior pode ter no máximo cerca de 16 vezes o seu lado menor. Qualquer outra imagem retorna 400. O Meshy preenche áreas transparentes com preto antes de construir o relevo.

  • Name
    variant
    Type
    string
    padrão low
    Description

    O estilo do relevo. Ele molda o mapa de profundidade e define o carving_depth_mm padrão.

    Valores disponíveis:

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

    Enviar null ou "" é o mesmo que omiti-lo. Qualquer outro valor retorna 400.

  • Name
    should_generate_model
    Type
    boolean
    padrão true
    Description

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

  • Name
    size_mm
    Type
    number
    padrão 60
    Description

    O comprimento do lado maior da foto no modelo, medido de forma plana antes de qualquer curvatura, de 20 a 250 milímetros. Com remove_base, o modelo pode ser menor.

  • Name
    carving_mode
    Type
    string
    padrão emboss
    Description

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

    Valores disponíveis:

    • emboss: as partes mais próximas da foto se destacam.
    • engrave: a profundidade é invertida, de forma que as partes mais próximas sejam entalhadas para dentro.

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

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

    A profundidade do entalhe do relevo, de 0 a 60 milímetros. Com remove_base definido como true, 0 deixa um modelo vazio. A tarefa ainda assim é bem-sucedida e custa 20 créditos, e seus arquivos GLB e STL não têm geometria.

  • Name
    remove_base
    Type
    boolean
    padrão false
    Description

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

Aplica-se somente quando remove_base = true
  • Name
    removal_threshold
    Type
    number
    padrão 0.01
    Description

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

  • Name
    base_thickness_mm
    Type
    number
    padrã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 ou envie 0.

  • Name
    bend_mode
    Type
    string
    padrão off
    Description

    Se deve curvar o relevo, e em qual direção. Quando não é off, bend_axis e bend_angle moldam a curvatura. O Meshy os verifica em ambos os casos.

    Valores disponíveis:

    • off: um relevo plano.
    • convex: a frente se projeta para fora.
    • concave: a frente se curva para dentro.
Aplica-se somente quando bend_mode = convex or concave
  • Name
    bend_axis
    Type
    string
    padrão xz
    Description

    Quais bordas a curvatura enrola.

    Valores disponíveis:

    • xz: as bordas esquerda e direita.
    • yz: as bordas superior e inferior.
  • Name
    bend_angle
    Type
    number
    padrão 60
    Description

    O arco que a curvatura abrange, de 0 a 360 graus. Abaixo de 1, o relevo permanece plano.

  • Name
    mesh_resolution
    Type
    integer
    padrão 1024
    Description

    O número de pontos de malha ao longo do lado maior da foto, de 512 a 2048. Um valor mais alto preserva detalhes mais finos e gera arquivos maiores. No valor padrão de 1024, o arquivo GLB tem cerca de 40 a 50 MB e o arquivo STL cerca de 80 a 105 MB. Uma foto quadrada resulta nos tamanhos maiores. Em 2048, eles ficam com cerca de 150 MB e 300 MB. Uma curvatura os torna maiores: o arquivo STL pode chegar a cerca de 800 MB em 2048.

Retornos

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

Modos de falha

  • Name
    400 - Bad Request
    Description

    A requisição não pode ser executada. A mensagem de erro indica qual problema foi encontrado. Por exemplo:

    • Parâmetro ausente: 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 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 está abaixo de 0.1 sem ele.
    • URL inacessível: O Meshy não consegue baixar a imagem de image_url, por exemplo porque a URL retorna 404 ou expira por tempo limite.
    • Imagem inválida: A imagem não é um arquivo JPG, JPEG, PNG ou WebP, tem mais de 20 MB, é menor que 32 × 32 pixels, tem pixels em excesso, ou não pode ser lida.
    • Proporção extrema: O lado maior da imagem é mais de cerca de 16 vezes o seu lado menor.

    Corrija a requisição e envie-a novamente. O Meshy não cobra por isso. Consulte Erros.

  • Name
    401 - Unauthorized
    Description

    A chave de API está ausente 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 seu saldo de créditos e tente novamente.
    • Plano gratuito: Criar uma tarefa requer um plano pago. Faça upgrade do seu plano nas configurações de assinatura e tente novamente.
  • Name
    403 - Forbidden
    Description

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

  • Name
    429 - Too Many Requests
    Description

    Um destes limites foi atingido:

    • Você enviou requisições demais. Aguarde e tente novamente. Consulte Limites de taxa.
    • Tarefas demais suas estão na fila ou em execução. Aguarde algumas terminarem e tente novamente.
    • Em um plano ilimitado sem créditos restantes, você atingiu o número de tarefas que podem ser executadas sem créditos. Aguarde uma tarefa terminar, 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

Retorna uma tarefa de Relevo pelo seu 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 obtido na resposta de criação.

Retornos

O objeto de tarefa de Relevo.


DELETE/openapi/v1/relief/:id

Excluir uma tarefa de Relevo

Exclui permanentemente uma tarefa de Relevo, incluindo seu modelo, mapa de profundidade e dados. Você não pode desfazer uma exclusã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 ser excluída.

Status da tarefa

Excluir uma tarefa PENDING reembolsa os créditos usados quando você a criou.

Uma tarefa IN_PROGRESS não pode ser excluída. A requisição retorna 409 Conflict, e a tarefa continua em execução. A Meshy não reembolsa uma tarefa que já foi iniciada, então excluí-la custaria tanto os créditos quanto o resultado. Aguarde até que ela alcance o status SUCCEEDED ou FAILED e, então, exclua-a.

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

Retornos

200 OK quando a tarefa é excluída, ou 409 Conflict quando a tarefa está IN_PROGRESS.


GET/openapi/v1/relief

Listar tarefas de Relevo

Retorna 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 ser retornada. Começa em e assume como padrão 1.

  • Name
    page_size
    Type
    integer
    Description

    O número de tarefas por página, até 100. O padrão é 10. Meshy trata um valor de 101 a 255 como 100, e um valor maior retorna 400.

  • Name
    sort_by
    Type
    string
    Description

    A ordem de classificação.

    Valores disponíveis:

    • +created_at: mais antigo primeiro
    • -created_at: mais recente primeiro

Retorna

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 retornado na resposta de criação.

Retornos

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 retorna. 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 seus valores quando a tarefa atinge SUCCEEDED. Uma tarefa somente de mapa de profundidade mantém model_urls como {} e thumbnail_url vazio.

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


O objeto de tarefa Relevo

Um objeto de tarefa Relevo descreve um relevo feito a partir de uma foto. model_urls, depth_map_url e thumbnail_url estão sempre presentes e ficam vazios até que a tarefa seja 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 da tarefa, sempre relief.

  • Name
    model_urls
    Type
    object
    Description

    URLs de download para o modelo de relevo. Os arquivos podem ser grandes; mesh_resolution lista tamanhos típicos.

    • Name
      glb
      Type
      string
      Description

      O arquivo GLB, sem textura. Suas unidades são metros. Ausente para uma tarefa somente de mapa de profundidade.

    • Name
      stl
      Type
      string
      Description

      O mesmo modelo como um arquivo STL binário. Suas unidades são milímetros, então ele abre no tamanho real do relevo, com Z para cima. Ausente para uma tarefa somente de mapa de profundidade.

  • Name
    depth_map_url
    Type
    string
    Description

    URL de download para o mapa de profundidade em escala de cinza de 16 bits a partir do qual o relevo é construído. Pixels mais claros são mais altos. Os valores são alturas relativas, não milímetros. Softwares de gravação a laser e CNC podem usá-lo como um mapa de altura. O arquivo tem cerca de 1 a 2 MB. Vazio se não houver nenhum.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL de download para uma imagem de pré-visualização do modelo de relevo. Vazio se nenhuma foi renderizada, incluindo para uma tarefa somente de mapa de profundidade.

  • Name
    progress
    Type
    integer
    Description

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

  • Name
    status
    Type
    string
    Description

    O status 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, então ele aparece apenas enquanto houver tarefas à frente desta.

  • Name
    created_at
    Type
    timestamp
    Description

    Horário em que a tarefa foi criada, em milissegundos Unix.

  • Name
    started_at
    Type
    timestamp
    Description

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

  • Name
    finished_at
    Type
    timestamp
    Description

    Horário em que a tarefa terminou, em milissegundos Unix. É 0 até a tarefa terminar.

  • Name
    expires_at
    Type
    timestamp
    Description

    Horário 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. Veja Erros.

  • Name
    consumed_credits
    Type
    integer
    Description

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