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.


POST/openapi/v1/print/split

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_model meshy-6, meshy-7 lub latest). 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. prompt jest ignorowany.
    • by_parts: Cięcie wzdłuż nazwanych przez Ciebie w prompt części strukturalnych, takich jak głowa, ramiona i tułów.
    • by_color: Cięcie wzdłuż nazwanych przez Ciebie w prompt obszaró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 kodem 400.
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, dlatego nazywaj poszczególne elementy, a nie opisuj model — na przykład podziel na figurkę i podstawę, albo gł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ład podziel na pojedyncze części), jest odrzucany z kodem 400 i nic nie jest naliczane; opis, którego Meshy w ogóle nie potrafi odczytać, powoduje przełączenie 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. W każdym formacie każda część stanowi osobny obiekt. Format glb jest zawsze generowany i zwracany w model_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.

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

    Odległość, na jaką łą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 nieprawidłowe. Najczęstsze przyczyny:

    • Brak prompt: prompt jest wymagany, gdy mode ma wartość by_parts lub by_color.
    • Prompt nazywa mniej niż dwie części: by_parts / by_color wymaga podania co najmniej dwóch nazwanych elementów (na przykład głowa, tułów, podstawa); ogólne polecenie, takie jak podziel na pojedyncze części, jest odrzucane. Nic nie jest naliczane.
    • Nieobsługiwane zadanie wejściowe: input_task_id musi 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_color wymaga danych wejściowych wygenerowanych z przesłanego obrazu.
    • Nieobsługiwany format: target_formats zawiera stl.
    • Łą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 współ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_parts i by_color) jest tymczasowo niedostępny. Spróbuj ponownie później lub użyj mode: "auto", na który to ograniczenie 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.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"
}

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.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
}

DELETE/openapi/v1/print/split/:id

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

DELETE
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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.

GET/openapi/v1/print/split

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 1 i domyślnie ma tę wartość.

  • 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 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

GET
/openapi/v1/print/split
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
  }
]

GET/openapi/v1/print/split/:id/stream

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

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
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, gdy prompt w żądaniu by_parts lub by_color nie 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 statusu PENDING. Pomijane dla zadań auto oraz 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ę 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ść 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_error znajduje się w Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez to zadanie. Zawsze obecne: 10 po przyjęciu zadania oraz 0 dla zadań FAILED, ponieważ opłata jest zwracana w przypadku niepowodzenia. Usunięcie zadania, gdy nadal ma status PENDING, 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
}