Auto Split API
Teile ein 3D-Modell in separat druckbare Teile auf – automatisch, nach von dir benannten Teilen oder nach Farbregion – mit optionalen Verbindern; dünne Bereiche, die durch einen Schnitt entstehen, werden immer verstärkt, damit jedes Teil massiv gedruckt wird.
Auto Split unterstützt derzeit ausschließlich unstrukturierte Modelle ohne Textur. Erzeuge für Bild zu 3D und Multi-Bild zu 3D die Eingabe mit should_texture auf false gesetzt. Eine texturierte Eingabe wird mit 400 abgelehnt.
Auto Split-Task erstellen
Dieser Endpunkt erstellt einen neuen Auto Split-Task. Der Task schneidet das Modell eines vorherigen Tasks in separat druckbare Teile und gibt das segmentierte Modell zurück, wobei jedes Teil ein eigenes Objekt in der Datei ist.
Parameter
- Name
- input_task_id
- Type
- string
- Erforderlich
- Description
Die ID eines erfolgreichen Tasks, dessen Modell aufgeteilt werden soll. Unterstützte Task-Typen: Bild zu 3D, Multi-Bild zu 3D, Text zu 3D (Vorschau), Neuvernetzung, Konvertieren und Größe ändern. Der Task muss den Status
SUCCEEDEDhaben, und sein Modell muss mit Meshy 6 oder Meshy 7 generiert worden sein (ai_modelmeshy-6,meshy-7oderlatest). Low-Poly- und Smart Topology-Modelle (meshy-t2) werden nicht unterstützt.
- Name
- mode
- Type
- string
- Standard auto
- Description
Wie das Modell in Teile aufgeteilt wird.
Verfügbare Werte:
auto: Meshy wählt die Schnitte.promptwird ignoriert.by_parts: Schneidet entlang der strukturellen Teile, die Sie inpromptbenennen, wie Kopf, Arme und Rumpf.by_color: Schneidet entlang der Farbbereiche, die Sie inpromptbenennen. Erfordert eine Eingabe, die aus einem hochgeladenen Bild generiert wurde (Bild zu 3D oder Multi-Bild zu 3D); andere Eingaben werden mit400abgelehnt.
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 Teilnamen, also benennen Sie die Stücke, anstatt das Modell zu beschreiben — zum Beispiel
split into the figure and the baseoderhead, torso, left arm, right arm, legs. Bis zu 600 Zeichen. Zwei Fehlerarten: Eine Beschreibung, die wie eine Aufteilung klingt, aber weniger als zwei Teile benennt (zum Beispielsplit into individual parts), wird mit400abgelehnt und nichts wird berechnet; eine Beschreibung, die Meshy überhaupt nicht lesen kann, fällt aufautozurück, der Task läuft trotzdem und wird berechnet, und seine Antwort enthältprompt_ignored: true.
- Name
- target_formats
- Type
- array
- Standard ["glb"]
- Description
Formate, in denen das aufgeteilte Modell exportiert werden soll. Jedes Teil ist ein separates Objekt in jedem Format.
glbwird immer erzeugt und inmodel_urlszurückgegeben; listen Sie zusätzlich alle weiteren gewünschten Formate auf.Verfügbare Werte:
glb,obj,fbx,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 Ausgangsmodell waren.on_plate: Die Teile werden flach ausgelegt und auf der Druckplatte verteilt, bereit zum Slicen — dieselbe Anordnung wie die On Plate-Ansicht der Web-App.
In beiden Layouts enthalten die exportierten Dateien pro Teil genau ein Objekt und sonst nichts: Ein zusammengefallener Splitter oder ein punktartiges Reststück eines Schnitts wird vor dem Export entfernt, sodass jedes Objekt, das Sie in der Datei finden, druckbar ist.
- Name
- connectors
- Type
- boolean
- Standard false
- Description
Fügt an jedem Schnitt Zapfen-Verbinder (mortise-and-tenon) hinzu, damit die gedruckten Teile zusammenpassen.
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.1bis0.8.
- Name
- connector_height
- Type
- number
- Standard 0.1
- Description
Wie weit der Verbinder von der Schnittfläche absteht, relativ zur Schnittfläche.
Gültiger Bereich:
0.1bis0.8.
Rückgabewerte
Die result-Eigenschaft der Antwort enthält die id des neu erstellten Auto Split-Tasks.
Fehlerarten
- Name
400 - Bad Request- Description
Die Anfrage war nicht akzeptabel. Häufige Ursachen:
- Fehlender prompt:
promptist erforderlich, wennmodeby_partsoderby_colorist. - Prompt benennt weniger als zwei Teile:
by_parts/by_colorbenötigt mindestens zwei benannte Teile (zum Beispielhead, torso, base); eine allgemeine Anweisung wiesplit into individual partswird abgelehnt. Es wird nichts berechnet. - Nicht unterstützter Eingabe-Task: Die
input_task_idmuss sich auf einen erfolgreichen Task eines unterstützten Typs beziehen, der mit Meshy 6 oder Meshy 7 generiert wurde. - Texturierte Eingabe: Das Eingabemodell hat Texturen. Derzeit werden nur unt exturierte Modelle unterstützt.
- Kein Referenzbild:
by_colorerfordert eine Eingabe, die aus einem hochgeladenen Bild generiert wurde. - Nicht unterstütztes Format:
target_formatsenthältstl. - Verbinder außerhalb des Bereichs:
connector_sizeoderconnector_heightliegt außerhalb von0.1bis0.8.
- Fehlender prompt:
- Name
401 - Unauthorized- Description
Die Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.
- Name
402 - Payment Required- Description
Unzureichende Credits, um diesen Task auszuführen.
- Name
404 - Not Found- Description
Die
input_task_idexistiert nicht oder gehört nicht zu Ihrem Konto.
- Name
429 - Too Many Requests- Description
Sie haben Ihre Ratenbegrenzung überschritten.
by_parts- undby_color-Anfragen teilen sich zusätzlich ein Prompt-Parsing-Limit von 12 Anfragen pro Minute und Konto.
- Name
503 - Service Unavailable- Description
Prompt-basierte Aufteilung (
by_partsundby_color) ist vorübergehend nicht verfügbar. Versuchen Sie es später erneut, oder verwenden Siemode: "auto", das davon nicht betroffen ist. Es wird nichts berechnet.
Request
# Simple request: let Meshy choose the cuts
curl https://api.meshy.cn/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.cn/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"
}
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ückgabewerte
Das Auto Split-Task-Objekt.
Request
curl https://api.meshy.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}
Eine Auto-Split-Aufgabe löschen
Dieser Endpunkt löscht eine Auto-Split-Aufgabe dauerhaft, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist unumkehrbar.
Pfadparameter
- Name
- id
- Type
- path
- Description
Die ID der zu löschenden Auto-Split-Aufgabe.
Rückgabewerte
Gibt bei Erfolg 200 OK zurück.
Request
curl --request DELETE \
--url https://api.meshy.cn/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
Dieser Endpunkt ermöglicht es Ihnen, eine Liste von Auto Split-Aufgaben abzurufen.
Parameter
Optionale Attribute
- Name
- page_num
- Type
- integer
- Description
Seitennummer für die Paginierung. Beginnt bei und ist standardmäßig
1.
- Name
- page_size
- Type
- integer
- Description
Begrenzung der Seitengröße. Standardmäßig
10Elemente. Maximal zulässig sind100Elemente; größere Werte werden auf100begrenzt.
- 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ückgabewerte
Gibt eine paginierte Liste der Auto Split Task-Objekte zurück.
Request
curl https://api.meshy.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}
]
Streamen eines Auto-Split-Tasks
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ückgabe
Gibt einen Stream von Auto-Split-Task-Objekten als Server-Sent Events zurück.
Jedes message-Ereignis enthält das vollständige Task-Objekt, wie es von Abrufen eines Auto-Split-Tasks zurückgegeben wird, einschließlich consumed_credits, der Zeitstempel und prompt_ignored; solange der Task PENDING oder IN_PROGRESS ist, ändern sich zwischen den Frames die Felder progress, status, started_at und preceding_tasks, und model_urls, thumbnail_url, part_count sowie parts erscheinen, sobald der Status SUCCEEDED erreicht wird. Ein error-Ereignis enthält nur status_code und message. Verzweigen Sie daher anhand des Ereignisnamens, bevor Sie status lesen.
Request
curl -N https://api.meshy.cn/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.cn/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}
Das Auto-Split-Task-Objekt
Ein Auto-Split-Task enthält ausschließlich 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), das einzelne model_url sowie texture_urls werden bei einem Split niemals befüllt und nicht zurückgegeben. Eigenschaften, die sich während der Ausführung des Tasks füllen (thumbnail_url, model_urls, die Zeitstempel), sind immer vorhanden, bis sie einen Wert erhalten leer, sodass sich die Menge der Schlüssel zwischen PENDING und SUCCEEDED nicht ändert.
- Name
- id
- Type
- string
- Description
Eindeutige Kennung für den Task. Auch wenn wir als Implementierungsdetail eine k-sortierbare UUID für Task-IDs verwenden, solltest du 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 aufgeteilten Modell, eine pro angeforderten Format. Jedes Teil ist ein eigenes Objekt in der Datei. Die Eigenschaft für ein Format wird ausgelassen, wenn das Format nicht angefordert wurde.
- Name
glb- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im GLB-Format.
- Name
obj- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im OBJ-Format.
- Name
fbx- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im FBX-Format.
- Name
usdz- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im USDZ-Format.
- Name
blend- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im Blender-Format.
- Name
3mf- Type
- string
- Description
Herunterladbare URL zum aufgeteilten Modell im 3MF-Format.
- Name
- thumbnail_url
- Type
- string
- Description
Herunterladbare URL zu einer gerenderten Vorschau des aufgeteilten Modells, mit jedem Teil in einer eigenen Farbe, im angeforderten
layout.
- Name
- prompt_ignored
- Type
- boolean
- Description
true, wenn imprompteinerby_parts- oderby_color-Anfrage keine Teile benannt wurden und Meshy das Modell deshalb stattdessen automatisch aufgeteilt hat — die Teilnamen im Ergebnis stammen dann von Meshy, nicht von dir. Vorhanden abPENDING. Wird beiauto-Tasks und immer dann ausgelassen, wenn der Prompt befolgt wurde.
- Name
- part_count
- Type
- integer
- Description
Anzahl der druckbaren Teile im aufgeteilten Modell — eines pro Objekt in den exportierten Dateien. 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 ist, ist diese Eigenschaft
0. Sobald der Task erfolgreich war, wird sie100.
- 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 vorausgehenden Tasks.
Der Wert dieses Felds ist nur dann relevant, wenn der Task-Status
PENDINGist.
- Name
- created_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task erstellt wurde, in Millisekunden.
- Name
- started_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task gestartet wurde, in Millisekunden. Wenn der Task noch nicht gestartet ist, ist diese Eigenschaft
0.
- Name
- finished_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task beendet wurde, in Millisekunden. Wenn der Task noch nicht beendet ist, ist diese Eigenschaft
0.
- Name
- task_error
- Type
- object
- Description
Fehlerdetails für fehlgeschlagene Tasks. Siehe Fehler für die vollständige Referenz des
task_error-Objekts.
- Name
- consumed_credits
- Type
- integer
- Description
Die Anzahl der von diesem Task verbrauchten Credits. Immer vorhanden:
10, sobald der Task angenommen wurde, und0beiFAILED-Tasks, da die Belastung bei einem Fehlschlag rückerstattet wird. Das Löschen eines Tasks, während er sich noch im StatusPENDINGbefindet, führt ebenfalls zu einer Rückerstattung.
The Auto Split Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}