API de Remallado
La API de Remallado te permite remallar y exportar modelos 3D existentes generados por otras APIs de Meshy (como Imagen a 3D o Texto a 3D) en varios formatos. Esta sección proporciona detalles sobre cómo usar la API de Remallado.
Crear una Tarea de Remallado
Este endpoint crea una nueva tarea de remallado.
Para la conversión de formatos y el redimensionamiento, use el API de Conversión y el API de Redimensionamiento dedicados. Los parámetros obsoletos a continuación seguirán funcionando, pero recomendamos los nuevos endpoints para nuevas integraciones.
Parámetros
Solo uno de input_task_id o model_url es requerido. Si se proporcionan ambos, input_task_id tiene prioridad.
- Name
- input_task_id
- Type
- string
- Requerido
- Description
El ID de la tarea completada de Imagen a 3D o Texto a 3D que desea remallar. Esta tarea debe ser una de las siguientes: Vista previa de Texto a 3D, Refinar Texto a 3D, Imagen a 3D o Retexturizar. Además, debe tener un estado de
SUCCEEDED.
- Name
- model_url
- Type
- string
- Requerido
- Description
Proporcione un modelo 3D para que Meshy lo remalle a través de una URL accesible públicamente o un Data URI. Formatos soportados:
.glb,.gltf,.obj,.fbx,.stl.Para Data URIs, use el MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- predeterminado ["glb"]
- Description
Una lista de formatos objetivo 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
Especifique la topology del modelo generado.
Valores disponibles:
quad: Generar una malla dominante de quads.triangle: Generar una malla de triángulos decimada.
- Name
- target_polycount
- Type
- integer
- predeterminado 30,000
- Description
Especifique el número objetivo de polígonos en el modelo generado. El número real de polígonos puede desviarse del objetivo dependiendo de la complejidad de la geometría.
El rango de valores válidos varía dependiendo del nivel de usuario:
- 100 a 300,000 (inclusive)
- Name
- decimation_mode
- Type
- integer
- Description
Habilite la decimación adaptativa estableciendo un nivel de recuento de polígonos. Cuando se establece, se ignora
target_polycount.Valores disponibles:
1: Adaptativo — ultra recuento de polígonos.2: Adaptativo — alto recuento de polígonos.3: Adaptativo — medio recuento de polígonos.4: Adaptativo — bajo recuento de polígonos.
- Name
- resize_height
- Type
- number
- ⚠ obsoleto
- predeterminado 0
- Description
Redimensionar el modelo a una cierta altura medida en metros. Recomendamos usar el API de Redimensionamiento dedicado en su lugar.
auto_size,resize_heightyresize_longest_sideson mutuamente excluyentes.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsoleto
- predeterminado 0
- Description
Redimensionar el modelo para que la dimensión más larga de la caja delimitadora sea igual al valor especificado en metros. Recomendamos usar el API de Redimensionamiento dedicado en su lugar.
auto_size,resize_heightyresize_longest_sideson mutuamente excluyentes.
- Name
- auto_size
- Type
- boolean
- ⚠ obsoleto
- predeterminado false
- Description
Cuando se establece en
true, el servicio utiliza visión AI para estimar automáticamente la altura real del objeto y redimensionar el modelo en consecuencia. Recomendamos usar el API de Redimensionamiento dedicado en su lugar.auto_size,resize_heightyresize_longest_sideson mutuamente excluyentes.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ obsoleto
- predeterminado bottom
- Description
Posición del origen. Recomendamos usar el API de Redimensionamiento dedicado en su lugar.
Valores disponibles:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsoleto
- Description
Si
true, el servicio solo cambiará el formato del archivo del modelo de entrada, ignorando otras entradas comotopology,resize_heightytarget_polycount. Recomendamos usar el API de Conversión dedicado en su lugar.target_formatsdebe proporcionarse siconvert_format_onlyestá establecido entrue.
- Name
- alpha_thumbnail
- Type
- boolean
- predeterminado false
- Description
Cuando se establece en
true, la tarea además renderiza una versión de fondo transparente (RGBA) de la vista previa y la devuelve comoalpha_thumbnail_urlen la respuesta GET. El campothumbnail_urlexistente no se modifica.
Retornos
La propiedad result de la respuesta contiene el id de la nueva tarea de remallado creada.
Modos de Falla
- Name
400 - Bad Request- Description
La solicitud no fue aceptable. Causas comunes:
- Parámetro faltante: Se debe proporcionar
model_urloinput_task_id. - Tarea de entrada inválida: El
input_task_iddebe referirse a una tarea exitosa de un modelo soportado. - Formato de modelo inválido: El
model_urlapunta a un archivo con una extensión no soportada. - URL inalcanzable: No se pudo descargar el
model_url. - Topology inválida: El parámetro
topologyes inválido. - Parámetros mutuamente excluyentes:
auto_sizeyresize_heightno pueden establecerse ambos.
- Parámetro faltante: Se debe proporcionar
- Name
401 - Unauthorized- Description
La autenticación falló. Por favor, verifique su clave de API.
- Name
402 - Payment Required- Description
Créditos insuficientes para realizar esta tarea.
- Name
429 - Too Many Requests- Description
Ha excedido su límite de tasa.
Request
# 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"
}
Recuperar una Tarea de Remallado
Este endpoint recupera una tarea de remallado por 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
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,
}
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.
Retornos
Devuelve 200 OK en caso de éxito.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Listar Tareas de Remallado
Este endpoint te 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 de
50elementos.
- Name
- sort_by
- Type
- string
- Description
Campo por el cual ordenar.
Valores disponibles:
+created_at: Ordenar por tiempo de creación en orden ascendente.-created_at: Ordenar por tiempo de creación en orden descendente.
Retornos
Devuelve una lista paginada de Los Objetos de Tarea de Remallado.
Solicitud
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Respuesta
[
{
"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
}
]
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 para la tarea de Remallado a transmitir.
Retornos
Devuelve un flujo de Los Objetos de la Tarea de Remallado como Server-Sent Events.
Para tareas PENDING o IN_PROGRESS, el flujo de respuesta solo incluirá los campos necesarios de progress y status.
Request
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 de Tarea de Remallado
El objeto de Tarea de Remallado 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 para la tarea. Aunque utilizamos un UUID ordenable por k para los ids de tarea 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 texturizado generado por Meshy. La propiedad para un formato se omitirá si el formato no se genera 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 presente cuando
3mffue solicitado a través detarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
URL descargable de una imagen de vista previa renderizada del modelo remallado.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL descargable de una versión con fondo transparente (RGBA) de
thumbnail_url. Solo presente cuando la tarea fue creada conalpha_thumbnail: truey la vista previa transparente fue renderizada exitosamente; 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 haya tenido éxito, esto se convertirá en100.
- 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
El conteo de tareas precedentes.
El valor de este campo es significativo solo si el estado de la tarea es
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Marca de tiempo de cuando la tarea fue creada, en milisegundos.
- Name
- started_at
- Type
- timestamp
- Description
Marca de tiempo de cuando la tarea fue iniciada, en milisegundos. Si la tarea aún no ha comenzado, esta propiedad será
0.
- Name
- finished_at
- Type
- timestamp
- Description
Marca de tiempo de cuando la tarea fue finalizada, 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 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, oSUCCEEDED. Devuelve0para tareasFAILED(los créditos son reembolsados en caso de fallo).
Ejemplo de Objeto de Tarea de Remallado
{
"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
}