lowpoly wird am 30.10.2026 abgeschaltet. Wechseln Sie vor diesen Terminen das Modell, um Fehler bei Anfragen zu vermeiden.

Auto Split API

Teilen Sie ein 3D-Modell in separat druckbare Teile auf – automatisch, nach von Ihnen benannten Teilen oder nach Farbregionen – mit optionalen Verbindern; dünne Bereiche, die durch einen Schnitt entstehen, werden immer verstärkt, sodass jedes Teil solide gedruckt wird.


POST/openapi/v1/print/split

Erstellen einer Auto-Split-Aufgabe

Dieser Endpunkt erstellt eine neue Auto-Split-Aufgabe. Die Aufgabe zerteilt das Modell einer vorherigen Aufgabe in einzeln druckbare Teile und gibt das segmentierte Modell zurück, wobei jedes Teil als eigenes Objekt in der Datei enthalten ist.

Die Aufgabe läuft im Hintergrund. Wie lange das normalerweise dauert, erfahren Sie unter Verarbeitungszeiten.

Parameter

  • Name
    input_task_id
    Type
    string
    Erforderlich
    Description

    Die ID einer erfolgreich abgeschlossenen Aufgabe, deren Modell aufgeteilt werden soll. Unterstützte Aufgabentypen: Bild zu 3D, Multi-Bild zu 3D, Text zu 3D (Vorschau), Neuvernetzung, Konvertieren und Größe ändern. Die Aufgabe muss den Status SUCCEEDED haben, und ihr Modell muss mit Meshy 6 oder Meshy 7 erzeugt worden sein (ai_model meshy-6, meshy-7, meshy-7.1 oder latest). Low-Poly- und Smart-Topology-Modelle (meshy-t2, meshy-t2.5) werden nicht unterstützt. Ein texturiertes Modell wird akzeptiert, seine Textur wird jedoch nicht in das Ergebnis übernommen.

  • Name
    mode
    Type
    string
    Standard auto
    Description

    Wie das Modell in Teile aufgeteilt wird.

    Verfügbare Werte:

    • auto: Meshy wählt die Schnitte aus. prompt wird ignoriert.
    • by_parts: Schneidet entlang der strukturellen Teile, die Sie in prompt benennen, z. B. Kopf, Arme und Rumpf.
    • by_color: Schneidet entlang der Farbbereiche, die Sie in prompt benennen. Erfordert eine Eingabe, die aus einem hochgeladenen Bild erzeugt wurde (Bild zu 3D oder Multi-Bild zu 3D); andere Eingaben werden mit 400 abgelehnt. Die Grenzen der Farbbereiche stammen aus dem Quellbild, nicht aus der Textur des Eingabemodells. Bei Multi-Bild zu 3D verwendet Auto Split das erste Quellbild.
Gilt nur wenn mode = by_parts or by_color
  • Name
    prompt
    Type
    string
    Erforderlich
    Description

    Beschreibt die Teile, in die aufgeteilt werden soll, in beliebiger Sprache. Meshy liest daraus 1 bis 10 Teilenamen, benennen Sie also die Einzelteile, statt das Modell zu beschreiben, zum Beispiel split into the figure and the base oder head, torso, left arm, right arm, legs. Die Benennung eines einzigen Teils ist in Ordnung: Alles, was Sie nicht benannt haben, wird zu einem verbleibenden Teil, sodass the head das Modell in den Kopf und den Rest aufteilt, genau wie in der Web-App. Bis zu 600 Zeichen. Eine Beschreibung, die überhaupt keine Aufteilung verlangt oder mehr als 10 Teile benennt, wird mit 400 abgelehnt, und es werden keine Credits berechnet. Wenn Meshy aus der Beschreibung keine Teilenamen lesen kann, teilt es stattdessen entlang der Teile auf, die es im Referenzbild des Modells erkennt, im von Ihnen gewählten Modus: Die Aufgabe wird trotzdem ausgeführt und berechnet und trägt prompt_ignored: true. Wenn das Modell kein Referenzbild hat oder Meshy darin weniger als zwei Teile findet, wird diese Anfrage stattdessen mit 400 abgelehnt, und es werden keine Credits berechnet.

  • Name
    target_formats
    Type
    array
    Standard ["glb"]
    Description

    Formate, in denen das aufgeteilte Modell exportiert werden soll. Formate, die Szenenobjekte unterstützen (glb, obj, fbx, usdz, blend, 3mf), enthalten jedes Teil als separates Objekt; stl kennt kein Konzept separater Objekte, sodass es alle Teile zu einem einzigen Körper verschmilzt, der gemäß layout angeordnet wird (fordern Sie 3mf an, um einzeln auswählbare Teile in einem Slicer zu erhalten). glb wird immer erzeugt und in model_urls zurückgegeben; listen Sie alle weiteren gewünschten Formate zusätzlich auf.

    Verfügbare Werte: glb, obj, fbx, stl, usdz, blend, 3mf.

  • Name
    layout
    Type
    string
    Standard assembled
    Description

    Wie die Teile in jedem Ausgabeformat und in der Miniaturansicht angeordnet werden.

    Verfügbare Werte:

    • assembled: Die Teile bleiben dort, wo sie im Quellmodell waren.
    • on_plate: Die Teile werden flach ausgelegt und auf der Druckplatte verteilt, bereit zum Slicen — die gleiche Anordnung wie in der On-Plate-Ansicht der Web-App.

    In beiden Layouts wird ein zusammengefallener Splitter oder ein punktartiges Übrigbleibsel eines Schnitts vor dem Export entfernt, sodass jedes Teil, das Sie erhalten, druckbar ist. Formate, die Szenenobjekte unterstützen, enthalten ein Objekt pro Teil; stl verschmilzt sie zu einem einzigen Körper.

  • Name
    connectors
    Type
    boolean
    Standard false
    Description

    Fügt an jedem Schnitt Zapfen-und-Schlitz-Verbinder hinzu, damit die gedruckten Teile zusammenpassen.

Gilt nur wenn connectors = true
  • Name
    connector_type
    Type
    string
    Standard cube
    Description

    Die Form des Verbinders an jeder Schnittfläche.

    Verfügbare Werte: cube, cylinder.

  • Name
    connector_size
    Type
    number
    Standard 0.5
    Description

    Verbindergröße relativ zur Schnittfläche.

    Gültiger Bereich: 0.1 bis 0.8.

  • Name
    connector_height
    Type
    number
    Standard 0.1
    Description

    Wie weit der Verbinder relativ zur Schnittfläche aus dieser herausragt.

    Gültiger Bereich: 0.1 bis 0.8.

Rückgabewerte

Die Eigenschaft result der Antwort enthält die id der neu erstellten Auto-Split-Aufgabe.

Fehlerarten

  • Name
    400 - Bad Request
    Description

    Die Anfrage war nicht akzeptabel. Häufige Ursachen:

    • Fehlender Prompt: prompt ist erforderlich, wenn mode auf by_parts oder by_color gesetzt ist.
    • Prompt beschreibt keine Aufteilung oder zu viele Teile: by_parts / by_color akzeptiert 1 bis 10 benannte Einzelteile. Eine Beschreibung, die verlangt, das Modell als ein Stück zu belassen, oder mehr als 10 Teile benennt, wird abgelehnt. Es werden keine Credits berechnet.
    • Nicht unterstützte Eingabeaufgabe: input_task_id muss sich auf eine erfolgreich abgeschlossene Aufgabe eines unterstützten Typs beziehen, die mit Meshy 6 oder Meshy 7 erzeugt wurde.
    • Kein Referenzbild: by_color erfordert eine Eingabe, die aus einem hochgeladenen Bild erzeugt wurde.
    • Verbinder außerhalb des gültigen Bereichs: connector_size oder connector_height liegt außerhalb von 0.1 bis 0.8.
  • Name
    401 - Unauthorized
    Description

    Die Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.

  • Name
    402 - Payment Required
    Description

    Unzureichende Credits, um diese Aufgabe auszuführen.

  • Name
    404 - Not Found
    Description

    Die input_task_id existiert nicht oder gehört nicht zu Ihrem Konto.

  • Name
    429 - Too Many Requests
    Description

    Sie haben Ihre Ratenbegrenzung überschritten. by_parts- und by_color-Anfragen teilen sich zudem ein Prompt-Parsing-Limit von 12 Anfragen pro Minute und Konto.

  • Name
    503 - Service Unavailable
    Description

    Promptbasiertes Aufteilen (by_parts und by_color) ist vorübergehend nicht verfügbar. Versuchen Sie es später erneut, oder verwenden Sie mode: "auto", das davon nicht betroffen ist. Es werden keine Credits berechnet.

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

Einen Auto-Split-Task abrufen

Dieser Endpunkt ruft einen Auto-Split-Task anhand seiner ID ab.

Parameter

  • Name
    id
    Type
    path
    Description

    Die ID des abzurufenden Auto-Split-Tasks.

Rückgabe

Das Auto-Split-Task-Objekt.

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

Einen Auto-Split-Task löschen

Dieser Endpunkt löscht einen Auto Split-Task dauerhaft, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist nicht rückgängig zu machen.

Pfadparameter

  • Name
    id
    Type
    path
    Description

    Die ID des zu löschenden Auto Split-Tasks.

Task-Status

Ein Task, der sich noch im Status PENDING befindet, wird gelöscht, und die bei der Erstellung verbrauchten Credits werden erstattet.

Ein Task, der sich bereits IN_PROGRESS befindet, kann nicht gelöscht werden: Die Anfrage wird mit 409 Conflict abgelehnt, und der Task läuft weiter. Credits für einen Task, den der Worker bereits gestartet hat, sind nicht erstattungsfähig. Würde man ihn mitten im Lauf löschen, verlöre man sowohl die Credits als auch das Ergebnis. Warten Sie, bis er den Status SUCCEEDED, FAILED oder CANCELED erreicht, und löschen Sie ihn dann.

Ein Task in einem Endzustand (SUCCEEDED, FAILED oder CANCELED) wird ohne Erstattung gelöscht.

Rückgabe

Gibt bei Erfolg 200 OK zurück, oder 409 Conflict, wenn sich der Task IN_PROGRESS befindet.

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

Liste der Auto Split-Aufgaben

Dieser Endpunkt ermöglicht es Ihnen, eine Liste von Auto Split-Aufgaben abzurufen.

Parameter

Optionale Attribute

  • Name
    page_num
    Type
    integer
    Description

    Seitenzahl für die Paginierung. Beginnt bei und ist standardmäßig 1.

  • Name
    page_size
    Type
    integer
    Description

    Begrenzung der Seitengröße. Standardmäßig 10 Einträge. Maximal erlaubt sind 100 Einträge; größere Werte werden auf 100 begrenzt.

  • Name
    sort_by
    Type
    string
    Description

    Feld, nach dem sortiert werden soll. Verfügbare Werte:

    • +created_at: Sortierung nach Erstellungszeit in aufsteigender Reihenfolge.
    • -created_at: Sortierung nach Erstellungszeit in absteigender Reihenfolge.

Rückgabe

Gibt eine paginierte Liste von Auto Split-Aufgaben-Objekten zurück.

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

Einen Auto-Split-Task streamen

Dieser Endpunkt streamt Echtzeit-Updates für einen Auto-Split-Task mittels Server-Sent Events (SSE).

Parameter

  • Name
    id
    Type
    path
    Description

    Eindeutige Kennung des Auto-Split-Tasks, der gestreamt werden soll.

Rückgabewerte

Gibt einen Stream von The Auto Split Task Objects als Server-Sent Events zurück.

Jedes message-Event enthält das vollständige Task-Objekt, wie es von Einen Auto-Split-Task abrufen zurückgegeben wird, einschließlich consumed_credits, der Zeitstempel und prompt_ignored; solange der Task PENDING oder IN_PROGRESS ist, sind die Felder, die sich zwischen den Frames ändern, progress, status, started_at und preceding_tasks, während model_urls, thumbnail_url und part_count erscheinen, sobald der Status SUCCEEDED erreicht ist. Ein error-Event enthält nur status_code und message, daher sollte man anhand des Event-Namens unterscheiden, bevor man status ausliest.

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

Ein Auto-Split-Task enthält nur die unten aufgeführten Eigenschaften. Die Felder für den Generierungs-prompt, die andere Task-Objekte enthalten (name, object_prompt, texture_prompt und so weiter), die einzelne model_url sowie texture_urls werden bei einem Split nie befüllt und nicht zurückgegeben. Eigenschaften, die sich im Verlauf des Tasks füllen (thumbnail_url, model_urls, die Zeitstempel), sind immer vorhanden, bleiben aber leer, bis sie einen Wert haben – daher ändert sich der Satz an Schlüsseln zwischen PENDING und SUCCEEDED nicht.

  • Name
    id
    Type
    string
    Description

    Eindeutiger Bezeichner für den Task. Auch wenn wir als Implementierungsdetail eine k-sortierbare UUID für Task-IDs verwenden, sollten Sie keine Annahmen über das Format der ID treffen.

  • Name
    type
    Type
    string
    Description

    Typ des Tasks. Der Wert ist print-split.

  • Name
    model_urls
    Type
    object
    Description

    Herunterladbare URLs zum gesplitteten Modell, eine pro angeforderten Format. Formate, die Szenenobjekte unterstützen, behalten jedes Teil als separates Objekt; stl verschmilzt sie zu einem einzigen Festkörper. Die Eigenschaft für ein Format wird weggelassen, wenn das Format nicht angefordert wurde.

    • Name
      glb
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im GLB-Format.

    • Name
      obj
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im OBJ-Format.

    • Name
      fbx
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im FBX-Format.

    • Name
      stl
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im STL-Format. Alle Teile werden zu einem einzigen Festkörper verschmolzen; fordern Sie 3mf an, um separat auswählbare Teile zu erhalten.

    • Name
      usdz
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im USDZ-Format.

    • Name
      blend
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im Blender-Format.

    • Name
      3mf
      Type
      string
      Description

      Herunterladbare URL zum gesplitteten Modell im 3MF-Format.

  • Name
    thumbnail_url
    Type
    string
    Description

    Herunterladbare URL zu einer gerenderten Vorschau des gesplitteten Modells, wobei jedes Teil eine eigene Farbe hat, im angeforderten layout.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true, wenn der prompt einer by_parts- oder by_color-Anfrage keine Teile benannt hat, sodass Meshy das Modell stattdessen automatisch gesplittet hat – die Teilenamen im Ergebnis stammen dann von Meshy, nicht von Ihnen. Ab PENDING vorhanden. Entfällt bei auto-Tasks und immer dann, wenn dem prompt gefolgt wurde.

  • Name
    part_count
    Type
    integer
    Description

    Anzahl der druckbaren Teile, die der Split erzeugt hat. Formate, die Szenenobjekte unterstützen, enthalten ein Objekt pro Teil; stl verschmilzt sie zu einem einzigen Festkörper, wobei die Anzahl weiterhin die Teile angibt. Kollabierte Splitter, die die Segmentierung nicht in ein druckbares Teil umwandeln konnte, werden vor dem Export aus den Dateien entfernt und nicht mitgezählt.

  • Name
    progress
    Type
    integer
    Description

    Fortschritt des Tasks. Wenn der Task noch nicht gestartet wurde, ist diese Eigenschaft 0. Sobald der Task erfolgreich war, wird sie 100.

  • Name
    status
    Type
    string
    Description

    Status des Tasks. Mögliche Werte sind PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Die Anzahl der vorangehenden Tasks.

  • Name
    created_at
    Type
    timestamp
    Description

    Zeitstempel der Erstellung des Tasks, in Millisekunden.

  • Name
    started_at
    Type
    timestamp
    Description

    Zeitstempel des Starts des Tasks, in Millisekunden. Wenn der Task noch nicht gestartet wurde, ist diese Eigenschaft 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Zeitstempel des Abschlusses des Tasks, in Millisekunden. Wenn der Task noch nicht abgeschlossen ist, ist diese Eigenschaft 0.

  • Name
    task_error
    Type
    object
    Description

    Fehlerdetails für fehlgeschlagene Tasks. Die vollständige Referenz zum task_error-Objekt finden Sie unter Fehler. Wenn die Sicherheitsprüfung des Modellanbieters das Eingabemodell ablehnt, schlägt der Task mit task_error.type invalid_input und code provider_content_refused fehl. Siehe Fehler.

  • Name
    consumed_credits
    Type
    integer
    Description

    Die Anzahl der von diesem Task verbrauchten Credits. Immer vorhanden: 10, sobald der Task akzeptiert wurde, und 0 bei FAILED-Tasks, da die Belastung bei einem Fehlschlag erstattet wird. Auch das Löschen eines Tasks, während er noch PENDING ist, führt zu einer Erstattung.

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
}