Auto Split API
Podziel model 3D na części, które można wydrukować osobno — automatycznie, według nazwanych przez Ciebie części lub według regionu koloru — z opcjonalnymi łącznikami; cienkie obszary pozostałe po przecięciu są zawsze wzmacniane, aby każda część drukowała się jako pełna.
Wynik podziału nie zachowuje tekstury wejściowej. Auto Split akceptuje dane wejściowe z teksturą, więc nie musisz ponownie generować modelu z should_texture: false. Odbudowuje przecięte części i przypisuje każdej z nich płaski kolor wierzchołków; żadna wejściowa mapa tekstury nie jest przenoszona do żadnego eksportowanego formatu.
Utwórz zadanie Auto Split
Ten punkt końcowy tworzy nowe zadanie Auto Split. Zadanie tnie model z poprzedniego zadania na osobno drukowalne części i zwraca podzielony model, w którym każda część jest osobnym obiektem w pliku.
Parametry
- Name
- input_task_id
- Type
- string
- Wymagane
- Description
ID zakończonego powodzeniem zadania, którego model ma zostać podzielony. Obsługiwane typy zadań: Obraz na 3D, Wiele obrazów na 3D, Tekst na 3D (podgląd), Remesh, Konwertuj i Zmień rozmiar. Zadanie musi mieć status
SUCCEEDED, a jego model musi zostać wygenerowany za pomocą Meshy 6 lub Meshy 7 (ai_modelmeshy-6,meshy-7,meshy-7.1lublatest). Modele low-poly oraz Smart Topology (meshy-t2) nie są obsługiwane. Model z teksturą jest akceptowany, ale jego tekstura nie jest przenoszona do wyniku.
- Name
- mode
- Type
- string
- domyślne auto
- Description
Sposób podziału modelu na części.
Dostępne wartości:
auto: Meshy samodzielnie wybiera miejsca cięć.promptjest ignorowany.by_parts: Cięcie wzdłuż strukturalnych części nazwanych wprompt, takich jak głowa, ręce i tułów.by_color: Cięcie wzdłuż obszarów kolorystycznych nazwanych wprompt. Wymaga danych wejściowych wygenerowanych z przesłanego obrazu (Obraz na 3D lub Wiele obrazów na 3D); inne dane wejściowe są odrzucane z kodem400. Granice obszarów kolorystycznych pochodzą z obrazu źródłowego, a nie z tekstury modelu wejściowego. W przypadku Wiele obrazów na 3D, Auto Split używa pierwszego obrazu źródłowego.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Wymagane
- Description
Opisuje części, na jakie ma zostać podzielony model, w dowolnym języku. Meshy odczytuje z niego od 1 do 10 nazw części, więc nazywaj fragmenty, zamiast opisywać model — na przykład
split into the figure and the base, albohead, torso, left arm, right arm, legs. Nazwanie tylko jednej części jest w porządku: wszystko, czego nie nazwałeś, staje się jedną pozostałą częścią, więcthe headdzieli model na głowę i resztę, tak jak w aplikacji webowej. Maksymalnie 600 znaków. Dwa tryby niepowodzenia: opis, który w ogóle nie prosi o podział, lub nazywa więcej niż 10 części, jest odrzucany z kodem400i nic nie zostaje naliczone; opis, którego Meshy w ogóle nie potrafi odczytać, przełącza się naauto, zadanie mimo to jest wykonywane i naliczane, a jego odpowiedź zawieraprompt_ignored: true.
- Name
- target_formats
- Type
- array
- domyślne ["glb"]
- Description
Formaty, w jakich ma zostać wyeksportowany podzielony model. Formaty obsługujące obiekty sceny (
glb,obj,fbx,usdz,blend,3mf) przenoszą każdą część jako osobny obiekt;stlnie ma pojęcia osobnych obiektów, więc łączy każdą część w jedną bryłę ułożoną zgodnie zlayout(aby uzyskać osobno wybieralne części w slicerze, poproś o3mf).glbjest zawsze generowany i zwracany wmodel_urls; wymień dodatkowo dowolne inne formaty, których potrzebujesz.Dostępne wartości:
glb,obj,fbx,stl,usdz,blend,3mf.
- Name
- layout
- Type
- string
- domyślne assembled
- Description
Sposób ułożenia części w każdym formacie wyjściowym oraz na miniaturze.
Dostępne wartości:
assembled: Części pozostają tam, gdzie znajdowały się w modelu źródłowym.on_plate: Części są rozłożone płasko i rozmieszczone na stole roboczym, gotowe do cięcia w slicerze — tak samo jak w widoku On Plate aplikacji webowej.
W obu układach zapadnięty, cienki jak papier lub przypominający punkt fragment pozostały po cięciu jest usuwany przed eksportem, dzięki czemu każda otrzymana część nadaje się do druku. Formaty obsługujące obiekty sceny zawierają jeden obiekt na część;
stlłączy je w jedną bryłę.
- Name
- connectors
- Type
- boolean
- domyślne false
- Description
Dodaje łączniki typu czop-wpust na każdym cięciu, dzięki czemu wydrukowane części do siebie pasują.
connectors = true- Name
- connector_type
- Type
- string
- domyślne cube
- Description
Kształt łącznika na każdej powierzchni cięcia.
Dostępne wartości:
cube,cylinder.
- Name
- connector_size
- Type
- number
- domyślne 0.5
- Description
Rozmiar łącznika względem powierzchni cięcia.
Prawidłowy zakres: od
0.1do0.8.
- Name
- connector_height
- Type
- number
- domyślne 0.1
- Description
Jak daleko łącznik wystaje od powierzchni cięcia, względem powierzchni cięcia.
Prawidłowy zakres: od
0.1do0.8.
Zwracane wartości
Właściwość result odpowiedzi zawiera id nowo utworzonego zadania Auto Split.
Tryby niepowodzenia
- Name
400 - Bad Request- Description
Żądanie było niepoprawne. Typowe przyczyny:
- Brak promptu:
promptjest wymagany, gdymodema wartośćby_partslubby_color. - Prompt nie opisuje podziału albo opisuje zbyt wiele części:
by_parts/by_colorakceptuje od 1 do 10 nazwanych fragmentów. Opis, który prosi o pozostawienie modelu w jednym kawałku, lub nazywa więcej niż 10 części, jest odrzucany. Nic nie zostaje naliczone. - Nieobsługiwane zadanie wejściowe:
input_task_idmusi odnosić się do zakończonego powodzeniem zadania obsługiwanego typu, wygenerowanego za pomocą Meshy 6 lub Meshy 7. - Brak obrazu referencyjnego:
by_colorwymaga danych wejściowych wygenerowanych z przesłanego obrazu. - Łącznik poza zakresem:
connector_sizelubconnector_heightznajduje się poza zakresem od0.1do0.8.
- Brak promptu:
- Name
401 - Unauthorized- Description
Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.
- Name
402 - Payment Required- Description
Niewystarczająca liczba kredytów do wykonania tego zadania.
- Name
404 - Not Found- Description
input_task_idnie istnieje lub nie należy do Twojego konta.
- Name
429 - Too Many Requests- Description
Przekroczono limit szybkości. Żądania
by_partsiby_colordzielą również limit analizy promptów wynoszący 12 żądań na minutę na konto.
- Name
503 - Service Unavailable- Description
Podział na podstawie promptu (
by_partsiby_color) jest tymczasowo niedostępny. Spróbuj ponownie później lub użyjmode: "auto", który nie jest tym dotknięty. Nic nie zostaje naliczone.
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"
}
Pobierz zadanie Auto Split
Ten punkt końcowy pobiera zadanie Auto Split na podstawie jego ID.
Parametry
- Name
- id
- Type
- path
- Description
ID zadania Auto Split, które ma zostać pobrane.
Zwraca
Obiekt zadania 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
}
Usuwanie zadania Auto Split
Ten punkt końcowy trwale usuwa zadanie Auto Split, w tym wszystkie powiązane modele i dane. Ta operacja jest nieodwracalna.
Parametry ścieżki
- Name
- id
- Type
- path
- Description
ID zadania Auto Split do usunięcia.
Status zadania
Zadanie, które nadal ma status PENDING, zostaje usunięte, a kredyty zużyte w momencie jego utworzenia są zwracane.
Zadania, które jest już IN_PROGRESS, nie można usunąć: żądanie zostaje odrzucone z kodem 409 Conflict, a zadanie kontynuuje działanie. Kredyty za zadanie, które worker już rozpoczął, nie podlegają zwrotowi, dlatego usunięcie go w trakcie wykonywania kosztowałoby Cię zarówno kredyty, jak i wynik. Poczekaj, aż osiągnie status SUCCEEDED, FAILED lub CANCELED, a następnie je usuń.
Zadanie w stanie końcowym (SUCCEEDED, FAILED lub CANCELED) zostaje usunięte bez zwrotu kredytów.
Zwraca
Zwraca 200 OK w przypadku powodzenia lub 409 Conflict, gdy zadanie ma status 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."
}
Lista zadań Auto Split
Ten punkt końcowy umożliwia pobranie listy zadań Auto Split.
Parametry
Atrybuty opcjonalne
- Name
- page_num
- Type
- integer
- Description
Numer strony do stronicowania. Zaczyna się i domyślnie wynosi
1.
- Name
- page_size
- Type
- integer
- Description
Limit rozmiaru strony. Domyślnie
10elementów. Maksymalna dozwolona wartość to100elementów; większe wartości są ograniczane do100.
- Name
- sort_by
- Type
- string
- Description
Pole, według którego ma być sortowane. Dostępne wartości:
+created_at: Sortowanie według czasu utworzenia rosnąco.-created_at: Sortowanie według czasu utworzenia malejąco.
Zwraca
Zwraca listę stronicowaną obiektów 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
}
]
Przesyłaj strumieniowo zadanie Auto Split
Ten punkt końcowy przesyła strumieniowo aktualizacje w czasie rzeczywistym dla zadania Auto Split przy użyciu Server-Sent Events (SSE).
Parametry
- Name
- id
- Type
- path
- Description
Unikalny identyfikator zadania Auto Split, które ma być przesyłane strumieniowo.
Zwraca
Zwraca strumień obiektów zadania Auto Split jako Server-Sent Events.
Każde zdarzenie message zawiera pełny obiekt zadania, taki jak zwracany przez Pobierz zadanie Auto Split, w tym consumed_credits, znaczniki czasu i prompt_ignored; gdy zadanie ma status PENDING lub IN_PROGRESS, pola, które zmieniają się między klatkami, to progress, status, started_at i preceding_tasks, natomiast model_urls, thumbnail_url i part_count pojawiają się po osiągnięciu statusu SUCCEEDED. Zdarzenie error zawiera wyłącznie status_code i message, dlatego przed odczytaniem status należy rozgałęzić logikę na podstawie nazwy zdarzenia.
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
}
The Auto Split Task Object
Zadanie Auto Split zawiera tylko poniższe właściwości. Pola dotyczące promptu generowania, które zawierają inne obiekty zadań (name, object_prompt, texture_prompt i tak dalej), pojedyncze model_url oraz texture_urls nigdy nie są wypełniane dla podziału i nie są zwracane. Właściwości, które wypełniają się w trakcie wykonywania zadania (thumbnail_url, model_urls, znaczniki czasu), są zawsze obecne, puste do momentu uzyskania wartości, więc zestaw kluczy nie zmienia się między PENDING i SUCCEEDED.
- Name
- id
- Type
- string
- Description
Unikalny identyfikator zadania. Choć jako szczegół implementacyjny używamy dla identyfikatorów zadań UUID z możliwością sortowania k, nie powinieneś przyjmować żadnych założeń co do formatu identyfikatora.
- Name
- type
- Type
- string
- Description
Typ zadania. Wartość to
print-split.
- Name
- model_urls
- Type
- object
- Description
Adresy URL do pobrania podzielonego modelu, jeden dla każdego żądanego formatu. Formaty obsługujące obiekty scen zachowują każdą część jako osobny obiekt;
stlscala je w jedno jednolite ciało. Właściwość dla formatu zostanie pominięta, jeśli format nie był żądany.- Name
glb- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie GLB.
- Name
obj- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie OBJ.
- Name
fbx- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie FBX.
- Name
stl- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie STL. Wszystkie części są scalone w jedno jednolite ciało; jeśli potrzebujesz osobno wybieralnych części, zażądaj
3mf.
- Name
usdz- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie USDZ.
- Name
blend- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie Blender.
- Name
3mf- Type
- string
- Description
Adres URL do pobrania podzielonego modelu w formacie 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
Adres URL do pobrania renderowanego podglądu podzielonego modelu, z każdą częścią w odrębnym kolorze, w żądanym
layout.
- Name
- prompt_ignored
- Type
- boolean
- Description
true, gdypromptżądaniaby_partslubby_colornie wskazał żadnych części, więc Meshy podzieliło model automatycznie — nazwy części w wyniku pochodzą od Meshy, nie od Ciebie. Obecne odPENDING. Pomijane dla zadańautooraz gdy prompt został uwzględniony.
- Name
- part_count
- Type
- integer
- Description
Liczba drukowalnych części wygenerowanych przez podział. Formaty obsługujące obiekty scen zawierają jeden obiekt na część;
stlscala je w jedno jednolite ciało, a liczba wciąż odnosi się do liczby części. Zapadnięte fragmenty, które segmentacja nie zdołała przekształcić w drukowalny element, są usuwane z plików przed eksportem i nie są liczone.
- Name
- progress
- Type
- integer
- Description
Progress zadania. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość ma wartość
0. Gdy zadanie zakończy się powodzeniem, przyjmie wartość100.
- Name
- status
- Type
- string
- Description
Status zadania. Możliwe wartości to jedna z:
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
Liczba poprzedzających zadań.
Wartość tego pola ma znaczenie tylko wtedy, gdy status zadania to
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Znacznik czasu utworzenia zadania, w milisekundach.
- Name
- started_at
- Type
- timestamp
- Description
Znacznik czasu rozpoczęcia zadania, w milisekundach. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość ma wartość
0.
- Name
- finished_at
- Type
- timestamp
- Description
Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie nie zostało jeszcze zakończone, ta właściwość ma wartość
0.
- Name
- task_error
- Type
- object
- Description
Szczegóły błędu dla zadań zakończonych niepowodzeniem. Zobacz Błędy, aby uzyskać pełny opis obiektu
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Liczba kredytów zużytych przez to zadanie. Zawsze obecne:
10po zaakceptowaniu zadania oraz0dla zadańFAILED, ponieważ opłata jest zwracana w przypadku niepowodzenia. Usunięcie zadania, gdy wciąż jest w staniePENDING, również powoduje zwrot.
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
}