API Auto Split
Divisez un modèle 3D en parties imprimables séparément — automatiquement, selon les parties que vous nommez, ou par région de couleur — avec des connecteurs optionnels ; les régions fines laissées par une découpe sont toujours renforcées afin que chaque partie s'imprime pleine.
Auto Split ne prend actuellement en charge que les modèles sans texture. Pour Image en 3D et Multi-image en 3D, générez l'entrée avec should_texture défini sur false. Une entrée texturée est rejetée avec 400.
Créer une tâche Auto Split
Ce point de terminaison crée une nouvelle tâche Auto Split. La tâche découpe le modèle d'une tâche précédente en parties imprimables séparément et renvoie le modèle segmenté, chaque partie étant son propre objet dans le fichier.
Paramètres
- Name
- input_task_id
- Type
- string
- Requis
- Description
L'ID d'une tâche réussie dont le modèle doit être divisé. Types de tâches pris en charge : Image en 3D, Multi-image en 3D, Texte en 3D (aperçu), Remaillage, Convertir, et Redimensionner. La tâche doit avoir un statut
SUCCEEDED, et son modèle doit avoir été généré avec Meshy 6 ou Meshy 7 (ai_modelmeshy-6,meshy-7, oulatest). Les modèles low-poly et Smart Topology (meshy-t2) ne sont pas pris en charge.
- Name
- mode
- Type
- string
- défaut auto
- Description
Comment le modèle est divisé en parties.
Valeurs disponibles :
auto: Meshy choisit les découpes.promptest ignoré.by_parts: Découpe selon les parties structurelles que vous nommez dansprompt, telles que la tête, les bras et le torse.by_color: Découpe selon les zones de couleur que vous nommez dansprompt. Nécessite une entrée générée à partir d'une image téléversée (Image en 3D ou Multi-image en 3D) ; les autres entrées sont rejetées avec400.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Requis
- Description
Décrit les parties à découper, dans n'importe quelle langue. Meshy lit de 1 à 10 noms de parties à partir de celui-ci, alors nommez les pièces plutôt que de décrire le modèle — par exemple
split into the figure and the base, ouhead, torso, left arm, right arm, legs. Jusqu'à 600 caractères. Deux modes d'échec : une description qui se lit comme une division mais nomme moins de deux parties (par exemplesplit into individual parts) est rejetée avec400et rien n'est facturé ; une description que Meshy ne peut pas du tout interpréter revient àauto, la tâche s'exécute quand même et est facturée, et sa réponse porteprompt_ignored: true.
- Name
- target_formats
- Type
- array
- défaut ["glb"]
- Description
Formats dans lesquels exporter le modèle divisé. Chaque partie est un objet séparé dans chaque format.
glbest toujours produit et renvoyé dansmodel_urls; listez tout autre format que vous souhaitez en plus.Valeurs disponibles :
glb,obj,fbx,usdz,blend,3mf.
- Name
- layout
- Type
- string
- défaut assembled
- Description
Comment les parties sont disposées dans chaque format de sortie, et dans la miniature.
Valeurs disponibles :
assembled: Les parties restent à l'endroit où le modèle source les avait placées.on_plate: Les parties sont posées à plat et étalées sur le plateau d'impression, prêtes à être découpées en tranches — le même agencement que la vue On Plate de l'application web.
Dans les deux agencements, les fichiers exportés contiennent un objet par partie et rien d'autre : un fragment effondré ou une pièce ponctuelle résultant d'une découpe est supprimé avant l'exportation, de sorte que chaque objet trouvé dans le fichier est imprimable.
- Name
- connectors
- Type
- boolean
- défaut false
- Description
Ajoute des connecteurs de type tenon-mortaise à chaque découpe afin que les pièces imprimées s'emboîtent.
connectors = true- Name
- connector_type
- Type
- string
- défaut cube
- Description
La forme du connecteur à chaque surface de découpe.
Valeurs disponibles :
cube,cylinder.
- Name
- connector_size
- Type
- number
- défaut 0.5
- Description
Taille du connecteur par rapport à la surface de découpe.
Plage valide :
0.1à0.8.
- Name
- connector_height
- Type
- number
- défaut 0.1
- Description
Distance sur laquelle le connecteur s'étend depuis la surface de découpe, par rapport à la surface de découpe.
Plage valide :
0.1à0.8.
Retours
La propriété result de la réponse contient l'id de la tâche Auto Split nouvellement créée.
Modes d'échec
- Name
400 - Bad Request- Description
La requête était inacceptable. Causes courantes :
- Prompt manquant :
promptest requis lorsquemodeestby_partsouby_color. - Le prompt nomme moins de deux parties :
by_parts/by_colornécessite au moins deux pièces nommées (par exemplehead, torso, base) ; une instruction générique telle quesplit into individual partsest rejetée. Rien n'est facturé. - Tâche d'entrée non prise en charge :
input_task_iddoit faire référence à une tâche réussie d'un type pris en charge, générée avec Meshy 6 ou Meshy 7. - Entrée texturée : Le modèle d'entrée possède des textures. Seuls les modèles sans texture sont pris en charge pour le moment.
- Aucune image de référence :
by_colornécessite une entrée générée à partir d'une image téléversée. - Format non pris en charge :
target_formatscontientstl. - Connecteur hors plage :
connector_sizeouconnector_heightest en dehors de0.1à0.8.
- Prompt manquant :
- Name
401 - Unauthorized- Description
L'authentification a échoué. Veuillez vérifier votre clé API.
- Name
402 - Payment Required- Description
Crédits insuffisants pour effectuer cette tâche.
- Name
404 - Not Found- Description
input_task_idn'existe pas ou n'appartient pas à votre compte.
- Name
429 - Too Many Requests- Description
Vous avez dépassé votre limite de débit. Les requêtes
by_partsetby_colorpartagent également une limite d'analyse de prompt de 12 requêtes par minute et par compte.
- Name
503 - Service Unavailable- Description
La division basée sur un prompt (
by_partsetby_color) est temporairement indisponible. Réessayez plus tard, ou utilisezmode: "auto", qui n'est pas affecté. Rien n'est facturé.
Request
# Simple request: let Meshy choose the cuts
curl https://api.meshy.cn/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.cn/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"
}
Récupérer une tâche Auto Split
Ce point de terminaison récupère une tâche Auto Split par son ID.
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche Auto Split à récupérer.
Retour
L'objet Auto Split Task.
Request
curl https://api.meshy.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}
Supprimer une tâche Auto Split
Ce point de terminaison supprime définitivement une tâche Auto Split, y compris tous les modèles et données associés. Cette action est irréversible.
Paramètres de chemin
- Name
- id
- Type
- path
- Description
L'ID de la tâche Auto Split à supprimer.
Retours
Renvoie 200 OK en cas de succès.
Request
curl --request DELETE \
--url https://api.meshy.cn/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
Ce point de terminaison vous permet de récupérer une liste des tâches Auto Split.
Paramètres
Attributs optionnels
- Name
- page_num
- Type
- integer
- Description
Numéro de page pour la pagination. Commence et vaut par défaut
1.
- Name
- page_size
- Type
- integer
- Description
Limite de la taille de page. La valeur par défaut est
10éléments. Le maximum autorisé est100éléments ; les valeurs plus élevées sont ramenées à100.
- Name
- sort_by
- Type
- string
- Description
Champ utilisé pour le tri. Valeurs disponibles :
+created_at: Trier par date de création par ordre croissant.-created_at: Trier par date de création par ordre décroissant.
Retours
Renvoie une liste paginée des objets de tâche Auto Split.
Request
curl https://api.meshy.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}
]
Diffuser un Auto Split Task en continu
Ce point de terminaison diffuse en temps réel les mises à jour d'une tâche Auto Split à l'aide des Server-Sent Events (SSE).
Paramètres
- Name
- id
- Type
- path
- Description
Identifiant unique de la tâche Auto Split à diffuser.
Retours
Retourne un flux d'objets Auto Split Task sous forme de Server-Sent Events.
Chaque événement message transporte l'objet de tâche complet tel que renvoyé par Récupérer un Auto Split Task, y compris consumed_credits, les horodatages et prompt_ignored ; tant que la tâche est PENDING ou IN_PROGRESS, les champs qui changent entre les images sont progress, status, started_at et preceding_tasks, et model_urls, thumbnail_url, part_count et parts apparaissent une fois qu'elle atteint SUCCEEDED. Un événement error transporte uniquement status_code et message, il convient donc de distinguer selon le nom de l'événement avant de lire status.
Request
curl -N https://api.meshy.cn/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.cn/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
Une tâche Auto Split ne comporte que les propriétés ci-dessous. Les champs de prompt de génération que d'autres objets de tâche incluent (name, object_prompt, texture_prompt, etc.), le model_url unique, ainsi que texture_urls, ne sont jamais renseignés pour un split et ne sont pas retournés. Les propriétés qui se remplissent au fur et à mesure de l'exécution de la tâche (thumbnail_url, model_urls, les horodatages) sont toujours présentes, vides jusqu'à ce qu'elles aient une valeur, de sorte que l'ensemble des clés ne change pas entre PENDING et SUCCEEDED.
- Name
- id
- Type
- string
- Description
Identifiant unique de la tâche. Bien que nous utilisions un UUID k-sortable comme détail d'implémentation pour les identifiants de tâche, vous ne devez pas faire d'hypothèses sur le format de l'id.
- Name
- type
- Type
- string
- Description
Type de la tâche. La valeur est
print-split.
- Name
- model_urls
- Type
- object
- Description
URLs téléchargeables vers le modèle scindé, une par format demandé. Chaque partie est un objet distinct dans le fichier. La propriété correspondant à un format sera omise si ce format n'a pas été demandé.
- Name
glb- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format GLB.
- Name
obj- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format OBJ.
- Name
fbx- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format FBX.
- Name
usdz- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format USDZ.
- Name
blend- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format Blender.
- Name
3mf- Type
- string
- Description
URL téléchargeable vers le modèle scindé au format 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL téléchargeable vers un aperçu rendu du modèle scindé, chaque partie étant d'une couleur distincte, selon la
layoutdemandée.
- Name
- prompt_ignored
- Type
- boolean
- Description
truelorsque lepromptd'une requêteby_partsouby_colorne nommait aucune partie, si bien que Meshy a scindé le modèle automatiquement à la place — les noms de parties dans le résultat sont ceux de Meshy, pas les vôtres. Présent dèsPENDING. Omis pour les tâchesautoet chaque fois que le prompt a été suivi.
- Name
- part_count
- Type
- integer
- Description
Nombre de parties imprimables dans le modèle scindé — une par objet dans les fichiers exportés. Les fragments résiduels que la segmentation n'a pas pu transformer en pièce imprimable sont retirés des fichiers avant l'export et ne sont pas comptabilisés.
- Name
- progress
- Type
- integer
- Description
Progression de la tâche. Si la tâche n'a pas encore démarré, cette propriété vaudra
0. Une fois la tâche réussie, elle deviendra100.
- Name
- status
- Type
- string
- Description
Statut de la tâche. Les valeurs possibles sont
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
Le nombre de tâches précédentes.
La valeur de ce champ n'a de sens que si le statut de la tâche est
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Horodatage de la création de la tâche, en millisecondes.
- Name
- started_at
- Type
- timestamp
- Description
Horodatage du démarrage de la tâche, en millisecondes. Si la tâche n'a pas encore démarré, cette propriété vaudra
0.
- Name
- finished_at
- Type
- timestamp
- Description
Horodatage de la fin de la tâche, en millisecondes. Si la tâche n'est pas encore terminée, cette propriété vaudra
0.
- Name
- task_error
- Type
- object
- Description
Détails de l'erreur pour les tâches échouées. Consultez Erreurs pour la référence complète de l'objet
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Le nombre de crédits consommés par cette tâche. Toujours présent :
10une fois la tâche acceptée, et0pour les tâchesFAILEDcar la charge est remboursée en cas d'échec. Supprimer une tâche alors qu'elle est encorePENDINGla rembourse également.
The Auto Split Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}