lowpoly se retira el 30 oct 2026. Cambia de modelo antes de estas fechas para evitar errores en las solicitudes. Ver todas las obsolescencias

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.


POST/openapi/v1/relief

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

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
    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 null o "" es lo mismo que omitirlo. Cualquier otro valor devuelve 400.

  • Name
    should_generate_model
    Type
    boolean
    predeterminado true
    Description

    Indica si se debe construir el modelo de relieve. Establécelo en false para 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 20 a 250 milímetros. Con remove_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 0 a 60 milímetros. Con remove_base establecido en true, 0 deja 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_threshold establece qué se considera fondo. Meshy comprueba removal_threshold en ambos casos.

Solo aplica cuando 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.01 a 1, donde el mapa de profundidad va de 0 a 1. 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.1 a 10 milímetros. Cuando remove_base es true, omítelo o envía 0.

  • 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_axis y bend_angle definen 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.
Solo aplica cuando 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 0 a 360 grados. Por debajo de 1, 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 512 a 2048. Un valor más alto conserva detalles más finos y genera archivos más grandes. Con el valor predeterminado de 1024, 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. A 2048, tienen aproximadamente 150 MB y 300 MB. Una curvatura los hace más grandes: el archivo STL puede alcanzar aproximadamente 800 MB a 2048.

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, variant no es high ni low, o mesh_resolution no es un entero de 512 a 2048.
    • Grosor de base: base_thickness_mm no es 0 con remove_base establecido en true, o es menor que 0.1 sin él.
    • URL inaccesible: Meshy no puede descargar la imagen de image_url, por ejemplo porque la URL devuelve 404 o 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.

  • 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.


GET/openapi/v1/relief/:id

Obtener una tarea de Relieve

Devuelve una tarea de Relieve por su 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

    El ID de la tarea proveniente de la respuesta de creación.

Devuelve

El objeto de tarea de Relieve.


DELETE/openapi/v1/relief/:id

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

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 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.


GET/openapi/v1/relief

Listar tareas de Relieve

Devuelve una lista de tus tareas de Relieve.

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

    El número de página a devolver. Comienza en 1 y ese es el valor predeterminado.

  • Name
    page_size
    Type
    integer
    Description

    El número de tareas por página, hasta 100. El valor predeterminado es 10. Meshy trata un valor de 101 a 255 como 100, y un valor mayor devuelve 400.

  • 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.


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

Transmitir una tarea de Relieve en streaming

Transmite las actualizaciones de una tarea de Relieve como eventos enviados por el servidor (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

    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_resolution enumera 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 0 hasta que la tarea comienza y 100 cuando tiene éxito.

  • Name
    status
    Type
    string
    Description

    El estado de la tarea, uno de PENDING, IN_PROGRESS, SUCCEEDED o FAILED.

  • 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 0 hasta que la tarea comienza.

  • Name
    finished_at
    Type
    timestamp
    Description

    Hora en que finalizó la tarea, en milisegundos Unix. Es 0 hasta que la tarea finaliza.

  • Name
    expires_at
    Type
    timestamp
    Description

    Hora en que expira el resultado de la tarea, en milisegundos Unix. Es 0 hasta 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, o 0 para una tarea FAILED, que Meshy reembolsa.