API de Relieve
Convierte una foto en un modelo 3D de bajorrelieve y un mapa de profundidad de 16 bits, para impresión 3D, grabado láser y tallado CNC.
Crear una tarea de Relieve
Crea una tarea de Relieve. La tarea convierte una foto en un modelo de bajorrelieve. Cuando se completa con éxito, la tarea genera el modelo como un archivo GLB y un archivo STL, un mapa de profundidad en escala de grises de 16 bits y una imagen de vista previa. Para obtener solo el mapa de profundidad, establece should_generate_model en false.
La tarea se ejecuta en segundo plano.
Una tarea de Relieve no puede ser la entrada de otro endpoint, como Remallado, Convertir o Auto Split. Esas solicitudes devuelven 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
- Requerido
- Description
La foto para convertir en relieve, como una URL pública o un Data URI (
data:image/png;base64,...).La imagen debe ser un archivo JPG, JPEG, PNG o WebP de máximo 20 MB, y al menos 32 × 32 píxeles. Su lado más largo puede ser como máximo unas 16 veces su lado más corto. Cualquier otra imagen devuelve
400. Meshy rellena las áreas transparentes con negro antes de construir el relieve.
- Name
- variant
- Type
- string
- predeterminado low
- Description
El estilo del relieve. Define la forma del mapa de profundidad y establece el valor predeterminado de
carving_depth_mm.Valores disponibles:
high: tallado más profundo, para piezas impresas en 3D.low: tallado superficial, para grabado láser, tallado CNC y placas delgadas.
Enviar
nullo""es lo mismo que omitirlo. Cualquier otro valor devuelve400.
- Name
- should_generate_model
- Type
- boolean
- predeterminado true
- Description
Indica si se debe construir el modelo de relieve. Establécelo en
falsepara una tarea que genere solo el mapa de profundidad, sin modelo ni imagen de vista previa. Meshy sigue comprobando los parámetros de tamaño, tallado, base, curvatura y resolución, pero no los utiliza. No cambia el costo en créditos.
- Name
- size_mm
- Type
- number
- predeterminado 60
- Description
La longitud del lado más largo de la foto en el modelo, medida en plano antes de cualquier curvatura, de
20a250milímetros. Conremove_base, el modelo puede ser más pequeño.
- Name
- carving_mode
- Type
- string
- predeterminado emboss
- Description
Indica si el sujeto resalta de la placa o se corta en ella.
Valores disponibles:
emboss: las partes más cercanas de la foto resaltan.engrave: la profundidad se invierte, de modo que las partes más cercanas quedan cortadas hacia adentro.
El mapa de profundidad es el mismo en ambos modos.
- Name
- carving_depth_mm
- Type
- number
- predeterminado 6 (high), 3 (low)
- Description
Qué tan profundo se talla el relieve, de
0a60milímetros. Conremove_baseestablecido entrue,0deja un modelo vacío. La tarea sigue teniendo éxito y cuesta 20 créditos, y sus archivos GLB y STL no tienen geometría.
- Name
- remove_base
- Type
- boolean
- predeterminado false
- Description
Indica si se debe recortar el fondo y no construir una placa base. Cuando es
true,removal_thresholdestablece qué se considera fondo. Meshy compruebaremoval_thresholden ambos casos.
remove_base = true- Name
- removal_threshold
- Type
- number
- predeterminado 0.01
- Description
La profundidad por debajo de la cual Meshy recorta el fondo, de
0.01a1, donde el mapa de profundidad va de0a1. Un valor alto puede recortar todo el relieve y dejar un modelo vacío, que aun así se completa con éxito y se cobra.
- Name
- base_thickness_mm
- Type
- number
- predeterminado 1, or 0 with remove_base
- Description
El grosor de la placa base, de
0.1a10milímetros. Cuandoremove_baseestrue, omítelo o envía0.
- Name
- bend_mode
- Type
- string
- predeterminado off
- Description
Indica si se debe curvar el relieve, y en qué dirección. Cuando no es
off,bend_axisybend_angledefinen la curvatura. Meshy los comprueba en ambos casos.Valores disponibles:
off: un relieve plano.convex: el frente se abomba hacia afuera.concave: el frente se curva hacia adentro.
bend_mode = convex or concave- Name
- bend_axis
- Type
- string
- predeterminado xz
- Description
Qué bordes enrosca la curvatura.
Valores disponibles:
xz: los bordes izquierdo y derecho.yz: los bordes superior e inferior.
- Name
- bend_angle
- Type
- number
- predeterminado 60
- Description
El arco que abarca la curvatura, de
0a360grados. Por debajo de1, el relieve se mantiene plano.
- Name
- mesh_resolution
- Type
- integer
- predeterminado 1024
- Description
El número de puntos de malla a lo largo del lado más largo de la foto, de
512a2048. Un valor más alto conserva detalles más finos y genera archivos más grandes. Con el valor predeterminado de1024, el archivo GLB tiene aproximadamente de 40 a 50 MB y el archivo STL aproximadamente de 80 a 105 MB. Una foto cuadrada da los tamaños mayores. A2048, tienen aproximadamente 150 MB y 300 MB. Una curvatura los hace más grandes: el archivo STL puede alcanzar aproximadamente 800 MB a2048.
Devuelve
202 Accepted, con el ID de la nueva tarea de Relieve en result.
Modos de fallo
- Name
400 - Bad Request- Description
La solicitud no se puede ejecutar. El mensaje de error indica qué problema encontró. Por ejemplo:
- Parámetro faltante: no se envió
image_url. - Parámetro inválido: un parámetro tiene el tipo incorrecto, está fuera de su rango o no es uno de sus valores disponibles. Por ejemplo,
variantno eshighnilow, omesh_resolutionno es un entero de512a2048. - Grosor de base:
base_thickness_mmno es0conremove_baseestablecido entrue, o es menor que0.1sin él. - URL inaccesible: Meshy no puede descargar la imagen de
image_url, por ejemplo porque la URL devuelve404o agota el tiempo de espera. - Imagen inválida: la imagen no es un archivo JPG, JPEG, PNG o WebP, supera los 20 MB, es más pequeña que 32 × 32 píxeles, tiene demasiados píxeles o no se puede leer.
- Relación de aspecto extrema: el lado más largo de la imagen es más de unas 16 veces su lado más corto.
Corrige la solicitud y envíala de nuevo. Meshy no cobra por ello. Consulta Errores.
- Parámetro faltante: no se envió
- Name
401 - Unauthorized- Description
Falta la clave de API o es inválida. Revisa el encabezado
Authorization.
- Name
402 - Payment Required- Description
Por ejemplo:
- Créditos insuficientes: la cuenta no tiene suficientes créditos para esta tarea, o la cuenta alcanzó un límite de créditos. Revisa tu saldo de créditos y vuelve a intentarlo.
- Plan gratuito: crear una tarea requiere un plan de pago. Actualiza tu plan en la configuración de tu suscripción, luego vuelve a intentarlo.
- Name
403 - Forbidden- Description
La moderation de contenido bloqueó la imagen. Meshy no cobra por la solicitud. Envía una imagen diferente.
- Name
429 - Too Many Requests- Description
Se alcanzó uno de estos límites:
- Enviaste demasiadas solicitudes. Espera y vuelve a intentarlo. Consulta Límites de velocidad.
- Hay demasiadas tareas tuyas en cola o en ejecución. Espera a que algunas terminen y vuelve a intentarlo.
- En un plan ilimitado sin créditos disponibles, alcanzaste el número de tareas que pueden ejecutarse sin créditos. Espera a que termine una tarea, o agrega créditos.
Si una verificación de seguridad rechaza la imagen mientras la tarea se ejecuta, la tarea falla con task_error.type establecido en invalid_input y task_error.code establecido en provider_content_refused. Meshy reembolsa los créditos de la tarea. Envía una imagen diferente. Consulta Errores.
Obtener una tarea de Relieve
Devuelve una tarea de Relieve por su 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
El ID de la tarea proveniente de la respuesta de creación.
Devuelve
Eliminar una tarea de Relieve
Elimina permanentemente una tarea de Relieve, incluyendo su modelo, mapa de profundidad y datos. No puedes deshacer una eliminación.
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 ruta
- Name
- id
- Type
- path
- Description
El ID de la tarea a eliminar.
Estado de la tarea
Eliminar una tarea PENDING reembolsa los créditos que usó cuando la creaste.
Una tarea IN_PROGRESS no se puede eliminar. La solicitud devuelve 409 Conflict,
y la tarea sigue ejecutándose. Meshy no reembolsa una tarea que ya ha comenzado,
así que eliminarla te costaría tanto los créditos como el resultado. Espera a que
llegue a SUCCEEDED o FAILED, y luego elimínala.
Eliminar una tarea SUCCEEDED no reembolsa sus créditos. Una tarea FAILED ya fue reembolsada cuando falló.
Devuelve
200 OK cuando la tarea se elimina, o 409 Conflict cuando la tarea está
IN_PROGRESS.
Listar tareas de Relieve
Devuelve una lista de tus tareas de Relieve.
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
El número de página a devolver. Comienza en
1y ese es el valor predeterminado.
- Name
- page_size
- Type
- integer
- Description
El número de tareas por página, hasta
100. El valor predeterminado es10. Meshy trata un valor de101a255como100, y un valor mayor devuelve400.
- Name
- sort_by
- Type
- string
- Description
El orden de clasificación.
Valores disponibles:
+created_at: las más antiguas primero-created_at: las más recientes primero
Devuelve
Una lista paginada de objetos de tarea de Relieve.
Transmitir una tarea de Relieve en streaming
Transmite las actualizaciones de una tarea de Relieve como eventos enviados por el servidor (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
El ID de la tarea proporcionado en la respuesta de creación.
Devuelve
Un flujo de objetos de tarea de Relieve como eventos enviados por el servidor.
Cada evento message contiene el objeto de tarea completo, el mismo que devuelve Obtener una tarea de Relieve. Mientras la tarea esté en PENDING o IN_PROGRESS, los campos que cambian entre eventos son progress, status, started_at y preceding_tasks (presente solo mientras haya tareas por delante de esta). model_urls, depth_map_url y thumbnail_url obtienen sus valores cuando la tarea llega a SUCCEEDED. Una tarea de solo mapa de profundidad mantiene model_urls como {} y un thumbnail_url vacío.
Un evento error contiene solo status_code y message, así que comprueba el nombre del evento antes de leer status.
El objeto de tarea Relieve
Un objeto de tarea Relieve describe un relieve hecho a partir de una foto. model_urls, depth_map_url y thumbnail_url siempre están presentes, y vacíos hasta que la tarea tiene éxito.
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
El ID de la tarea. Trátelo como una cadena opaca y no confíe en su formato.
- Name
- type
- Type
- string
- Description
El tipo de tarea, siempre
relief.
- Name
- model_urls
- Type
- object
- Description
URLs de descarga para el modelo de relieve. Los archivos pueden ser grandes;
mesh_resolutionenumera los tamaños típicos.- Name
glb- Type
- string
- Description
El archivo GLB, sin textura. Sus unidades son metros. Ausente para una tarea de solo mapa de profundidad.
- Name
stl- Type
- string
- Description
El mismo modelo como un archivo STL binario. Sus unidades son milímetros, por lo que se abre al tamaño real del relieve, con Z hacia arriba. Ausente para una tarea de solo mapa de profundidad.
- Name
- depth_map_url
- Type
- string
- Description
URL de descarga para el mapa de profundidad en escala de grises de 16 bits a partir del cual se construye el relieve. Los píxeles más brillantes son más altos. Los valores son alturas relativas, no milímetros. El software de grabado láser y CNC puede usarlo como un mapa de altura. El archivo pesa entre 1 y 2 MB aproximadamente. Vacío si no hay ninguno.
- Name
- thumbnail_url
- Type
- string
- Description
URL de descarga para una imagen de vista previa del modelo de relieve. Vacío si no se renderizó ninguna, incluso para una tarea de solo mapa de profundidad.
- Name
- progress
- Type
- integer
- Description
Cuánto se ha completado de la tarea, como un porcentaje. Es
0hasta que la tarea comienza y100cuando tiene éxito.
- Name
- status
- Type
- string
- Description
El estado de la tarea, uno de
PENDING,IN_PROGRESS,SUCCEEDEDoFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
El número de tareas por delante de esta en la cola. El campo se omite cuando el valor es
0, por lo que aparece solo mientras hay tareas por delante de esta.
- Name
- created_at
- Type
- timestamp
- Description
Hora en que se creó la tarea, en milisegundos Unix.
- Name
- started_at
- Type
- timestamp
- Description
Hora en que comenzó la tarea, en milisegundos Unix. Es
0hasta que la tarea comienza.
- Name
- finished_at
- Type
- timestamp
- Description
Hora en que finalizó la tarea, en milisegundos Unix. Es
0hasta que la tarea finaliza.
- Name
- expires_at
- Type
- timestamp
- Description
Hora en que expira el resultado de la tarea, en milisegundos Unix. Es
0hasta que la tarea finaliza.
- Name
- task_error
- Type
- object
- Description
Los detalles del error cuando la tarea falla. Consulte Errores.
- Name
- consumed_credits
- Type
- integer
- Description
El número de créditos que usó la tarea:
20, o0para una tareaFAILED, que Meshy reembolsa.