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.


POST/openapi/v1/print/split

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_model meshy-6, meshy-7, ou latest). 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. prompt est ignoré.
    • by_parts : Découpe selon les parties structurelles que vous nommez dans prompt, comme la tête, les bras et le torse.
    • by_color : Découpe selon les régions de couleur que vous nommez dans prompt. 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 avec 400.
S'applique uniquement quand 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, ou head, 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 exemple split into individual parts) est rejetée avec 400 et 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 porte prompt_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. glb est toujours produit et renvoyé dans model_urls ; listez tout autre format que vous souhaitez en plus.

    Valeurs disponibles : glb, obj, fbx, usdz, blend, 3mf.

    3mf est é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. Avec layout: "on_plate", le plafond s'applique au plateau agencé dans son ensemble, de sorte que le fichier soit prêt à être tranché ; avec assembled, les parties restent où le modèle source les avait placées et vous les organisez dans le trancheur.

  • 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.

S'applique uniquement quand 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 : prompt est requis lorsque mode est by_parts ou by_color.
    • Le prompt nomme moins de deux parties : by_parts / by_color nécessite au moins deux pièces nommées (par exemple head, torso, base) ; une instruction générique comme split into individual parts est rejetée. Rien n'est facturé.
    • Tâche d'entrée non prise en charge : input_task_id doit 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_color nécessite une entrée générée à partir d'une image téléchargée.
    • Format non pris en charge : target_formats contient stl.
    • Connecteur hors plage : connector_size ou connector_height est en dehors de 0.1 à 0.8.
  • 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_id n'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_parts et by_color partagent é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_parts et by_color) est temporairement indisponible. Réessayez plus tard, ou utilisez mode: "auto", qui n'est pas affecté. Rien n'est facturé.

Request

POST
/openapi/v1/print/split
# 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"
}

GET/openapi/v1/print/split/:id

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

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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
}

DELETE/openapi/v1/print/split/:id

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

DELETE
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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.

GET/openapi/v1/print/split

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é est 100 é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

GET
/openapi/v1/print/split
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
  }
]

GET/openapi/v1/print/split/:id/stream

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

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
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 layout demandé.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true lorsque le prompt d'une requête by_parts ou by_color ne 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ès PENDING. Omis pour les tâches auto et 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 deviendra 100.

  • 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.

  • 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 : 10 une fois la tâche acceptée, et 0 pour les tâches FAILED car les crédits sont remboursés en cas d'échec. La suppression d'une tâche alors qu'elle est encore PENDING la 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
}