API Auto Split
Divisez un modèle 3D en pièces imprimables séparément — automatiquement, selon les pièces que vous nommez, ou par région de couleur — avec des connecteurs optionnels ; les zones fines laissées par une coupe sont toujours renforcées afin que chaque pièce s'imprime pleine.
Le résultat de la division ne conserve pas la texture d'entrée. Auto Split accepte les entrées texturées, vous n'avez donc pas besoin de régénérer le modèle avec should_texture: false. Il reconstruit les pièces découpées et attribue à chacune une couleur de sommet uniforme ; aucune texture d'entrée n'est intégrée dans le format exporté, quel qu'il soit.
Create an Auto Split Task
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.
La tâche s'exécute en arrière-plan. Pour connaître la durée habituelle, consultez Temps de traitement.
Paramètres
- Name
- input_task_id
- Type
- string
- Requis
- Description
L'ID d'une tâche réussie dont le modèle doit être découpé. 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,meshy-7.1, oulatest). Les modèles low-poly et Smart Topology (meshy-t2,meshy-t2.5) ne sont pas pris en charge. Un modèle texturé est accepté, mais sa texture n'est pas conservée dans le résultat.
- 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 régions de couleur que vous nommez dansprompt. Nécessite une entrée générée à partir d'une image téléchargée (Image en 3D ou Multi-image en 3D) ; les autres entrées sont rejetées avec400. Les limites des régions de couleur proviennent de l'image source, et non de la texture du modèle d'entrée. Pour Multi-image en 3D, Auto Split utilise la première image source.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Requis
- Description
Décrit les parties en lesquelles effectuer la découpe, dans n'importe quelle langue. Meshy en extrait de 1 à 10 noms de parties, donc 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. Nommer une seule partie convient également : tout ce que vous n'avez pas nommé devient une partie restante, doncthe headdivise le modèle en la tête et le reste, comme dans l'application web. Jusqu'à 600 caractères. Une description qui ne demande aucune découpe, ou qui nomme plus de 10 parties, est rejetée avec400et rien n'est facturé. Si Meshy ne parvient à lire aucun nom de partie dans la description, il découpe plutôt selon les parties qu'il identifie dans l'image de référence du modèle, dans le mode que vous avez choisi : la tâche s'exécute et est facturée tout de même, et elle porteprompt_ignored: true. Si le modèle n'a pas d'image de référence, ou si Meshy y trouve moins de deux parties, cette requête est rejetée avec400à la place et rien n'est facturé.
- Name
- target_formats
- Type
- array
- défaut ["glb"]
- Description
Formats dans lesquels exporter le modèle découpé. Les formats prenant en charge les objets de scène (
glb,obj,fbx,usdz,blend,3mf) conservent chaque partie en tant qu'objet séparé ;stln'a pas de notion d'objets séparés, donc il fusionne toutes les parties en un seul solide agencé selonlayout(demandez3mfpour des parties sélectionnables séparément dans un trancheur).glbest toujours produit et renvoyé dansmodel_urls; indiquez tout autre format souhaité en plus.Valeurs disponibles :
glb,obj,fbx,stl,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 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 tranchées — la même disposition que la vue On Plate de l'application web.
Dans les deux dispositions, un éclat affaissé ou une pièce ponctuelle résultant d'une découpe est retiré avant l'export, afin que chaque partie obtenue soit imprimable. Les formats prenant en charge les objets de scène contiennent un objet par partie ;
stlles fusionne en un seul solide.
- Name
- connectors
- Type
- boolean
- défaut false
- Description
Ajoute des connecteurs de type tenon-mortaise à chaque découpe afin que les parties imprimées s'assemblent entre elles.
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 relative à 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, relative à cette surface.
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 ne décrit aucune découpe, ou trop de parties :
by_parts/by_coloraccepte de 1 à 10 pièces nommées. Une description qui demande de conserver le modèle en une seule pièce, ou qui nomme plus de 10 parties, est 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. - Pas d'image de référence :
by_colornécessite une entrée générée à partir d'une image téléchargée. - 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
L'
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 découpe 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.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"
}
Récupérer une tâche Auto Split
Ce point de terminaison récupère une tâche Auto Split à partir de son ID.
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche Auto Split à récupérer.
Retours
L'objet tâche 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
}
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.
Statut de la tâche
Une tâche qui est encore PENDING est supprimée et les crédits consommés
au moment de la création sont remboursés.
Une tâche déjà IN_PROGRESS ne peut pas être supprimée : la requête est
rejetée avec 409 Conflict et la tâche continue de s'exécuter. Les crédits
d'une tâche que le worker a déjà commencé à traiter ne sont pas
remboursables ; la supprimer en cours d'exécution vous ferait donc perdre
à la fois les crédits et le résultat. Attendez qu'elle atteigne l'état
SUCCEEDED, FAILED ou CANCELED, puis supprimez-la.
Une tâche dans un état final (SUCCEEDED, FAILED ou CANCELED) est
supprimée sans remboursement.
Retour
Renvoie 200 OK en cas de succès, ou 409 Conflict lorsque la tâche 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."
}
Lister les tâches Auto Split
Ce point de terminaison vous permet de récupérer une liste de tâches Auto Split.
Paramètres
Attributs optionnels
- Name
- page_num
- Type
- integer
- Description
Numéro de page pour la pagination. Commence à
1et vaut1par défaut.
- Name
- page_size
- Type
- integer
- Description
Limite de taille de page. La valeur par défaut est de
10éléments. Le maximum autorisé est de100éléments ; les valeurs supérieures sont plafonnées à100.
- Name
- sort_by
- Type
- string
- Description
Champ selon lequel trier. Valeurs disponibles :
+created_at: Trier par heure de création dans l'ordre croissant.-created_at: Trier par heure de création dans l'ordre décroissant.
Retours
Retourne une liste paginée d'objets de tâche 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
}
]
Diffuser un Task Auto Split en flux
Ce point de terminaison diffuse en continu les mises à jour en temps réel d'un task Auto Split à l'aide de Server-Sent Events (SSE).
Paramètres
- Name
- id
- Type
- path
- Description
Identifiant unique du task 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 task complet tel que retourné par Récupérer un Task Auto Split, y compris consumed_credits, les horodatages et prompt_ignored ; tant que le task est PENDING ou IN_PROGRESS, les champs qui changent entre les trames sont progress, status, started_at et preceding_tasks, et model_urls, thumbnail_url et part_count apparaissent une fois qu'il atteint SUCCEEDED. Un événement error ne transporte que status_code et message, il faut donc distinguer selon le nom de l'événement avant de lire 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
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 une division 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 pour les identifiants de tâche en tant que détail d'implémentation, 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 divisé, une par format demandé. Les formats prenant en charge les objets de scène conservent chaque partie comme un objet séparé ;
stlles fusionne en un seul solide. La propriété d'un format sera omise si le format n'a pas été demandé.- Name
glb- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format GLB.
- Name
obj- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format OBJ.
- Name
fbx- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format FBX.
- Name
stl- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format STL. Toutes les parties sont fusionnées en un seul solide ; demandez
3mfpour obtenir des parties sélectionnables séparément.
- Name
usdz- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format USDZ.
- Name
blend- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format Blender.
- Name
3mf- Type
- string
- Description
URL téléchargeable vers le modèle divisé au format 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL téléchargeable vers un aperçu rendu du modèle divisé, avec chaque partie dans une couleur distincte, selon la
layoutdemandée.
- Name
- prompt_ignored
- Type
- boolean
- Description
truelorsque lepromptd'une requêteby_partsouby_colorne nommait aucune partie, de sorte que Meshy a divisé 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 produites par la division. Les formats prenant en charge les objets de scène contiennent un objet par partie ;
stlles fusionne en un seul solide, et le nombre indique toujours le nombre de parties. Les fragments effondrés que la segmentation n'a pas pu transformer en pièce imprimable sont supprimé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 l'une des suivantes :
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 ayant échoué. Consultez Erreurs pour la référence complète de l'objet
task_error. Si le contrôle de sécurité du fournisseur de modèle refuse le modèle fourni, la tâche échoue avec untask_error.typeinvalid_inputet uncodeprovider_content_refused. Consultez Erreurs.
- 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 le montant est remboursé 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.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
}