API de Remallado
Reconstruye la malla de un modelo 3D con una nueva topology y un nuevo número de caras, y expórtala en los formatos que elijas. El modelo puede provenir de otra tarea de Meshy, como Imagen a 3D o Texto a 3D, o de un archivo de modelo.
Crear una tarea de Remallado
Crea una tarea de Remallado. La tarea se ejecuta en segundo plano. Para saber cuánto suele tardar una tarea, consulta Tiempos de procesamiento.
Para convertir el formato de un modelo o redimensionarlo, usa la API de Convertir o la API de Redimensionar. Los parámetros obsoletos de esta página siguen funcionando, pero las integraciones nuevas deben usar esos endpoints.
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"
}
Parámetros
- Name
- input_task_id
- Type
- string
- Requerido
- Description
Obligatorio a menos que envíes
model_url. El ID de la tarea cuyo modelo quieres remallar, por ejemplo una tarea de Texto a 3D, Imagen a 3D, Retexturizar o Remallado. La tarea debe ser una que hayas creado con la API y tener el estadoSUCCEEDED.
- Name
- model_url
- Type
- string
- Requerido
- Description
Obligatorio a menos que envíes
input_task_id. El modelo a remallar, como una URL pública o un data URI. Si envías ambos, Meshy usainput_task_id.El modelo debe ser un archivo GLB, glTF, OBJ, FBX o STL de como máximo 400 MB desde una URL
httpohttps, o de 100 MB como data URI. Para un data URI, usa el MIME typeapplication/octet-stream.Un archivo de más de 100 MB también debe cumplir estas reglas:
- Un archivo GLB, glTF, FBX u OBJ puede tener como máximo 10,000,000 de caras. Meshy cuenta las caras como triángulos, así que un cuadrilátero cuenta como 2, y una malla dibujada más de una vez cuenta una vez por copia.
- Un archivo FBX debe ser FBX binario 7.1 o posterior.
- Un archivo GLB o glTF no debe usar compresión Draco.
- Name
- target_formats
- Type
- string[]
- predeterminado ["glb"]
- Description
Los formatos de archivo a generar.
Valores disponibles:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- predeterminado triangle
- Description
El tipo de cara del modelo remallado.
Valores disponibles:
quad: una malla predominantemente de cuadriláterostriangle: una malla de triángulos diezmada
- Name
- target_polycount
- Type
- integer
- predeterminado 30000
- Description
El número de caras a alcanzar, de
100a300000. El resultado puede diferir del objetivo, según la geometría del modelo. Un valor fuera del rango devuelve400.
- Name
- decimation_mode
- Type
- integer
- Description
Número de caras adaptativo, por nivel. Cuando lo configuras, Meshy ignora
target_polycount.Valores disponibles:
1: ultra2: alto3: medio4: bajo
- Name
- resize_height
- Type
- number
- ⚠ obsoleto
- predeterminado 0
- Description
Usa la API de Redimensionar en su lugar. La altura a la que redimensionar el modelo, en metros. Envía como máximo uno de
resize_height,resize_longest_sideyauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsoleto
- predeterminado 0
- Description
Usa la API de Redimensionar en su lugar. La longitud a la que redimensionar el lado más largo de la caja delimitadora del modelo, en metros. Envía como máximo uno de
resize_height,resize_longest_sideyauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ obsoleto
- predeterminado false
- Description
Usa la API de Redimensionar en su lugar. Si se debe estimar la altura real del objeto con visión de IA y redimensionar el modelo a ella. Envía como máximo uno de
resize_height,resize_longest_sideyauto_size.
- Name
- origin_at
- Type
- string
- ⚠ obsoleto
- predeterminado bottom
- Description
Usa la API de Redimensionar en su lugar. Dónde colocar el origen del modelo,
bottomocenter. El valor predeterminado se aplica cuando envíasresize_height,resize_longest_sideoauto_size. Sin ninguno de ellos, Meshy mueve el origen solo si envíasorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsoleto
- Description
Usa la API de Convertir en su lugar. Si se debe solo convertir el modelo a
target_formats. Cuando estrue, Meshy ignoratopology,target_polycount,decimation_mode,resize_height,resize_longest_sideyauto_size, pero aún verifica sus valores, por lo que un valor inválido devuelve400. Conconvert_format_only: true, untarget_formatsvacío onulldevuelve400.
- Name
- alpha_thumbnail
- Type
- boolean
- predeterminado false
- Description
Si se debe renderizar también una vista previa con fondo transparente (RGBA), devuelta en
alpha_thumbnail_urlcuando obtienes la tarea.thumbnail_urlno cambia.
Devuelve
El campo result de la respuesta contiene el ID de la nueva tarea de Remallado.
Modos de fallo
- Name
400 - Bad Request- Description
La solicitud no puede ejecutarse. El mensaje de error indica qué problema encontró. Por ejemplo:
- Falta un parámetro: No se envió ni
model_urlniinput_task_id. - Tarea de entrada inválida:
input_task_idno es una tarea de API exitosa, o su modelo de IA no admite remallado. - Formato de modelo inválido: El archivo de
model_urltiene una extensión no compatible. - URL inaccesible: Meshy no puede descargar el archivo de
model_url. - Archivo de modelo demasiado grande: El archivo de
model_urlsupera los 400 MB desde una URLhttpohttps, o los 100 MB como data URI. - Demasiadas caras: El archivo de
model_urlsupera los 100 MB y tiene más de 10,000,000 de caras. Reduce el número de caras y vuelve a enviar el archivo. - FBX ASCII de más de 100 MB: El archivo de
model_urles un FBX ASCII de más de 100 MB. Envíalo como FBX binario o GLB. - Archivo de modelo ilegible: El archivo de
model_urlsupera los 100 MB, y Meshy no puede leer su encabezado. Por ejemplo, es un GLB o glTF comprimido con Draco, o un FBX binario anterior a 7.1. - Encabezado del modelo demasiado complejo: El archivo de
model_urlsupera los 100 MB, y su encabezado tiene demasiadas mallas, nodos o registros para verificar. Reduce el número de objetos en el archivo y vuelve a enviarlo. - Topología inválida:
topologyno esquadnitriangle. - Parámetros mutuamente excluyentes: La solicitud tiene más de uno de
auto_size,resize_heightyresize_longest_side. Envía solo uno.
Corrige la solicitud y vuelve a enviarla. Consulta Errores.
- Falta un parámetro: No se envió ni
- 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. Mejora tu plan en la configuración de tu suscripción y vuelve a intentarlo.
- Name
403 - Forbidden- Description
input_task_ides un modelo de bajorrelieve, que este endpoint no puede remallar. El mensaje esThis model type does not support this operation. Envía un modelo diferente.
- Name
404 - Not Found- Description
input_task_idno coincide con ninguna de tus tareas. Revisa el ID de la tarea y vuelve a enviar la solicitud.
- Name
429 - Too Many Requests- Description
Superaste tu límite de tasa. Espera y vuelve a intentarlo. Consulta Límites de tasa.
Obtener una tarea de Remallado
Devuelve una tarea de Remallado por su ID.
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,
}
Parámetros
- Name
- id
- Type
- path
- Description
El ID de la tarea proveniente de la respuesta de creación.
Devuelve
Eliminar una tarea de Remallado
Elimina permanentemente una tarea de Remallado, incluidos sus modelos y datos. No puedes deshacer una eliminación.
Request
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 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
alcance SUCCEEDED, FAILED o CANCELED, y luego elimínala.
Eliminar una tarea en un estado final (SUCCEEDED, FAILED o CANCELED)
no reembolsa sus créditos.
Devuelve
200 OK cuando la tarea se elimina, o 409 Conflict cuando la tarea está
IN_PROGRESS.
Listar tareas de Remallado
Devuelve una lista de tus tareas de Remallado.
Request
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
}
]
Parámetros
- Name
- page_num
- Type
- integer
- predeterminado 1
- Description
El número de página a devolver.
- Name
- page_size
- Type
- integer
- predeterminado 10
- Description
El número de tareas por página, hasta
100.
- Name
- sort_by
- Type
- string
- Description
El orden de clasificación.
Valores disponibles:
+created_at: el más antiguo primero-created_at: el más reciente primero
Devuelve
Una lista paginada de objetos de tarea de Remallado.
Transmitir una tarea de Remallado en streaming
Transmite las actualizaciones de una tarea de Remallado como Server-Sent Events (SSE).
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.
// These examples are shortened. Each event holds the full task object.
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,
}
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 Remallado como Server-Sent Events.
Cada evento contiene el objeto de tarea completo, con la misma forma que devuelve el endpoint Get. Mientras la tarea esté en PENDING o IN_PROGRESS, sus campos de resultado aún no tienen valores.
El objeto de tarea de Remallado
Un objeto de tarea de Remallado describe un remallado de un modelo 3D. Contiene el estado, el progress y los archivos del modelo cuando la tarea tiene éxito.
Propiedades
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
}
- Name
- id
- Type
- string
- Description
El ID de la tarea. Trátelo como una cadena opaca y no dependa de su formato.
- Name
- type
- Type
- string
- Description
El tipo de tarea, siempre
remesh.
- Name
- model_urls
- Type
- object
- Description
URLs de descarga para el modelo remallado, una por cada formato de archivo. Un formato que la tarea no generó no tiene clave, en lugar de una cadena vacía.
- Name
glb- Type
- string
- Description
El archivo GLB.
- Name
fbx- Type
- string
- Description
El archivo FBX.
- Name
obj- Type
- string
- Description
El archivo OBJ.
- Name
usdz- Type
- string
- Description
El archivo USDZ.
- Name
blend- Type
- string
- Description
El archivo de Blender.
- Name
stl- Type
- string
- Description
El archivo STL.
- Name
3mf- Type
- string
- Description
El archivo 3MF. Presente solo cuando
target_formatsincluye3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL de descarga para una imagen de vista previa del modelo remallado.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL de descarga para una versión de
thumbnail_urlcon fondo transparente (RGBA). Presente solo cuando creó la tarea conalpha_thumbnail: truey Meshy renderizó la vista previa transparente.
- Name
- progress
- Type
- integer
- Description
Cuánto de la tarea está completado, 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 valor solo es significativo mientras la tarea está en
PENDING.
- 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
- 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. Presente cuando el estado es
PENDING,IN_PROGRESSoSUCCEEDED. Es0para una tareaFAILED, porque Meshy reembolsa los créditos cuando una tarea falla.