lowpoly sera retiré le 30 oct. 2026. Changez de modèle avant ces dates pour éviter les erreurs de requête.

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.


POST/openapi/v1/print/split

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_model meshy-6, meshy-7, meshy-7.1, ou latest). 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. prompt est ignoré.
    • by_parts : Découpe selon les parties structurelles que vous nommez dans prompt, telles que 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. 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.
S'applique uniquement quand 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, ou head, torso, left arm, right arm, legs. Nommer une seule partie convient également : tout ce que vous n'avez pas nommé devient une partie restante, donc the head divise 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 avec 400 et 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 porte prompt_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 avec 400 à 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é ; stl n'a pas de notion d'objets séparés, donc il fusionne toutes les parties en un seul solide agencé selon layout (demandez 3mf pour des parties sélectionnables séparément dans un trancheur). glb est toujours produit et renvoyé dans model_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 ; stl les 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.

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 à 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 : prompt est requis lorsque mode est by_parts ou by_color.
    • Le prompt ne décrit aucune découpe, ou trop de parties : by_parts / by_color accepte 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_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.
    • Pas d'image de référence : by_color nécessite une entrée générée à partir d'une image téléchargée.
    • 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

    L'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

    La découpe basée 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 à 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

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.

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

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

// 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."
}

GET/openapi/v1/print/split

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 à 1 et vaut 1 par 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 de 100 é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

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

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
}

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é ; stl les 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 3mf pour 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 layout demandée.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true lorsque le prompt d'une requête by_parts ou by_color ne 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è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 produites par la division. Les formats prenant en charge les objets de scène contiennent un objet par partie ; stl les 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 deviendra 100.

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

  • 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 un task_error.type invalid_input et un code provider_content_refused. Consultez Erreurs.

  • 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 le montant est remboursé en cas d'échec. Supprimer 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
}