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.
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
# 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
nullou""equivale a omiti-lo. Qualquer outro valor devolve400.
- Name
- should_generate_model
- Type
- boolean
- predefinição true
- Description
Se deve construir o modelo de relevo. Defina-o como
falsepara 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
20a250milímetros. Comremove_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
0a60milímetros. Comremove_basedefinido comotrue,0deixa 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_thresholddefine o que conta como fundo. O Meshy verificaremoval_thresholdem ambos os casos.
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.01a1, onde o mapa de profundidade varia de0a1. 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.1a10milímetros. Quandoremove_baseétrue, omita-a ou envie0.
- Name
- bend_mode
- Type
- string
- predefinição off
- Description
Se deve curvar o relevo, e em que sentido. Quando não é
off,bend_axisebend_angledefinem 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.
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
0a360graus. Abaixo de1, 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
512a2048. Um valor mais elevado preserva mais detalhe e cria ficheiros maiores. No valor predefinido1024, 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. Em2048, são cerca de 150 MB e 300 MB. Uma curvatura torna-os maiores: o ficheiro STL pode atingir cerca de 800 MB em2048.
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_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 seus 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 é inferior a0.1sem ele. - URL inacessível: O Meshy não consegue transferir a imagem de
image_url, por exemplo porque o URL devolve404ou 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.
- Parâmetro em falta:
- 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.
Obter uma tarefa de Relevo
Devolve uma tarefa de Relevo através do respetivo 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 proveniente da resposta de criação.
Devolve
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
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.
Listar tarefas de Relevo
Devolve 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 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 entre101e255como100, e um valor maior devolve400.
- 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.
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 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_resolutionindica 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. É
0até a tarefa começar e100quando é concluída com sucesso.
- Name
- status
- Type
- string
- Description
O estado 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, 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. É
0até a tarefa começar.
- Name
- finished_at
- Type
- timestamp
- Description
Momento em que a tarefa terminou, em milissegundos Unix. É
0até a tarefa terminar.
- Name
- expires_at
- Type
- timestamp
- Description
Momento 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. Ver Erros.
- Name
- consumed_credits
- Type
- integer
- Description
O número de créditos que a tarefa utilizou:
20, ou0para uma tarefaFAILED, que a Meshy reembolsa.