lowpoly zostanie wycofany 30 paź 2026. Zmień model przed tymi datami, aby uniknąć błędów żądań.

Auto Split API

Podziel model 3D na osobne, drukowalne części — automatycznie, według nazwanych przez Ciebie części lub według obszarów kolorystycznych — z opcjonalnymi łącznikami; cienkie obszary pozostawione przez cięcie są zawsze wzmacniane, aby każda część drukowała się jako pełna bryła.


POST/openapi/v1/print/split

Create an Auto Split Task

Ten punkt końcowy tworzy nowe zadanie Auto Split. Zadanie dzieli model z poprzedniego zadania na osobne, drukowalne części i zwraca podzielony model, w którym każda część jest osobnym obiektem w pliku.

Zadanie działa w tle. Informacje o tym, ile zwykle to trwa, znajdziesz w sekcji Czasy przetwarzania.

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 (wersja wstępna), Remesh, Konwertuj oraz 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 i Smart Topology (meshy-t2, meshy-t2.5) 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 samo wybiera cięcia. prompt jest ignorowany.
    • by_parts: Tnij wzdłuż części strukturalnych nazwanych w prompt, takich jak głowa, ręce i tułów.
    • by_color: Tnij 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 korzysta z 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 nastąpić podział, w dowolnym języku. Meshy odczytuje z niego od 1 do 10 nazw części, dlatego nazywaj elementy zamiast opisywać model, na przykład split into the figure and the base albo head, torso, left arm, right arm, legs. Podanie 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. 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 jest naliczane. Jeśli Meshy nie potrafi odczytać z opisu żadnych nazw części, dokonuje podziału wzdłuż części, które rozpoznaje na obrazie referencyjnym modelu, w wybranym przez Ciebie mode: zadanie i tak jest wykonywane i naliczane, a w jego wyniku pojawia się prompt_ignored: true. Jeśli model nie ma obrazu referencyjnego lub Meshy znajdzie w nim mniej niż dwie części, takie żądanie jest zamiast tego odrzucane z kodem 400 i nic nie jest naliczane.

  • 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 (jeśli potrzebujesz osobno zaznaczalnych części w slicerze, zażądaj 3mf). glb jest zawsze generowany i zwracany w model_urls; wymień dodatkowo wszystkie 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ą ułożone płasko i rozłożone na płycie roboczej, gotowe do pocięcia w slicerze — tak samo jak w widoku On Plate w aplikacji webowej.

    W obu układach przed eksportem usuwany jest zapadnięty skrawek lub fragment przypominający punkt, pozostały po cięciu, dzięki czemu każda uzyskana część jest drukowalna. 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-gniazdo przy każdym cięciu, aby wydrukowane części do siebie pasowały.

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 dane

Właściwość result odpowiedzi zawiera id nowo utworzonego zadania Auto Split.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Żądanie było nieprawidłowe. Typowe przyczyny:

    • Brakujący prompt: prompt jest wymagany, gdy mode to by_parts lub by_color.
    • Prompt nie opisuje żadnego podziału lub podaje zbyt wiele części: by_parts / by_color akceptuje od 1 do 10 nazwanych elementów. Opis, który prosi o pozostawienie modelu w jednej części lub nazywa więcej niż 10 części, jest odrzucany. Nic nie jest naliczane.
    • 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 parsowania promptów wynoszący 12 żądań na minutę na konto.

  • Name
    503 - Service Unavailable
    Description

    Dzielenie oparte na promptach (by_parts i by_color) jest tymczasowo niedostępne. Spróbuj ponownie później lub użyj mode: "auto", na który ta sytuacja nie ma wpływu. Nic nie jest naliczane.

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

Pobieranie zadania 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

Usuń zadanie 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 ma wciąż status PENDING, zostaje usunięte, a kredyty zużyte w momencie jego utworzenia są zwracane.

Zadanie, które jest już IN_PROGRESS, nie może zostać usunięte: żądanie zostaje odrzucone z kodem 409 Conflict, a zadanie nadal się wykonuje. Kredyty za zadanie, które zostało już rozpoczęte przez workera, nie podlegają zwrotowi, więc usunięcie go w trakcie wykonywania kosztowałoby 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) jest usuwane bez zwrotu kredytów.

Zwraca

Zwraca 200 OK w przypadku powodzenia lub 409 Conflict, gdy zadanie jest 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

List Auto Split Tasks

Ten punkt końcowy umożliwia pobranie listy zadań Auto Split.

Parametry

Atrybuty opcjonalne

  • Name
    page_num
    Type
    integer
    Description

    Numer strony na potrzeby 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 odbywać się 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.

Zwracane dane

Zwraca stronicowaną listę obiektów zadania Auto Split.

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, zwracany przez Pobierz zadanie Auto Split, w tym consumed_credits, znaczniki czasu i prompt_ignored; dopóki zadanie ma status PENDING lub IN_PROGRESS, pola zmieniające 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 jedynie 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
}

Obiekt zadania Auto Split

Zadanie Auto Split zawiera wyłącznie poniższe właściwości. Pola prompta generowania, które znajdują się w innych obiektach zadań (name, object_prompt, texture_prompt itd.), pojedyncze pole model_url oraz texture_urls nigdy nie są wypełniane dla podziału i nie są zwracane. Właściwości, które uzupełniają się w trakcie wykonywania zadania (thumbnail_url, model_urls, znaczniki czasu), są zawsze obecne, puste do momentu uzyskania wartości, dzięki czemu zestaw kluczy nie zmienia się pomiędzy PENDING a SUCCEEDED.

  • Name
    id
    Type
    string
    Description

    Unikalny identyfikator zadania. Mimo że jako szczegół implementacyjny używamy identyfikatorów zadań w formacie k-sortable UUID, nie należy przyjmować żadnych założeń co do formatu id.

  • Name
    type
    Type
    string
    Description

    Typ zadania. Wartość to print-split.

  • Name
    model_urls
    Type
    object
    Description

    Adresy URL do pobrania podzielonego modelu, po jednym dla każdego żądanego formatu. Formaty obsługujące obiekty sceny zachowują każdą część jako osobny obiekt; stl łączy je w jedną bryłę. Właściwość dla danego 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ą łączone w jedną bryłę; aby uzyskać osobno wybieralne części, zażądaj formatu 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 wyrenderowanego podglądu podzielonego modelu, z każdą częścią w innym kolorze, w żądanym layout.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true, gdy prompt w żądaniu by_parts lub by_color nie wskazywał nazw żadnych części, przez co Meshy podzieliło model automatycznie — nazwy części w wyniku pochodzą od Meshy, a nie od Ciebie. Obecne od statusu PENDING. Pomijane dla zadań auto oraz zawsze wtedy, gdy prompt został zastosowany.

  • Name
    part_count
    Type
    integer
    Description

    Liczba drukowalnych części uzyskanych w wyniku podziału. Formaty obsługujące obiekty sceny zawierają jeden obiekt na część; stl łączy je w jedną bryłę, ale liczba nadal odnosi się do liczby części. Zapadnięte fragmenty, których segmentacja nie mogła przekształcić w drukowalny element, są usuwane z plików przed eksportem i nie są wliczane do tej liczby.

  • Name
    progress
    Type
    integer
    Description

    Postęp zadania. Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość przyjmuje wartość 0. Gdy zadanie zakończy się powodzeniem, wartość ta zmieni się na 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 jeszcze się nie rozpoczęło, ta właściwość przyjmuje 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ść przyjmuje wartość 0.

  • Name
    task_error
    Type
    object
    Description

    Szczegóły błędu dla nieudanych zadań. Pełny opis obiektu task_error znajdziesz w sekcji Błędy. Jeśli kontrola bezpieczeństwa dostawcy modelu odrzuci model wejściowy, zadanie kończy się niepowodzeniem z task_error.type ustawionym na invalid_input i code ustawionym na provider_content_refused. Zobacz Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez to zadanie. Zawsze obecne: 10 po przyjęciu zadania i 0 dla zadań FAILED, ponieważ opłata jest zwracana w przypadku niepowodzenia. Usunięcie zadania, gdy nadal ma status PENDING, również skutkuje zwrotem środków.

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
}