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.
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
# 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_mmpadrã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
nullou""é o mesmo que omiti-lo. Qualquer outro valor retorna400.
- Name
- should_generate_model
- Type
- boolean
- padrão true
- Description
Se deve construir o modelo de relevo. Defina como
falsepara 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
20a250milímetros. Comremove_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
0a60milímetros. Comremove_basedefinido comotrue,0deixa 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_thresholddefine o que conta como fundo. O Meshy verificaremoval_thresholdem ambos os casos.
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.01a1, em que o mapa de profundidade varia de0a1. 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.1a10milímetros. Quandoremove_baseétrue, omita ou envie0.
- Name
- bend_mode
- Type
- string
- padrão off
- Description
Se deve curvar o relevo, e em qual direção. Quando não é
off,bend_axisebend_anglemoldam 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.
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
0a360graus. Abaixo de1, 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
512a2048. Um valor mais alto preserva detalhes mais finos e gera arquivos maiores. No valor padrão de1024, 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. Em2048, 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 em2048.
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_urlnã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,
variantnão éhighnemlow, oumesh_resolutionnão é um número inteiro de512a2048. - Espessura da base:
base_thickness_mmnão é0comremove_basedefinido comotrue, ou está abaixo de0.1sem ele. - URL inacessível: O Meshy não consegue baixar a imagem de
image_url, por exemplo porque a URL retorna404ou 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.
- Parâmetro ausente:
- 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.
Obter uma tarefa de Relevo
Retorna uma tarefa de Relevo pelo seu ID.
Request
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
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
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.
Listar tarefas de Relevo
Retorna uma lista das suas tarefas de Relevo.
Request
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 de101a255como100, e um valor maior retorna400.
- 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.
Transmitir uma tarefa de Relevo em stream
Transmite as atualizações de uma tarefa de Relevo como Server-Sent Events (SSE).
Request
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_resolutionlista 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. É
0até a tarefa começar e100quando é concluída com sucesso.
- Name
- status
- Type
- string
- Description
O status da tarefa, um de
PENDING,IN_PROGRESS,SUCCEEDEDouFAILED.
- 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. É
0até a tarefa começar.
- Name
- finished_at
- Type
- timestamp
- Description
Horário em que a tarefa terminou, em milissegundos Unix. É
0até a tarefa terminar.
- Name
- expires_at
- Type
- timestamp
- Description
Horário em que o resultado da tarefa expira, em milissegundos Unix. É
0até 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, ou0para uma tarefaFAILED, que a Meshy reembolsa.