API de Remallado

La API de Remallado le permite realizar el remallado y exportar modelos 3D existentes generados por otras API de Meshy (como Imagen a 3D o Texto a 3D) a varios formatos. Esta sección proporciona detalles sobre cómo usar la API de Remallado.


POST/openapi/v1/remesh

Crear una tarea de Remallado

Este endpoint crea una nueva tarea de remallado.

Parámetros

  • Name
    input_task_id
    Type
    string
    Requerido
    Description

    El ID de la tarea completada de Imagen a 3D o Texto a 3D que deseas remallar. Esta tarea debe ser una de las siguientes: Text to 3D Preview, Text to 3D Refine, Imagen a 3D o Retexturizar. Además, debe tener un estado SUCCEEDED.

  • Name
    model_url
    Type
    string
    Requerido
    Description

    Proporciona un modelo 3D para que Meshy lo remalle mediante una URL de acceso público o un data URI. Formatos admitidos: .glb, .gltf, .obj, .fbx, .stl.

    Para Data URIs, usa el MIME type: application/octet-stream.

  • Name
    target_formats
    Type
    string[]
    predeterminado ["glb"]
    Description

    Una lista de formatos de destino para el modelo remallado. Si se omite, solo se genera GLB.

    Valores disponibles: glb, fbx, obj, usdz, blend, stl, 3mf.

  • Name
    topology
    Type
    string
    predeterminado triangle
    Description

    Especifica la topology del modelo generado.

    Valores disponibles:

    • quad: Genera una malla predominantemente cuádruple.
    • triangle: Genera una malla de triángulos decimada.
  • Name
    target_polycount
    Type
    integer
    predeterminado 30,000
    Description

    Especifica el número objetivo de polígonos en el modelo generado. El número real de polígonos puede variar respecto al objetivo según la complejidad de la geometría.

    El rango de valores válido varía según el nivel de usuario:

    • de 100 a 300,000 (inclusive)
  • Name
    decimation_mode
    Type
    integer
    Description

    Habilita la decimación adaptativa configurando un nivel de recuento de polígonos. Cuando se establece, target_polycount se ignora.

    Valores disponibles:

    • 1: Adaptativo — recuento de polígonos ultra.
    • 2: Adaptativo — recuento de polígonos alto.
    • 3: Adaptativo — recuento de polígonos medio.
    • 4: Adaptativo — recuento de polígonos bajo.
  • Name
    resize_height
    Type
    number
    obsoleto
    predeterminado 0
    Description

    Redimensiona el modelo a una altura determinada medida en metros. Recomendamos usar la API de Redimensionar dedicada en su lugar.

  • Name
    resize_longest_side
    Type
    number
    obsoleto
    predeterminado 0
    Description

    Redimensiona el modelo de modo que la dimensión más larga de su bounding box sea igual al valor especificado en metros. Recomendamos usar la API de Redimensionar dedicada en su lugar.

  • Name
    auto_size
    Type
    boolean
    obsoleto
    predeterminado false
    Description

    Cuando se establece en true, el servicio utiliza visión artificial para estimar automáticamente la altura real del objeto en el mundo real y redimensionar el modelo en consecuencia. Recomendamos usar la API de Redimensionar dedicada en su lugar.

Solo aplica cuando auto_size = true
  • Name
    origin_at
    Type
    string
    obsoleto
    predeterminado bottom
    Description

    Posición del origen. Recomendamos usar la API de Redimensionar dedicada en su lugar.

    Valores disponibles: bottom, center.

  • Name
    convert_format_only
    Type
    boolean
    obsoleto
    Description

    Si es true, el servicio solo cambiará el formato del archivo del modelo de entrada, ignorando otras entradas como topology, resize_height y target_polycount. Recomendamos usar la API de Convertir dedicada en su lugar.

  • Name
    alpha_thumbnail
    Type
    boolean
    predeterminado false
    Description

    Cuando se establece en true, la tarea además renderiza una versión con fondo transparente (RGBA) de la vista previa y la devuelve como alpha_thumbnail_url en la respuesta GET. El campo thumbnail_url existente no se modifica.

Devuelve

La propiedad result de la respuesta contiene el id de la tarea de remallado recién creada.

Modos de fallo

  • Name
    400 - Bad Request
    Description

    La solicitud fue inaceptable. Causas comunes:

    • Parámetro faltante: Debe proporcionarse model_url o input_task_id.
    • Tarea de entrada inválida: input_task_id debe hacer referencia a una tarea exitosa de un modelo compatible.
    • Formato de modelo inválido: model_url apunta a un archivo con una extensión no compatible.
    • URL inaccesible: No se pudo descargar model_url.
    • Topology inválida: El parámetro topology no es válido.
    • Parámetros mutuamente excluyentes: auto_size y resize_height no pueden establecerse ambos.
  • Name
    401 - Unauthorized
    Description

    Falló la autenticación. Por favor, verifica tu clave de API.

  • Name
    402 - Payment Required
    Description

    Créditos insuficientes para realizar esta tarea.

  • Name
    429 - Too Many Requests
    Description

    Has superado tu límite de tasa.

Request

POST
/openapi/v1/remesh
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "target_formats": ["glb", "fbx"],
    "topology": "quad",
    "target_polycount": 50000,
    "resize_height": 1.0,
    "origin_at": "bottom"
  }'

# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "target_formats": ["glb", "fbx"],
    "topology": "quad",
    "target_polycount": 50000,
    "auto_size": true
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/remesh/:id

Recuperar una tarea de remallado

Este endpoint recupera una tarea de remallado mediante su ID.

Parámetros

  • Name
    id
    Type
    path
    Description

    El ID de la tarea de remallado a recuperar.

Devuelve

El objeto de la tarea de Remallado.

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
}

DELETE/openapi/v1/remesh/:id

Eliminar una tarea de Remallado

Este endpoint elimina permanentemente una tarea de remallado, incluyendo todos los modelos y datos asociados. Esta acción es irreversible.

Parámetros de ruta

  • Name
    id
    Type
    path
    Description

    El ID de la tarea de remallado a eliminar.

Estado de la tarea

Una tarea que aún está en PENDING se elimina y los créditos consumidos en el momento de su creación son reembolsados.

Una tarea que ya está IN_PROGRESS no puede eliminarse: la solicitud es rechazada con 409 Conflict y la tarea sigue ejecutándose. Los créditos de una tarea que el worker ya ha comenzado a procesar no son reembolsables, por lo que eliminarla en pleno proceso te costaría tanto los créditos como el resultado. Espera a que llegue a SUCCEEDED, FAILED o CANCELED, y luego elimínala.

Una tarea en un estado terminal (SUCCEEDED, FAILED o CANCELED) se elimina sin reembolso.

Devuelve

Devuelve 200 OK en caso de éxito, o 409 Conflict cuando la tarea está en estado IN_PROGRESS.

Request

DELETE
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
  -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 is left 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."
}

GET/openapi/v1/remesh

Listar tareas de remallado

Este endpoint le permite recuperar una lista de tareas de remallado.

Parámetros

  • Name
    page_num
    Type
    integer
    predeterminado 1
    Description

    Número de página para la paginación.

  • Name
    page_size
    Type
    integer
    predeterminado 10
    Description

    Límite del tamaño de página. El máximo permitido es 100 elementos.

  • Name
    sort_by
    Type
    string
    Description

    Campo por el cual ordenar.

    Valores disponibles:

    • +created_at: Ordenar por hora de creación en orden ascendente.
    • -created_at: Ordenar por hora de creación en orden descendente.

Devuelve

Devuelve una lista paginada de Los objetos de tarea de remallado.

Request

GET
/openapi/v1/remesh
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "remesh",
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
    },
    "progress": 100,
    "status": "SUCCEEDED",
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "task_error": null
  }
]

GET/openapi/v1/remesh/:id/stream

Transmitir una tarea de Remallado

Este endpoint transmite actualizaciones en tiempo real para una tarea de Remallado utilizando Server-Sent Events (SSE).

Parámetros

  • Name
    id
    Type
    path
    Description

    Identificador único de la tarea de Remallado que se desea transmitir.

Devuelve

Devuelve un flujo de objetos de tarea de Remallado como Server-Sent Events.

Para tareas en estado PENDING o IN_PROGRESS, el flujo de respuesta solo incluirá los campos necesarios progress y status.

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/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.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
    "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
    "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
}

El objeto Remesh Task

El objeto Remesh Task representa una unidad de trabajo que Meshy utiliza para remallar y exportar un modelo 3D existente a varios formatos. El objeto tiene las siguientes propiedades:

Propiedades

  • Name
    id
    Type
    string
    Description

    Identificador único de la tarea. Aunque usamos un UUID k-sortable para los ids de tareas como detalle de implementación, no debes hacer suposiciones sobre el formato del id.

  • Name
    type
    Type
    string
    Description

    Tipo de la tarea de Remallado. El valor es remesh.

  • Name
    model_urls
    Type
    object
    Description

    URL descargable del archivo del modelo 3D con textura generado por Meshy. La propiedad de un formato se omitirá si dicho formato no se generó, en lugar de devolver una cadena vacía.

    • Name
      glb
      Type
      string
      Description

      URL descargable del archivo GLB.

    • Name
      fbx
      Type
      string
      Description

      URL descargable del archivo FBX.

    • Name
      obj
      Type
      string
      Description

      URL descargable del archivo OBJ.

    • Name
      usdz
      Type
      string
      Description

      URL descargable del archivo USDZ.

    • Name
      blend
      Type
      string
      Description

      URL descargable del archivo de Blender.

    • Name
      stl
      Type
      string
      Description

      URL descargable del archivo STL.

    • Name
      3mf
      Type
      string
      Description

      URL descargable del archivo 3MF. Solo está presente cuando se solicitó 3mf mediante target_formats.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL descargable de una imagen de vista previa renderizada a partir del modelo remallado.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    URL descargable de una versión con fondo transparente (RGBA) de thumbnail_url. Solo está presente cuando la tarea se creó con alpha_thumbnail: true y la vista previa transparente se renderizó correctamente; de lo contrario, este campo se omite.

  • Name
    progress
    Type
    integer
    Description

    Progreso de la tarea. Si la tarea aún no ha comenzado, esta propiedad será 0. Una vez que la tarea se haya completado con éxito, será 100.

  • Name
    status
    Type
    string
    Description

    Estado de la tarea. Los valores posibles son uno de PENDING, IN_PROGRESS, SUCCEEDED, FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    La cantidad de tareas precedentes.

  • Name
    created_at
    Type
    timestamp
    Description

    Marca de tiempo de cuándo se creó la tarea, en milisegundos.

  • Name
    started_at
    Type
    timestamp
    Description

    Marca de tiempo de cuándo se inició la tarea, en milisegundos. Si la tarea aún no se ha iniciado, esta propiedad será 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Marca de tiempo de cuándo finalizó la tarea, en milisegundos. Si la tarea aún no ha finalizado, esta propiedad será 0.

  • Name
    task_error
    Type
    object
    Description

    Detalles del error para tareas fallidas. Consulta Errores para ver la referencia completa del objeto task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    El número de créditos consumidos por esta tarea. Presente cuando el estado de la tarea es PENDING, IN_PROGRESS, o SUCCEEDED. Devuelve 0 para tareas FAILED (los créditos se reembolsan en caso de fallo).

Example Remesh Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 5
}