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

API Druku Wielokolorowego

Konwertuj modele 3D na wielokolorowy format 3MF przeznaczony do druku 3D, z konfigurowalną paletą kolorów obejmującą do 16 kolorów.


POST/openapi/v1/print/multi-color

Create a Multi-Color 3D Print Task

Ten punkt końcowy tworzy nowe zadanie druku 3D w wielu kolorach. Zadanie konwertuje model 3D na wielokolorowy plik 3MF odpowiedni do druku 3D.

Zadanie jest wykonywane w tle. Informacje o tym, ile zazwyczaj to trwa, znajdziesz w sekcji Czasy przetwarzania.

Parametry

  • Name
    model_url
    Type
    string
    Wymagane
    Description

    Publicznie dostępny URL modelu .glb lub .fbx, albo zakodowany w base64 URL data: modelu GLB (data:model/gltf-binary;base64,...). Plik .fbx musi zostać przesłany jako URL http lub https.

    Maksymalny rozmiar pliku: 400 MB dla URL http lub https, 100 MB dla URI data:.

    Plik większy niż 100 MB może mieć maksymalnie 8 000 000 ścianek. Ścianki są liczone jako trójkąty: czworokąt liczy się jako 2, a siatka narysowana więcej niż raz liczy się raz na każdą kopię. Powyżej 100 MB plik FBX musi być binarnym FBX w wersji 7.1 lub nowszej, a plik GLB nie może używać kompresji Draco.

  • Name
    max_colors
    Type
    integer
    domyślne 4
    Description

    Maksymalna liczba kolorów w wynikowej palecie.

    Prawidłowy zakres: od 1 do 16.

  • Name
    style
    Type
    string
    domyślne realistic
    Description

    Wizualny styl kolorów wygenerowanego pliku 3MF.

    Dostępne wartości:

    • realistic: Pobiera kolory bezpośrednio z tekstury modelu, uzyskując drobne, fotorealistyczne szczegóły. Powoduje większy rozmiar pliku.
    • cartoon: Spłaszcza kolory do czystych, jednolitych obszarów, uzyskując stylizowany wygląd. Powoduje mniejszy rozmiar pliku.

    Dane wejściowe muszą zawierać kolor: realistic wymaga pojedynczej bazowej tekstury koloru ze współrzędnymi UV na każdej części siatki; cartoon akceptuje również kolory przypisane do wierzchołków. Modele bez tekstury (białe) są odrzucane — zobacz model_missing_texture.

  • Name
    max_depth
    Type
    integer
    domyślne 4
    Description

    Głębokość podziału używana do mapowania kolorów tekstury na siatkę. Wyższe wartości pozwalają uchwycić drobniejsze szczegóły koloru kosztem większego rozmiaru pliku. Dotyczy tylko stylu realistic; ignorowane dla cartoon.

    Prawidłowy zakres: od 3 do 6.

  • Name
    printer_brand
    Type
    string
    domyślne bambu
    Description

    Marka drukarki, której preset slicera jest zapisywany w pliku 3MF, dzięki czemu plik otwiera się w slicerze tej marki z odpowiednim profilem drukarki, filamentu i procesu. Każda marka używa swojej domyślnej drukarki z dyszą 0,4 mm.

    Dostępne wartości: bambu, anycubic, creality, elegoo, flashforge, prusa, qidi, snapmaker, ankermake.

Zwracane dane

Właściwość result odpowiedzi zawiera id nowo utworzonego zadania druku 3D.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Żądanie było niepoprawne. Najczęstsze przyczyny:

    • Brakujący parametr: Musi zostać podany model_url lub input_task_id.
    • Nieprawidłowy format modelu: model_url wskazuje na plik o nieobsługiwanym rozszerzeniu (obsługiwane są tylko .glb i .fbx).
    • Niedostępny URL: Nie udało się pobrać pliku spod model_url.
    • Plik modelu zbyt duży: Plik pod model_url przekracza 400 MB (URL http lub https) lub 100 MB (URI data:).
    • Zbyt wiele ścianek: Plik pod model_url ma ponad 100 MB i więcej niż 8 000 000 ścianek. Zmniejsz liczbę ścianek, a następnie wyślij plik ponownie.
    • ASCII FBX powyżej 100 MB: Plik pod model_url to ASCII FBX powyżej 100 MB. Wyślij go jako binarny FBX lub GLB.
    • Nieodczytywalny plik modelu: Plik pod model_url ma ponad 100 MB, a jego nagłówka nie można odczytać, na przykład GLB skompresowany Draco lub binarny FBX starszy niż 7.1.
    • Nagłówek modelu zbyt złożony: Plik pod model_url ma ponad 100 MB, a jego nagłówek zawiera zbyt wiele siatek, węzłów lub rekordów do sprawdzenia. Zmniejsz liczbę obiektów w pliku, a następnie wyślij go ponownie.
    • Nieprawidłowe zadanie wejściowe: input_task_id musi odnosić się do zadania zakończonego powodzeniem.
    • Nieprawidłowe max_colors: Wartość musi mieścić się w zakresie od 1 do 16.
    • Nieprawidłowy style: Wartość musi mieć wartość realistic lub cartoon.
    • Nieprawidłowe max_depth: Wartość musi mieścić się w zakresie od 3 do 6.
    • Nieprawidłowy printer_brand: Wartość musi być jedną z marek wymienionych powyżej.
    • Brak źródła koloru: Model wejściowy nie ma bazowej tekstury koloru (realistic wymaga pojedynczej, ze współrzędnymi UV, na każdej części siatki) ani kolorów wierzchołków (cartoon akceptuje jedno z nich). Najpierw nałóż teksturę na model lub użyj cartoon dla modeli z kolorami wierzchołków. Pliki .fbx są sprawdzane po tym, jak zadanie je znormalizuje, i kończą się niepowodzeniem z błędem model_missing_texture.
  • 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
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości.

Request

POST
/openapi/v1/print/multi-color
# Convert a 3D model to a multi-color 3MF with a Creality slicer preset
curl https://api.meshy.ai/openapi/v1/print/multi-color \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "max_colors": 8,
    "printer_brand": "creality"
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/print/multi-color/:id

Pobierz zadanie druku 3D wielokolorowego

Ten punkt końcowy pobiera zadanie druku 3D wielokolorowego na podstawie jego ID.

Parametry

  • Name
    id
    Type
    path
    Description

    ID zadania druku 3D do pobrania.

Zwraca

Obiekt zadania druku 3D.

Request

GET
/openapi/v1/print/multi-color/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl https://api.meshy.ai/openapi/v1/print/multi-color/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-multi-color",
  "model_urls": {
      "3mf": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.3mf?Expires=***"
},
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
"consumed_credits": 10
}

DELETE/openapi/v1/print/multi-color/:id

Usuwanie zadania druku 3D w wielu kolorach

Ten punkt końcowy trwale usuwa zadanie druku 3D w wielu kolorach, wraz ze wszystkimi powiązanymi modelami i danymi. Ta czynność jest nieodwracalna.

Parametry ścieżki

  • Name
    id
    Type
    path
    Description

    ID zadania druku 3D w wielu kolorach, które ma zostać usunięte.

Status zadania

Zadanie, które nadal ma status PENDING, zostaje usunięte, a kredyty pobrane w momencie jego utworzenia są zwracane.

Zadania, które jest już w stanie IN_PROGRESS, nie można usunąć: żądanie zostaje odrzucone z kodem 409 Conflict, a zadanie nadal się wykonuje. Kredyty za zadanie, które worker już rozpoczął, nie podlegają zwrotowi, więc usunięcie go w trakcie wykonywania oznaczałoby utratę zarówno kredytów, jak i wyniku. Poczekaj, aż osiągnie ono 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/multi-color/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/print/multi-color/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/multi-color

List Multi-Color 3D Print Tasks

Ten punkt końcowy umożliwia pobranie listy zadań druku 3D z wieloma kolorami.

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.

  • Name
    sort_by
    Type
    string
    Description

    Pole, według którego ma nastąpić sortowanie. Dostępne wartości:

    • +created_at: Sortuj według czasu utworzenia rosnąco.
    • -created_at: Sortuj według czasu utworzenia malejąco.

Zwraca

Zwraca stronicowaną listę obiektów zadania druku 3D.

Request

GET
/openapi/v1/print/multi-color
curl https://api.meshy.ai/openapi/v1/print/multi-color?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "print-multi-color",
    "model_urls": {
      "3mf": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.3mf?Expires=***"
    },
    "progress": 100,
    "status": "SUCCEEDED",
    "preceding_tasks": 0,
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "task_error": null,
  "consumed_credits": 10
  }
]

GET/openapi/v1/print/multi-color/:id/stream

Stream a Multi-Color 3D Print Task

Ten punkt końcowy przesyła aktualizacje w czasie rzeczywistym dla zadania druku 3D w wielu kolorach przy użyciu Server-Sent Events (SSE).

Parametry

  • Name
    id
    Type
    path
    Description

    Unikalny identyfikator zadania druku 3D w wielu kolorach, które ma być przesyłane strumieniowo.

Zwraca

Zwraca strumień obiektów zadania druku 3D jako Server-Sent Events.

Dla zadań o statusie PENDING lub IN_PROGRESS strumień odpowiedzi będzie zawierał wyłącznie niezbędne pola progress i status.

Request

GET
/openapi/v1/print/multi-color/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/print/multi-color/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.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "type": "print-multi-color",
  "model_urls": {
    "3mf": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.3mf?Expires=***"
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
"consumed_credits": 10
}

Obiekt zadania druku 3D

  • Name
    id
    Type
    string
    Description

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

  • Name
    type
    Type
    string
    Description

    Typ zadania druku 3D. Wartość to print-multi-color.

  • Name
    model_urls
    Type
    object
    Description

    Adres URL umożliwiający pobranie pliku modelu 3D wygenerowanego przez Meshy. Właściwość dla danego formatu zostanie pominięta, jeśli dany format nie został wygenerowany, zamiast zwracać pusty ciąg znaków.

    • Name
      3mf
      Type
      string
      Description

      Adres URL umożliwiający pobranie wielokolorowego pliku 3MF.

  • Name
    progress
    Type
    integer
    Description

    Postęp zadania. Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość będzie miała 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.

  • 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 sekcji Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez to zadanie. Obecna, gdy status zadania to PENDING, IN_PROGRESS lub SUCCEEDED. Zwraca 0 dla zadań o statusie FAILED (kredyty są zwracane w przypadku niepowodzenia).

The 3D Print Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-multi-color",
  "model_urls": {
      "3mf": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.3mf?Expires=***"
},
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
"consumed_credits": 10
}