Auto Split API
Podziel model 3D na osobne, drukowalne części — automatycznie, według nazwanych przez Ciebie części lub według obszaru koloru — z opcjonalnymi łącznikami; cienkie obszary pozostawione przez cięcie są zawsze wzmacniane, dzięki czemu każda część drukuje się jako pełna.
Auto Split obsługuje obecnie wyłącznie modele bez tekstury. Dla Obraz na 3D i Wiele obrazów na 3D wygeneruj dane wejściowe z ustawionym should_texture na false. Dane wejściowe z teksturą są odrzucane z kodem 400.
Utwórz zadanie Auto Split
Ten punkt końcowy tworzy nowe zadanie Auto Split. Zadanie dzieli model z wcześniejszego zadania na osobne części nadające się do druku 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-7lublatest). Modele low-poly i Smart Topology (meshy-t2) nie są obsługiwane.
- Name
- mode
- Type
- string
- domyślne auto
- Description
Sposób podziału modelu na części.
Dostępne wartości:
auto: Meshy samodzielnie wybiera cięcia.promptjest ignorowany.by_parts: Cięcie wzdłuż nazwanych przez Ciebie wpromptczęści strukturalnych, takich jak głowa, ramiona i tułów.by_color: Cięcie wzdłuż nazwanych przez Ciebie wpromptobszarów kolorystycznych. Wymaga danych wejściowych wygenerowanych z przesłanego obrazu (Obraz na 3D lub Wiele obrazów na 3D); pozostałe dane wejściowe są odrzucane z kodem400.
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, dlatego nazywaj poszczególne elementy, a nie opisuj model — na przykład
podziel na figurkę i podstawę, albogłowa, tułów, lewe ramię, prawe ramię, nogi. Maksymalnie 600 znaków. Istnieją dwa tryby niepowodzenia: opis, który brzmi jak polecenie podziału, ale nazywa mniej niż dwie części (na przykładpodziel na pojedyncze części), jest odrzucany z kodem400i nic nie jest naliczane; opis, którego Meshy w ogóle nie potrafi odczytać, powoduje przełączenie 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. W każdym formacie każda część stanowi osobny obiekt. Format
glbjest zawsze generowany i zwracany wmodel_urls; podaj dodatkowo dowolne inne formaty, które chcesz otrzymać.Dostępne wartości:
glb,obj,fbx,usdz,blend,3mf.
- Name
- layout
- Type
- string
- domyślne assembled
- Description
Sposób rozmieszczenia części w każdym formacie wyjściowym oraz na miniaturze.
Dostępne wartości:
assembled: Części pozostają w miejscach, w których znajdowały się w modelu źródłowym.on_plate: Części są ułożone płasko i rozmieszczone na płycie roboczej, gotowe do cięcia na warstwy — tak samo jak w widoku On Plate w aplikacji webowej.
W obu układach eksportowane pliki zawierają po jednym obiekcie na każdą część i nic więcej: zredukowany do cienkiej warstwy lub punktowy fragment pozostały po cięciu jest usuwany przed eksportem, dzięki czemu każdy obiekt znaleziony w pliku nadaje się do druku.
- Name
- connectors
- Type
- boolean
- domyślne false
- Description
Dodaje łączniki typu wpust-czop przy każdym cięciu, dzięki czemu wydrukowane części pasują do siebie.
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
Odległość, na jaką łą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 nieprawidłowe. Najczęstsze przyczyny:
- Brak prompt:
promptjest wymagany, gdymodema wartośćby_partslubby_color. - Prompt nazywa mniej niż dwie części:
by_parts/by_colorwymaga podania co najmniej dwóch nazwanych elementów (na przykładgłowa, tułów, podstawa); ogólne polecenie, takie jakpodziel na pojedyncze części, jest odrzucane. Nic nie jest naliczane. - Nieobsługiwane zadanie wejściowe:
input_task_idmusi wskazywać na zakończone powodzeniem zadanie obsługiwanego typu, wygenerowane za pomocą Meshy 6 lub Meshy 7. - Teksturowane dane wejściowe: Model wejściowy ma tekstury. Obecnie obsługiwane są tylko modele bez tekstur.
- Brak obrazu referencyjnego:
by_colorwymaga danych wejściowych wygenerowanych z przesłanego obrazu. - Nieobsługiwany format:
target_formatszawierastl. - Łącznik poza zakresem:
connector_sizelubconnector_heightznajduje się poza zakresem od0.1do0.8.
- Brak prompt:
- 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_colorwspółdzielą również limit parsowania 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", na który to ograniczenie nie ma wpływu. Nic nie jest naliczane.
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"
}
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.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
}
Usuń zadanie Auto Split
Ten punkt końcowy trwale usuwa zadanie Auto Split, wraz ze wszystkimi powiązanymi modelami i danymi. Ta czynność jest nieodwracalna.
Parametry ścieżki
- Name
- id
- Type
- path
- Description
ID zadania Auto Split do usunięcia.
Zwraca
Zwraca 200 OK w przypadku powodzenia.
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.
Lista zadań Auto Split
Ten punkt końcowy umożliwia pobranie listy zadań Auto Split.
Parametry
Opcjonalne atrybuty
- Name
- page_num
- Type
- integer
- Description
Numer strony na potrzeby stronicowania. Zaczyna się od
1i domyślnie ma tę wartość.
- 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 nastąpić sortowanie. Dostępne wartości:
+created_at: Sortowanie według czasu utworzenia w kolejności rosnącej.-created_at: Sortowanie według czasu utworzenia w kolejności malejącej.
Zwraca
Zwraca stronicowaną listę obiektów zadania Auto Split.
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
}
]
Strumieniowanie zadania Auto Split
Ten punkt końcowy strumieniuje 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ć strumieniowane.
Zwraca
Zwraca strumień obiektów zadania Auto Split jako Server-Sent Events.
Każde zdarzenie message zawiera pełny obiekt zadania, tak jak jest on zwracany przez Pobieranie zadania Auto Split, w tym consumed_credits, znaczniki czasu oraz prompt_ignored; gdy zadanie ma status PENDING lub IN_PROGRESS, pola, które zmieniają się między klatkami, to progress, status, started_at oraz preceding_tasks, natomiast model_urls, thumbnail_url, part_count i parts pojawiają się dopiero 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.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
}
Obiekt zadania Auto Split
Zadanie Auto Split zawiera wyłącznie poniższe właściwości. Pola dotyczące promptu generacji, które znajdują się w innych obiektach zadań (name, object_prompt, texture_prompt i tak dalej), pojedyncze model_url oraz texture_urls nigdy nie są wypełniane w przypadku podziału i nie są zwracane. Właściwości uzupełniane 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 statusami PENDING i SUCCEEDED.
- Name
- id
- Type
- string
- Description
Unikalny identyfikator zadania. Choć jako szczegół implementacyjny używamy identyfikatorów zadań w formacie k-sortable UUID, nie należy przyjmować żadnych założeń co do formatu identyfikatora.
- Name
- type
- Type
- string
- Description
Typ zadania. Wartością jest
print-split.
- Name
- model_urls
- Type
- object
- Description
Adresy URL do pobrania podzielonego modelu, po jednym dla każdego żądanego formatu. Każda część jest osobnym obiektem w pliku. Właściwość dla danego formatu zostanie pominięta, jeśli format nie został zażą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
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, gdzie każda część ma odrębny kolor, w zadanym
layout.
- Name
- prompt_ignored
- Type
- boolean
- Description
true, gdypromptw żądaniuby_partslubby_colornie wskazywał żadnych części, więc Meshy podzieliło model automatycznie — nazwy części w wyniku pochodzą od Meshy, a nie od użytkownika. Obecne od statusuPENDING. Pomijane dla zadańautooraz zawsze, gdy prompt został zastosowany.
- Name
- part_count
- Type
- integer
- Description
Liczba drukowalnych części w podzielonym modelu — po jednej na każdy obiekt w wyeksportowanych plikach. Zapadnięte, niewielkie fragmenty, których segmentacja nie mogła przekształcić w drukowalny element, są usuwane z plików przed eksportem i nie są liczone.
- Name
- progress
- Type
- integer
- Description
Postęp zadania (progress). Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość będzie miała wartość
0. Gdy zadanie zakończy się sukcesem, wartość ta zmieni się na100.
- 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 jeszcze się nie rozpoczęło, ta właściwość będzie miała wartość
0.
- Name
- finished_at
- Type
- timestamp
- Description
Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie jeszcze się nie zakończyło, ta właściwość będzie miała wartość
0.
- Name
- task_error
- Type
- object
- Description
Szczegóły błędu dla nieudanych zadań. Pełny opis obiektu
task_errorznajduje się w Błędy.
- Name
- consumed_credits
- Type
- integer
- Description
Liczba kredytów zużytych przez to zadanie. Zawsze obecne:
10po przyjęciu zadania oraz0dla zadańFAILED, ponieważ opłata jest zwracana w przypadku niepowodzenia. Usunięcie zadania, gdy nadal ma statusPENDING, również powoduje zwrot kredytów.
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
}