API Auto Split
Dividi un modello 3D in parti stampabili separatamente — automaticamente, in base alle parti che nomini, o per regione di colore — con connettori opzionali; le regioni sottili lasciate da un taglio vengono sempre rinforzate in modo che ogni parte venga stampata solida.
Il risultato della suddivisione non conserva la texture di input. Auto Split accetta input con texture, quindi non è necessario rigenerare il modello con should_texture: false. Ricostruisce le parti tagliate e assegna a ciascuna un colore dei vertici uniforme; nessuna mappa di texture di input viene trasferita in alcun formato esportato.
Create an Auto Split Task
Questo endpoint crea un nuovo task Auto Split. Il task taglia il modello di un task precedente in parti stampabili separatamente e restituisce il modello segmentato, con ogni parte come proprio oggetto nel file.
Il task viene eseguito in background. Per la durata tipica, consulta Tempi di elaborazione.
Parametri
- Name
- input_task_id
- Type
- string
- Obbligatorio
- Description
L'ID di un task riuscito il cui modello deve essere diviso. Tipi di task supportati: Immagine in 3D, Multi-immagine in 3D, Testo in 3D (anteprima), Remesh, Converti e Ridimensiona. Il task deve avere stato
SUCCEEDEDe il suo modello deve essere stato generato con Meshy 6 o Meshy 7 (ai_modelmeshy-6,meshy-7,meshy-7.1, olatest). I modelli low-poly e Smart Topology (meshy-t2,meshy-t2.5) non sono supportati. Un modello con texture è accettato, ma la sua texture non viene riportata nel risultato.
- Name
- mode
- Type
- string
- predefinito auto
- Description
Come il modello viene diviso in parti.
Valori disponibili:
auto: Meshy sceglie i tagli.promptviene ignorato.by_parts: Taglia lungo le parti strutturali indicate nelprompt, come testa, braccia e torso.by_color: Taglia lungo le regioni di colore indicate nelprompt. Richiede un input generato da un'immagine caricata (Immagine in 3D o Multi-immagine in 3D); altri input vengono rifiutati con400. I confini delle regioni di colore derivano dall'immagine sorgente, non dalla texture del modello di input. Per Multi-immagine in 3D, Auto Split utilizza la prima immagine sorgente.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Obbligatorio
- Description
Descrive le parti in cui dividere, in qualsiasi lingua. Meshy legge da 1 a 10 nomi di parti da essa, quindi nomina i pezzi invece di descrivere il modello, ad esempio
split into the figure and the base, oppurehead, torso, left arm, right arm, legs. Nominare una singola parte va bene: tutto ciò che non hai nominato diventa una parte rimanente, quindithe headdivide il modello in testa e resto, come nell'app web. Fino a 600 caratteri. Una descrizione che chiede di non effettuare alcuna divisione, o che nomina più di 10 parti, viene rifiutata con400e non viene addebitato nulla. Se Meshy non riesce a leggere alcun nome di parte dalla descrizione, divide invece lungo le parti che identifica nell'immagine di riferimento del modello, nel mode scelto: il task viene comunque eseguito ed addebitato, e includeprompt_ignored: true. Se il modello non ha un'immagine di riferimento, o Meshy trova meno di due parti in essa, la richiesta viene invece rifiutata con400e non viene addebitato nulla.
- Name
- target_formats
- Type
- array
- predefinito ["glb"]
- Description
Formati in cui esportare il modello diviso. I formati che supportano oggetti scena (
glb,obj,fbx,usdz,blend,3mf) portano ogni parte come oggetto separato;stlnon ha il concetto di oggetti separati, quindi fonde ogni parte in un unico solido disposto secondolayout(richiedi3mfper parti selezionabili separatamente in uno slicer).glbviene sempre prodotto e restituito inmodel_urls; elenca qualsiasi altro formato desiderato in aggiunta.Valori disponibili:
glb,obj,fbx,stl,usdz,blend,3mf.
- Name
- layout
- Type
- string
- predefinito assembled
- Description
Come le parti sono disposte in ogni formato di output, e nella miniatura.
Valori disponibili:
assembled: Le parti rimangono dove si trovavano nel modello sorgente.on_plate: Le parti vengono adagiate piatte e distribuite sul piano di stampa, pronte per lo slicing — la stessa disposizione della vista On Plate dell'app web.
In entrambi i layout, una scheggia collassata o un pezzo simile a un punto risultante da un taglio viene rimosso prima dell'esportazione, così ogni parte ottenuta è stampabile. I formati che supportano oggetti scena contengono un oggetto per parte;
stlli fonde in un unico solido.
- Name
- connectors
- Type
- boolean
- predefinito false
- Description
Aggiunge connettori a tenone e mortasa a ogni taglio in modo che le parti stampate si incastrino tra loro.
connectors = true- Name
- connector_type
- Type
- string
- predefinito cube
- Description
La forma del connettore su ogni superficie di taglio.
Valori disponibili:
cube,cylinder.
- Name
- connector_size
- Type
- number
- predefinito 0.5
- Description
Dimensione del connettore relativa alla superficie di taglio.
Intervallo valido: da
0.1a0.8.
- Name
- connector_height
- Type
- number
- predefinito 0.1
- Description
Quanto il connettore si estende dalla superficie di taglio, relativamente alla superficie di taglio.
Intervallo valido: da
0.1a0.8.
Valori restituiti
La proprietà result della risposta contiene l'id del nuovo task Auto Split creato.
Modalità di errore
- Name
400 - Bad Request- Description
La richiesta non era accettabile. Cause comuni:
- Prompt mancante:
promptè obbligatorio quandomodeèby_partsoby_color. - Il prompt non descrive alcuna divisione, oppure indica troppe parti:
by_parts/by_coloraccetta da 1 a 10 pezzi nominati. Una descrizione che chiede di mantenere il modello in un unico pezzo, o che nomina più di 10 parti, viene rifiutata. Non viene addebitato nulla. - Task di input non supportato:
input_task_iddeve fare riferimento a un task riuscito di un tipo supportato, generato con Meshy 6 o Meshy 7. - Nessuna immagine di riferimento:
by_colorrichiede un input generato da un'immagine caricata. - Connettore fuori intervallo:
connector_sizeoconnector_heightè fuori dall'intervallo0.1-0.8.
- Prompt mancante:
- Name
401 - Unauthorized- Description
Autenticazione non riuscita. Verifica la tua chiave API.
- Name
402 - Payment Required- Description
Crediti insufficienti per eseguire questo task.
- Name
404 - Not Found- Description
input_task_idnon esiste o non appartiene al tuo account.
- Name
429 - Too Many Requests- Description
Hai superato il tuo limite di frequenza. Le richieste
by_partseby_colorcondividono inoltre un limite di analisi del prompt di 12 richieste al minuto per account.
- Name
503 - Service Unavailable- Description
La divisione basata su prompt (
by_partseby_color) è temporaneamente non disponibile. Riprova più tardi, oppure usamode: "auto", che non è interessato dal problema. Non viene addebitato nulla.
Request
# 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"
}
Recupera un task di Auto Split
Questo endpoint recupera un task di Auto Split tramite il suo ID.
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task di Auto Split da recuperare.
Restituisce
L'oggetto Task di Auto Split.
Request
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
}
Elimina un'attività di Auto Split
Questo endpoint elimina definitivamente un'attività di Auto Split, inclusi tutti i modelli e i dati associati. Questa azione è irreversibile.
Parametri del percorso
- Name
- id
- Type
- path
- Description
L'ID dell'attività di Auto Split da eliminare.
Stato dell'attività
Un'attività ancora in stato PENDING viene eliminata e i crediti consumati
al momento della creazione vengono rimborsati.
Un'attività già IN_PROGRESS non può essere eliminata: la richiesta viene
rifiutata con 409 Conflict e l'attività continua a essere eseguita. I
crediti per un'attività che il worker ha già iniziato a elaborare non sono
rimborsabili, quindi eliminarla a metà esecuzione ti farebbe perdere sia i
crediti sia il risultato. Attendi che raggiunga lo stato SUCCEEDED,
FAILED o CANCELED, quindi eliminala.
Un'attività in uno stato finale (SUCCEEDED, FAILED o CANCELED) viene
eliminata senza rimborso.
Restituisce
Restituisce 200 OK in caso di successo, oppure 409 Conflict quando
l'attività è IN_PROGRESS.
Request
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."
}
Elenca attività Auto Split
Questo endpoint consente di recuperare un elenco di attività Auto Split.
Parametri
Attributi opzionali
- Name
- page_num
- Type
- integer
- Description
Numero di pagina per la paginazione. Inizia e ha come valore predefinito
1.
- Name
- page_size
- Type
- integer
- Description
Limite della dimensione della pagina. Il valore predefinito è
10elementi. Il massimo consentito è100elementi; valori superiori vengono limitati a100.
- Name
- sort_by
- Type
- string
- Description
Campo in base al quale ordinare. Valori disponibili:
+created_at: Ordina per data di creazione in ordine crescente.-created_at: Ordina per data di creazione in ordine decrescente.
Restituisce
Restituisce un elenco paginato di The Auto Split Task Objects.
Request
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
}
]
Stream di un task di Auto Split
Questo endpoint trasmette in streaming gli aggiornamenti in tempo reale di un task di Auto Split utilizzando Server-Sent Events (SSE).
Parametri
- Name
- id
- Type
- path
- Description
Identificatore univoco del task di Auto Split da trasmettere in streaming.
Restituisce
Restituisce uno stream di The Auto Split Task Objects come Server-Sent Events.
Ogni evento message trasporta l'oggetto task completo come restituito da Retrieve an Auto Split Task, inclusi consumed_credits, i timestamp e prompt_ignored; mentre il task è PENDING o IN_PROGRESS i campi che cambiano tra un frame e l'altro sono progress, status, started_at e preceding_tasks, mentre model_urls, thumbnail_url e part_count compaiono una volta raggiunto lo stato SUCCEEDED. Un evento error trasporta solo status_code e message, quindi distingui in base al nome dell'evento prima di leggere status.
Request
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'oggetto Auto Split Task
Un task Auto Split contiene solo le proprietà seguenti. I campi relativi al prompt di generazione presenti in altri oggetti task (name, object_prompt, texture_prompt e simili), il singolo model_url e texture_urls non vengono mai valorizzati per uno split e non vengono restituiti. Le proprietà che si popolano man mano che il task procede (thumbnail_url, model_urls, i timestamp) sono sempre presenti, vuote finché non hanno un valore, quindi l'insieme di chiavi non cambia tra PENDING e SUCCEEDED.
- Name
- id
- Type
- string
- Description
Identificatore univoco del task. Sebbene utilizziamo uno UUID k-sortable come dettaglio implementativo per gli id dei task, non dovresti fare nessuna assunzione sul formato dell'id.
- Name
- type
- Type
- string
- Description
Tipo del task. Il valore è
print-split.
- Name
- model_urls
- Type
- object
- Description
URL scaricabili del modello suddiviso, uno per ciascun formato richiesto. I formati che supportano oggetti scena mantengono ogni parte come oggetto separato;
stlle fonde in un unico solido. La proprietà di un formato verrà omessa se il formato non è stato richiesto.- Name
glb- Type
- string
- Description
URL scaricabile del modello suddiviso in formato GLB.
- Name
obj- Type
- string
- Description
URL scaricabile del modello suddiviso in formato OBJ.
- Name
fbx- Type
- string
- Description
URL scaricabile del modello suddiviso in formato FBX.
- Name
stl- Type
- string
- Description
URL scaricabile del modello suddiviso in formato STL. Tutte le parti sono fuse in un unico solido; richiedi
3mfper parti selezionabili separatamente.
- Name
usdz- Type
- string
- Description
URL scaricabile del modello suddiviso in formato USDZ.
- Name
blend- Type
- string
- Description
URL scaricabile del modello suddiviso in formato Blender.
- Name
3mf- Type
- string
- Description
URL scaricabile del modello suddiviso in formato 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL scaricabile di un'anteprima renderizzata del modello suddiviso, con ciascuna parte in un colore distinto, nel
layoutrichiesto.
- Name
- prompt_ignored
- Type
- boolean
- Description
truequando ilpromptdi una richiestaby_partsoby_colornon ha indicato alcuna parte, per cui Meshy ha suddiviso il modello automaticamente — i nomi delle parti nel risultato sono quelli di Meshy, non i tuoi. Presente a partire daPENDING. Omesso per i taskautoe ogni volta che il prompt è stato seguito.
- Name
- part_count
- Type
- integer
- Description
Numero di parti stampabili prodotte dallo split. I formati che supportano oggetti scena contengono un oggetto per parte;
stlle fonde in un unico solido, e il conteggio continua a riportare il numero delle parti. Le schegge collassate che la segmentazione non è riuscita a trasformare in un pezzo stampabile vengono rimosse dai file prima dell'esportazione e non vengono conteggiate.
- Name
- progress
- Type
- integer
- Description
Avanzamento del task. Se il task non è ancora iniziato, questa proprietà sarà
0. Una volta che il task è completato con successo, diventerà100.
- Name
- status
- Type
- string
- Description
Stato del task. I valori possibili sono uno tra
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
Il numero di task precedenti.
Il valore di questo campo è significativo solo se lo stato del task è
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Timestamp di quando il task è stato creato, in millisecondi.
- Name
- started_at
- Type
- timestamp
- Description
Timestamp di quando il task è stato avviato, in millisecondi. Se il task non è ancora iniziato, questa proprietà sarà
0.
- Name
- finished_at
- Type
- timestamp
- Description
Timestamp di quando il task è stato completato, in millisecondi. Se il task non è ancora terminato, questa proprietà sarà
0.
- Name
- task_error
- Type
- object
- Description
Dettagli dell'errore per i task falliti. Consulta Errori per il riferimento completo dell'oggetto
task_error. Se il controllo di sicurezza del fornitore del modello rifiuta il modello in input, il task fallisce contask_error.typeinvalid_inputecodeprovider_content_refused. Consulta Errori.
- Name
- consumed_credits
- Type
- integer
- Description
Il numero di crediti consumati da questo task. Sempre presente:
10una volta che il task è stato accettato, e0per i taskFAILEDperché l'addebito viene rimborsato in caso di fallimento. Anche eliminare un task mentre è ancoraPENDINGne comporta il rimborso.
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
}