API de Auto Split
Divide un modelo 3D en piezas que se pueden imprimir por separado — automáticamente, según las piezas que nombres, o por región de color — con conectores opcionales; las regiones delgadas que deja un corte siempre se refuerzan para que cada pieza se imprima sólida.
Auto Split actualmente solo admite modelos sin textura. Para Imagen a 3D y Multi-imagen a 3D, genera la entrada con should_texture configurado en false. Una entrada con textura se rechaza con 400. La compatibilidad con texturas está en progreso.
Crear una tarea de Auto Split
Este endpoint crea una nueva tarea de Auto Split. La tarea corta el modelo de una tarea anterior en partes que se pueden imprimir por separado y devuelve el modelo segmentado, con cada parte como su propio objeto en el archivo.
Parámetros
- Name
- input_task_id
- Type
- string
- Requerido
- Description
El ID de una tarea exitosa cuyo modelo se va a dividir. Tipos de tarea admitidos: Imagen a 3D, Multi-imagen a 3D, Texto a 3D (vista previa), Remallado, Convertir y Redimensionar. La tarea debe tener un estado
SUCCEEDED, y su modelo debe haberse generado con Meshy 6 o Meshy 7 (ai_modelmeshy-6,meshy-7, olatest). Los modelos low-poly y de Smart Topology (meshy-t2) no son compatibles.
- Name
- mode
- Type
- string
- predeterminado auto
- Description
Cómo se divide el modelo en partes.
Valores disponibles:
auto: Meshy elige los cortes. Se ignoraprompt.by_parts: Corta a lo largo de las partes estructurales que nombres enprompt, como cabeza, brazos y torso.by_color: Corta a lo largo de las regiones de color que nombres enprompt. Requiere una entrada generada a partir de una imagen subida (Imagen a 3D o Multi-imagen a 3D); otras entradas se rechazan con400.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Requerido
- Description
Describe las partes en las que se va a dividir, en cualquier idioma. Meshy lee de 1 a 10 nombres de partes a partir de esto, así que nombra las piezas en lugar de describir el modelo — por ejemplo
split into the figure and the base, ohead, torso, left arm, right arm, legs. Hasta 600 caracteres. Hay dos modos de fallo: una descripción que se lee como una división pero nombra menos de dos partes (por ejemplosplit into individual parts) se rechaza con400y no se realiza ningún cobro; una descripción que Meshy no puede interpretar en absoluto recurre aauto, la tarea se ejecuta igualmente y se cobra, y su respuesta incluyeprompt_ignored: true.
- Name
- target_formats
- Type
- array
- predeterminado ["glb"]
- Description
Formatos en los que exportar el modelo dividido. Cada parte es un objeto separado en cada formato.
glbsiempre se genera y se devuelve enmodel_urls; incluye en la lista cualquier otro formato adicional que quieras.Valores disponibles:
glb,obj,fbx,usdz,blend,3mf.3mfse genera pensando en los laminadores: un objeto por parte, cada uno en su propia ranura de filamento, de modo que Bambu Studio abre el archivo como partes de colores individuales y seleccionables por separado (el archivo incluye una configuración de proyecto de Bambu Studio; otros laminadores leen la geometría). Al igual que los demás formatos de impresión de Meshy, está en milímetros y, dado que este endpoint no admite un tamaño objetivo, todo el modelo se escala de modo que su lado más largo mida 150 mm — el mismo límite que usan las demás exportaciones en formato de impresión, elegido para encajar en cualquier plataforma de impresión convencional. Conlayout: "on_plate", el límite se aplica a la plataforma con el diseño en conjunto, de modo que el archivo queda listo para laminar; conassembled, las partes se colocan donde estaban en el modelo original y tú las organizas en el laminador.stlno es compatible porque el formato no puede contener partes separadas.
- Name
- layout
- Type
- string
- predeterminado assembled
- Description
Cómo se organizan las partes en cada formato de salida, y en la miniatura.
Valores disponibles:
assembled: Las partes permanecen donde estaban en el modelo original.on_plate: Las partes se colocan planas y distribuidas sobre la plataforma de impresión, listas para laminar — la misma disposición que la vista On Plate de la aplicación web.
En ambos diseños, los archivos exportados contienen un objeto por parte y nada más: una porción colapsada o una pieza semejante a un punto que quede de un corte se elimina antes de la exportación, de modo que cada objeto que encuentres en el archivo es imprimible.
- Name
- connectors
- Type
- boolean
- predeterminado false
- Description
Agrega conectores de tipo espiga y muesca en cada corte para que las partes impresas encajen entre sí.
connectors = true- Name
- connector_type
- Type
- string
- predeterminado cube
- Description
La forma del conector en cada superficie de corte.
Valores disponibles:
cube,cylinder.
- Name
- connector_size
- Type
- number
- predeterminado 0.5
- Description
Tamaño del conector en relación con la superficie de corte.
Rango válido:
0.1a0.8.
- Name
- connector_height
- Type
- number
- predeterminado 0.1
- Description
Cuánto sobresale el conector de la superficie de corte, en relación con la superficie de corte.
Rango válido:
0.1a0.8.
Devuelve
La propiedad result de la respuesta contiene el id de la tarea de Auto Split recién creada.
Modos de fallo
- Name
400 - Bad Request- Description
La solicitud fue inaceptable. Causas comunes:
- Falta el prompt:
promptes obligatorio cuandomodeesby_partsoby_color. - El prompt nombra menos de dos partes:
by_parts/by_colornecesita al menos dos piezas nombradas (por ejemplohead, torso, base); una instrucción genérica comosplit into individual partsse rechaza. No se realiza ningún cobro. - Tarea de entrada no compatible:
input_task_iddebe hacer referencia a una tarea exitosa de un tipo compatible, generada con Meshy 6 o Meshy 7. - Entrada con texturas: El modelo de entrada tiene texturas. Por ahora solo se admiten modelos sin texturas.
- Sin imagen de referencia:
by_colorrequiere una entrada generada a partir de una imagen subida. - Formato no compatible:
target_formatscontienestl. - Conector fuera de rango:
connector_sizeoconnector_heightestá fuera de0.1a0.8.
- Falta el prompt:
- 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
404 - Not Found- Description
El
input_task_idno existe o no pertenece a tu cuenta.
- Name
429 - Too Many Requests- Description
Has excedido tu límite de tasa. Las solicitudes
by_partsyby_colortambién comparten un límite de análisis de prompts de 12 solicitudes por minuto y por cuenta.
- Name
503 - Service Unavailable- Description
La división basada en prompt (
by_partsyby_color) no está disponible temporalmente. Vuelve a intentarlo más tarde, o usamode: "auto", que no se ve afectado. No se realiza ningún cobro.
Request
# Simple request: let Meshy choose the cuts
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
}'
# Advanced request: name the parts, add connectors, export glb and obj
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"mode": "by_parts",
"prompt": "split into the figure and the base",
"target_formats": ["glb", "obj"],
"layout": "on_plate",
"connectors": true,
"connector_type": "cylinder",
"connector_size": 0.4
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Recuperar una tarea de Auto Split
Este endpoint recupera una tarea de Auto Split mediante su ID.
Parámetros
- Name
- id
- Type
- path
- Description
El ID de la tarea de Auto Split que se desea recuperar.
Devuelve
El objeto de la tarea de Auto Split.
Request
curl https://api.meshy.ai/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
Eliminar una tarea de Auto Split
Este endpoint elimina permanentemente una tarea de Auto Split, incluidos 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 Auto Split que se va a eliminar.
Devuelve
Devuelve 200 OK si la operación se realiza correctamente.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
List Auto Split Tasks
Este endpoint le permite recuperar una lista de tareas de Auto Split.
Parámetros
Atributos opcionales
- Name
- page_num
- Type
- integer
- Description
Número de página para la paginación. Comienza y tiene por defecto
1.
- Name
- page_size
- Type
- integer
- Description
Límite del tamaño de página. Por defecto es
10elementos. El máximo permitido es100elementos; los valores mayores se limitan a100.
- Name
- sort_by
- Type
- string
- Description
Campo por el que 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 Auto Split.
Request
curl https://api.meshy.ai/openapi/v1/print/split?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
]
Transmitir una tarea de Auto Split
Este endpoint transmite actualizaciones en tiempo real de una tarea de Auto Split mediante Server-Sent Events (SSE).
Parámetros
- Name
- id
- Type
- path
- Description
Identificador único de la tarea de Auto Split que se va a transmitir.
Devuelve
Devuelve un flujo de objetos de tarea de Auto Split como Server-Sent Events.
Cada evento message transporta el objeto de tarea completo, tal como lo devuelve Recuperar una tarea de Auto Split, incluyendo consumed_credits, las marcas de tiempo y prompt_ignored; mientras la tarea está en PENDING o IN_PROGRESS, los campos que cambian entre fotogramas son progress, status, started_at y preceding_tasks, y model_urls, thumbnail_url, part_count y parts aparecen una vez que alcanza el estado SUCCEEDED. Un evento error transporta únicamente status_code y message, así que hay que distinguir según el nombre del evento antes de leer status.
Request
curl -N https://api.meshy.ai/openapi/v1/print/split/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
El objeto Auto Split Task
Una tarea de Auto Split contiene únicamente las propiedades siguientes. Los campos de prompt de generación que incluyen otros objetos de tarea (name, object_prompt, texture_prompt, etc.), el model_url único y texture_urls nunca se rellenan en una división y no se devuelven. Las propiedades que se completan a medida que la tarea avanza (thumbnail_url, model_urls, las marcas de tiempo) siempre están presentes, vacías hasta que tienen un valor, por lo que el conjunto de claves no cambia entre PENDING y SUCCEEDED.
- Name
- id
- Type
- string
- Description
Identificador único de la tarea. Aunque usamos un UUID k-sortable para los ids de tarea como detalle de implementación, no debe asumir nada sobre el formato del id.
- Name
- type
- Type
- string
- Description
Tipo de la tarea. El valor es
print-split.
- Name
- model_urls
- Type
- object
- Description
URLs descargables al modelo dividido, una por cada formato solicitado. Cada parte es un objeto independiente dentro del archivo. La propiedad de un formato se omitirá si dicho formato no fue solicitado.
- Name
glb- Type
- string
- Description
URL descargable al modelo dividido en formato GLB.
- Name
obj- Type
- string
- Description
URL descargable al modelo dividido en formato OBJ.
- Name
fbx- Type
- string
- Description
URL descargable al modelo dividido en formato FBX.
- Name
usdz- Type
- string
- Description
URL descargable al modelo dividido en formato USDZ.
- Name
blend- Type
- string
- Description
URL descargable al modelo dividido en formato Blender.
- Name
3mf- Type
- string
- Description
URL descargable al modelo dividido en formato 3MF: un objeto por parte, cada uno en su propia ranura de filamento, en milímetros, escalado de modo que el lado más largo mida 150 mm, con una configuración de proyecto de Bambu Studio.
- Name
- thumbnail_url
- Type
- string
- Description
URL descargable a una vista previa renderizada del modelo dividido, con cada parte en un color distinto, en el
layoutsolicitado.
- Name
- prompt_ignored
- Type
- boolean
- Description
truecuando elpromptde una solicitudby_partsoby_colorno nombró ninguna parte, por lo que Meshy dividió el modelo automáticamente en su lugar; los nombres de las partes en el resultado son los de Meshy, no los suyos. Presente desdePENDINGen adelante. Se omite en las tareasautoy siempre que se haya seguido el prompt.
- Name
- part_count
- Type
- integer
- Description
Número de partes imprimibles en el modelo dividido: una por cada objeto en los archivos exportados. Los fragmentos colapsados que la segmentación no pudo convertir en una pieza imprimible se eliminan de los archivos antes de la exportación y no se cuentan.
- Name
- progress
- Type
- integer
- Description
Progreso de la tarea. Si la tarea aún no se ha iniciado, 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,CANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
El recuento de tareas precedentes.
El valor de este campo solo es significativo si el estado de la tarea es
PENDING.
- 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. Consulte 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. Siempre presente:
10una vez que la tarea ha sido aceptada, y0para tareasFAILEDporque el cargo se reembolsa en caso de fallo. Eliminar una tarea mientras aún estáPENDINGtambién la reembolsa.
The Auto Split Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}