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 découpe sont toujours renforcées afin que chaque pièce 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. La prise en charge des textures est en cours (progress).
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 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 être 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, comme 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.
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, nommez donc 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 découpe 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 lire 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 découpé. 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.3mfest écrit pour les trancheurs : un objet par partie, chacun sur son propre emplacement de filament, de sorte que Bambu Studio ouvre le fichier comme des parties colorées individuellement, sélectionnables séparément (l'archive porte une configuration de projet Bambu Studio ; les autres trancheurs lisent la géométrie). Comme les autres formats d'impression de Meshy, il est en millimètres et, comme ce point de terminaison ne prend pas de taille cible, le modèle entier est mis à l'échelle de sorte que son côté le plus long fasse 150 mm — le même plafond utilisé par les autres exports au format d'impression, choisi pour s'adapter à tous les plateaux d'impression courants. Aveclayout: "on_plate", le plafond s'applique au plateau agencé dans son ensemble, de sorte que le fichier soit prêt à être tranché ; avecassembled, les parties restent où le modèle source les avait placées et vous les organisez dans le trancheur.stln'est pas pris en charge car le format ne peut pas porter de parties séparées.
- Name
- layout
- Type
- string
- défaut assembled
- Description
Comment les parties sont agencé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 réparties sur le plateau d'impression, prêtes à être tranchées — 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 partie ressemblant à un point restant d'une découpe est retiré avant l'export, de sorte que chaque objet trouvé dans le fichier soit imprimable.
- Name
- connectors
- Type
- boolean
- défaut false
- Description
Ajoute des connecteurs à tenon et mortaise à chaque découpe afin que les parties imprimées s'assemblent.
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 à 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 commesplit 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 l'instant.
- Aucune image de référence :
by_colornécessite une entrée générée à partir d'une image téléchargé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
Le découpage basé 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 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.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.
Retours
Renvoie 200 OK en cas de succès.
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
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.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 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.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
}
L'objet de tâche Auto Split
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 découpe 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 triable par ordre chronologique (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
URL de téléchargement du modèle découpé, une par format demandé. Chaque partie est un objet distinct dans le fichier. La propriété pour un format sera omise si ce format n'a pas été demandé.
- Name
glb- Type
- string
- Description
URL de téléchargement du modèle découpé au format GLB.
- Name
obj- Type
- string
- Description
URL de téléchargement du modèle découpé au format OBJ.
- Name
fbx- Type
- string
- Description
URL de téléchargement du modèle découpé au format FBX.
- Name
usdz- Type
- string
- Description
URL de téléchargement du modèle découpé au format USDZ.
- Name
blend- Type
- string
- Description
URL de téléchargement du modèle découpé au format Blender.
- Name
3mf- Type
- string
- Description
URL de téléchargement du modèle découpé au format 3MF : un objet par partie, chacune sur son propre emplacement de filament, en millimètres, mis à l'échelle de sorte que le côté le plus long mesure 150 mm, avec une configuration de projet Bambu Studio.
- Name
- thumbnail_url
- Type
- string
- Description
URL de téléchargement d'un aperçu rendu du modèle découpé, avec chaque partie dans une couleur distincte, selon le
layoutdemandé.
- Name
- prompt_ignored
- Type
- boolean
- Description
truelorsque lepromptd'une requêteby_partsouby_colorne nomme aucune partie, ce qui amène Meshy à découper 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 découpé — une par objet dans les fichiers exportés. Les fragments effondrés que la segmentation n'a pas pu transformer en pièce imprimable sont supprimés des fichiers avant l'exportation et ne sont pas comptés.
- Name
- progress
- Type
- integer
- Description
Progression de la tâche. Si la tâche n'est pas encore démarrée, cette propriété sera
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 de
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'est pertinente 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'est pas encore démarrée, cette propriété sera
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é sera
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 les crédits sont remboursés en cas d'échec. La suppression d'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
}