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 zone 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 un objet distinct 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 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) 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 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éversé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 à obtenir après découpage, dans n'importe quelle langue. Meshy lit de 1 à 10 noms de parties à partir de ce texte, donc nommez les pièces plutôt que de décrire le modèle — par exemple découper en la figurine et le socle, ou tête, torse, bras gauche, bras droit, jambes. Nommer une seule partie est possible : tout ce que vous n'avez pas nommé devient une partie restante, ainsi la tête divise le modèle en la tête et le reste, comme dans l'application web. 600 caractères maximum. Deux cas d'échec : une description qui ne demande aucun découpage, ou qui nomme plus de 10 parties, est rejetée avec 400 et rien n'est facturé ; une description que Meshy ne parvient pas du tout à interpréter revient au mode auto, la tâche s'exécute quand même et est facturée, et sa réponse contient prompt_ignored: true.

  • Name
    target_formats
    Type
    array
    défaut ["glb"]
    Description

    Formats dans lesquels exporter le modèle découpé. Les formats qui prennent en charge les objets de scène (glb, obj, fbx, usdz, blend, 3mf) conservent chaque partie comme un objet distinct ; stl n'a pas de notion d'objets séparés, il fusionne donc toutes les parties en un seul solide organisé selon layout (demandez 3mf pour obtenir 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 à l'endroit 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 — la même disposition que la vue On Plate de l'application web.

    Dans les deux dispositions, un fragment effondré ou un point résiduel issu d'une coupe est supprimé avant l'export, de sorte que chaque partie obtenue est imprimable. Les formats qui prennent 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 à tenon et mortaise à chaque coupe pour 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 coupe.

    Valeurs disponibles : cube, cylinder.

  • Name
    connector_size
    Type
    number
    défaut 0.5
    Description

    Taille du connecteur par rapport à la surface de coupe.

    Plage valide : 0.1 à 0.8.

  • Name
    connector_height
    Type
    number
    défaut 0.1
    Description

    Distance sur laquelle le connecteur dépasse de la surface de coupe, par rapport à cette surface.

    Plage valide : 0.1 à 0.8.

Retours

La propriété result de la réponse contient l'id de la nouvelle tâche Auto Split créée.

Modes d'échec

  • Name
    400 - Bad Request
    Description

    La requête était inacceptable. Causes courantes :

    • Prompt manquant : prompt est requis lorsque mode vaut by_parts ou by_color.
    • Le prompt ne décrit aucun découpage, 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 référencer une tâche réussie d'un type pris en charge, générée avec Meshy 6 ou Meshy 7.
    • Aucune image de référence : by_color nécessite une entrée générée à partir d'une image téléversé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

    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 à partir de son ID.

Paramètres

  • Name
    id
    Type
    path
    Description

    L'ID de la tâche Auto Split à récupérer.

Retourne

L'objet de la 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, donc la supprimer en cours d'exécution vous ferait 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.

Retours

Retourne 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

List Auto Split Tasks

Ce point de terminaison vous permet de récupérer une liste de tâches Auto Split.

Paramètres

Attributs facultatifs

  • 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 de 100 éléments ; les valeurs plus élevées sont plafonnées à 100.

  • Name
    sort_by
    Type
    string
    Description

    Champ à utiliser 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

Retourne une liste paginée de The Auto Split Task Objects.

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

Stream an Auto Split Task

Ce point de terminaison diffuse les mises à jour en temps réel 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 de tâche Auto Split sous forme de Server-Sent Events.

Chaque événement message transporte l'objet de tâche complet tel que renvoyé par Récupérer une tâche Auto Split, y compris consumed_credits, les horodatages et prompt_ignored ; tant que la tâche est PENDING ou IN_PROGRESS, les champs qui changent d'une trame à l'autre sont progress, status, started_at et preceding_tasks, et model_urls, thumbnail_url et part_count apparaissent une fois qu'elle 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
}

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 les 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 tâche de découpe et ne sont pas renvoyés. Les propriétés qui se remplissent au fil 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-triable pour les identifiants de tâche comme 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 découpé, une par format demandé. Les formats qui prennent en charge les objets de scène conservent chaque partie comme un objet distinct ; 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 découpé au format GLB.

    • Name
      obj
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format OBJ.

    • Name
      fbx
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format FBX.

    • Name
      stl
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format STL. Toutes les parties sont fusionnées en un seul solide ; demandez 3mf pour des parties sélectionnables séparément.

    • Name
      usdz
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format USDZ.

    • Name
      blend
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format Blender.

    • Name
      3mf
      Type
      string
      Description

      URL téléchargeable vers le modèle découpé au format 3MF.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL téléchargeable vers un aperçu rendu du modèle découpé, chaque partie étant d'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 nommait aucune partie, si bien que Meshy a effectué la découpe 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 découpe. Les formats qui prennent en charge les objets de scène comportent un objet par partie ; stl les fusionne en un seul solide, et le nombre continue de refléter les parties. Les fragments réduits que la segmentation n'a pas pu transformer en une 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 d'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 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
}