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.
El resultado de la división no conserva la textura de entrada. Auto Split acepta entradas con textura, por lo que no es necesario regenerar el modelo con should_texture: false. Reconstruye las piezas cortadas y asigna a cada una un color de vértice plano; no se transfiere ningún mapa de textura de entrada a ningún formato exportado.
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 imprimibles por separado y devuelve el modelo segmentado, con cada parte como su propio objeto dentro del archivo.
Parámetros
- Name
- input_task_id
- Type
- string
- Requerido
- Description
El ID de una tarea completada 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 el estado
SUCCEEDED, y su modelo debe haberse generado con Meshy 6 o Meshy 7 (ai_modelmeshy-6,meshy-7,meshy-7.1olatest). Los modelos low-poly y de Smart Topology (meshy-t2) no son compatibles. Se acepta un modelo con textura, pero su textura no se traslada al resultado.
- 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 según las partes estructurales que indiques enprompt, como cabeza, brazos y torso.by_color: Corta según las regiones de color que indiques enprompt. Requiere una entrada generada a partir de una imagen subida (Imagen a 3D o Multi-imagen a 3D); otras entradas se rechazan con400. Los límites de las regiones de color provienen de la imagen de origen, no de la textura del modelo de entrada. Para Multi-imagen a 3D, Auto Split usa la primera imagen de origen.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Requerido
- Description
Describe las partes en las que dividir, en cualquier idioma. Meshy lee de 1 a 10 nombres de partes a partir de él, 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. Nombrar una sola parte también es válido: todo lo que no nombres se convierte en una parte restante, de modo quethe headdivide el modelo en la cabeza y el resto, tal como en la aplicación web. Hasta 600 caracteres. Hay dos modos de fallo: una descripción que no pide ninguna división, o que nombra más de 10 partes, se rechaza con400y no se cobra nada; una descripción que Meshy no puede interpretar en absoluto recurre aauto, la tarea igual se ejecuta 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. Los formatos que admiten objetos de escena (
glb,obj,fbx,usdz,blend,3mf) llevan cada parte como un objeto independiente;stlno tiene noción de objetos independientes, así que fusiona todas las partes en un solo sólido dispuesto segúnlayout(solicita3mfpara obtener partes seleccionables por separado en un laminador).glbsiempre se genera y se devuelve enmodel_urls; incluye cualquier otro formato adicional que desees.Valores disponibles:
glb,obj,fbx,stl,usdz,blend,3mf.
- Name
- layout
- Type
- string
- predeterminado assembled
- Description
Cómo se disponen las partes en cada formato de salida y en la miniatura.
Valores disponibles:
assembled: Las partes permanecen donde estaban en el modelo de origen.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 ambas disposiciones, se elimina antes de exportar cualquier fragmento colapsado o similar a un punto que quede de un corte, de modo que cada parte que obtengas sea imprimible. Los formatos que admiten objetos de escena mantienen un objeto por parte;
stllos fusiona en un solo sólido.
- Name
- connectors
- Type
- boolean
- predeterminado false
- Description
Añade conectores de 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
La distancia que el conector se extiende desde la superficie de corte, en relación con dicha superficie.
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 no describe ninguna división, o describe demasiadas partes:
by_parts/by_coloracepta de 1 a 10 piezas nombradas. Se rechaza una descripción que pide mantener el modelo en una sola pieza, o que nombra más de 10 partes. No se cobra nada. - Tarea de entrada no admitida:
input_task_iddebe referirse a una tarea completada de un tipo admitido, generada con Meshy 6 o Meshy 7. - Sin imagen de referencia:
by_colorrequiere una entrada generada a partir de una imagen subida. - Conector fuera de rango:
connector_sizeoconnector_heightestá fuera del rango0.1a0.8.
- Falta el prompt:
- Name
401 - Unauthorized- Description
Error de autenticación. 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 superado tu límite de tasa. Las solicitudes
by_partsyby_colortambién comparten un límite de análisis de prompt de 12 solicitudes por minuto 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 cobra nada.
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.
Retorna
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, 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 Auto Split que se eliminará.
Estado de la tarea
Una tarea que todavía está en PENDING se elimina y se reembolsan los
créditos consumidos en el momento de su creación.
Una tarea que ya está IN_PROGRESS no se puede eliminar: la solicitud se
rechaza con 409 Conflict y la tarea sigue en ejecución. Los créditos de
una tarea que el worker ya ha empezado 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 alcance el estado 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 si tiene éxito, o 409 Conflict cuando la tarea está
IN_PROGRESS.
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
// 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."
}
Listar tareas de Auto Split
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 como valor predeterminado
1.
- Name
- page_size
- Type
- integer
- Description
Límite de tamaño de página. El valor predeterminado es
10elementos. El máximo permitido es100elementos; valores mayores se ajustan a100.
- 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 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 en flujo una tarea de Auto Split
Este endpoint transmite en flujo 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 y part_count aparecen una vez que llega a SUCCEEDED. Un evento error transporta únicamente status_code y message, así que se debe 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
}
The Auto Split Task Object
Una tarea de Auto Split solo contiene las propiedades que se muestran a continuación. Los campos de generación por prompt que incluyen otros objetos de tarea (name, object_prompt, texture_prompt, etc.), el model_url único y texture_urls nunca se completan para 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 debes hacer ninguna suposición 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 del modelo dividido, una por cada formato solicitado. Los formatos que admiten objetos de escena mantienen cada parte como un objeto independiente;
stllas fusiona en un solo sólido. La propiedad de un formato se omitirá si dicho formato no fue solicitado.- Name
glb- Type
- string
- Description
URL descargable del modelo dividido en formato GLB.
- Name
obj- Type
- string
- Description
URL descargable del modelo dividido en formato OBJ.
- Name
fbx- Type
- string
- Description
URL descargable del modelo dividido en formato FBX.
- Name
stl- Type
- string
- Description
URL descargable del modelo dividido en formato STL. Todas las partes se fusionan en un solo sólido; solicita
3mfpara obtener partes seleccionables por separado.
- Name
usdz- Type
- string
- Description
URL descargable del modelo dividido en formato USDZ.
- Name
blend- Type
- string
- Description
URL descargable del modelo dividido en formato Blender.
- Name
3mf- Type
- string
- Description
URL descargable del modelo dividido en formato 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL descargable de 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 tuyos. Presente desdePENDINGen adelante. Se omite para tareasautoy siempre que se haya seguido el prompt.
- Name
- part_count
- Type
- integer
- Description
Número de partes imprimibles que produjo la división. Los formatos que admiten objetos de escena incluyen un objeto por parte;
stllas fusiona en un solo sólido, y el recuento sigue reportando las partes. Las esquirlas colapsadas 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
Progress de la tarea. Si la tarea aún no se ha iniciado, esta propiedad será
0. Una vez que la tarea haya tenido éxito, esta 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 número 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. 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. 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á enPENDINGtambié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
}