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.


POST/openapi/v1/print/split

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_model meshy-6, meshy-7, meshy-7.1 lub latest). 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ęć. prompt jest ignorowany.
    • by_parts: Cięcie wzdłuż strukturalnych części nazwanych w prompt, takich jak głowa, ręce i tułów.
    • by_color: Cięcie wzdłuż obszarów kolorystycznych nazwanych w prompt. 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 kodem 400. 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.
Dotyczy tylko gdy 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, albo head, 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ęc the head dzieli 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 kodem 400 i nic nie zostaje naliczone; opis, którego Meshy w ogóle nie potrafi odczytać, przełącza się na auto, zadanie mimo to jest wykonywane i naliczane, a jego odpowiedź zawiera prompt_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; stl nie ma pojęcia osobnych obiektów, więc łączy każdą część w jedną bryłę ułożoną zgodnie z layout (aby uzyskać osobno wybieralne części w slicerze, poproś o 3mf). glb jest zawsze generowany i zwracany w model_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ą.

Dotyczy tylko gdy 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.1 do 0.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.1 do 0.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: prompt jest wymagany, gdy mode ma wartość by_parts lub by_color.
    • Prompt nie opisuje podziału albo opisuje zbyt wiele części: by_parts / by_color akceptuje 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_id musi odnosić się do zakończonego powodzeniem zadania obsługiwanego typu, wygenerowanego za pomocą Meshy 6 lub Meshy 7.
    • Brak obrazu referencyjnego: by_color wymaga danych wejściowych wygenerowanych z przesłanego obrazu.
    • Łącznik poza zakresem: connector_size lub connector_height znajduje się poza zakresem od 0.1 do 0.8.
  • 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_id nie istnieje lub nie należy do Twojego konta.

  • Name
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości. Żądania by_parts i by_color dzielą również limit analizy promptów wynoszący 12 żądań na minutę na konto.

  • Name
    503 - Service Unavailable
    Description

    Podział na podstawie promptu (by_parts i by_color) jest tymczasowo niedostępny. Spróbuj ponownie później lub użyj mode: "auto", który nie jest tym dotknięty. Nic nie zostaje naliczone.

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

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

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

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

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

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 10 elementów. Maksymalna dozwolona wartość to 100 elementów; większe wartości są ograniczane do 100.

  • 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

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

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

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

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; stl scala 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, gdy prompt żądania by_parts lub by_color nie wskazał żadnych części, więc Meshy podzieliło model automatycznie — nazwy części w wyniku pochodzą od Meshy, nie od Ciebie. Obecne od PENDING. Pomijane dla zadań auto oraz 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ęść; stl scala 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ń.

  • 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: 10 po zaakceptowaniu zadania oraz 0 dla zadań FAILED, ponieważ opłata jest zwracana w przypadku niepowodzenia. Usunięcie zadania, gdy wciąż jest w stanie PENDING, 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
}