Creative Lab — API składanego fidgetu

Zamień zdjęcie źródłowe w gotowy do druku, składany fidget: sylwetka obiektu staje się zestawem zagnieżdżonych, koncentrycznych pierścieni, które składają się płasko i ponownie się rozciągają, wydrukowany jako jeden element bez konieczności montażu.

  • POST /openapi/creative-lab/fidget-collapsible/v1

W przeciwieństwie do innych endpointów Creative Lab, ten nie ma pary etapów prototyp/budowa — nie ma pośrednich kandydatów do wyboru, więc pojedyncze zadanie prowadzi obraz aż do gotowego modelu 3D. Elementy sterujące geometrią, które udostępnia aplikacja webowa (rozmiar, liczba warstw, szerokość szczeliny, grubość ścianki, głębokość wytłoczenia, wybrzuszenie), również nie są częścią żądania: każde zadanie jest budowane z tymi samymi domyślnymi ustawieniami po stronie serwera.


POST/openapi/creative-lab/fidget-collapsible/v1

Utwórz zadanie składanego fidgeta

Wygeneruj model składanego fidgeta na podstawie zdjęcia źródłowego. Zapoznaj się z Obiektem zadania składanego fidgeta aby poznać kształt odpowiedzi.

Każde zadanie kosztuje 6 kredytów i wymaga płatnego planu.

Parametry

  • Name
    image_url
    Type
    string
    Wymagane
    Description

    Zdjęcie źródłowe, które Meshy ma przekształcić w składanego fidgeta. Obecnie obsługujemy formaty .jpg, .jpeg, .png i .webp.

    Istnieją dwa sposoby dostarczenia obrazu:

    • Publicznie dostępny URL: Adres URL dostępny z publicznego internetu.
    • Data URI: Zakodowany w base64 identyfikator URI danych obrazu. Przykład Data URI: data:image/jpeg;base64,<twoje zakodowane w base64 dane obrazu>.

    Najlepiej sprawdza się obiekt z jednym wyraźnym, zamkniętym konturem — to sylwetka staje się pierścieniami. Zatłoczone tła, kilka osobnych obiektów lub bardzo cienkie kształty mogą pozostawić zbyt mało miejsca na zagnieżdżone ściany, przez co zadanie zakończy się błędem.

  • Name
    name
    Type
    string
    Description

    Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków. To wyłącznie etykieta zadania; nic nie jest grawerowane na modelu.

Zwraca

Właściwość result w odpowiedzi zawiera id zadania nowo utworzonego zadania składanego fidgeta. Odpytuj punkt końcowy Pobierz zadanie lub subskrybuj strumień, aż zadanie osiągnie status SUCCEEDED, a następnie pobierz plik STL nadający się do druku z model_urls.stl (a jeśli jest dostępny, plik GLB z model_urls.glb, aby najpierw go podejrzeć).

Tryby awarii

  • Name
    400 - Bad Request
    Description

    Żądanie było niepoprawne. Częste przyczyny:

    • Brakujący parametr: image_url jest wymagany.
    • Nieprawidłowy format obrazu: Podany image_url nie ma obsługiwanego formatu (.jpg, .jpeg, .png, .webp).
    • Wymiary obrazu poza zakresem: Obraz jest zbyt mały, przekracza maksymalny rozmiar pliku lub przekracza maksymalną liczbę pikseli.
    • Niedostępny URL: Nie udało się pobrać image_url (404 lub timeout).
    • Nieprawidłowy Data URI: Ciąg base64 jest nieprawidłowo sformatowany.
    • Oznaczona treść: Obraz wejściowy został oznaczony przez moderation NSFW.
  • Name
    401 - Unauthorized
    Description

    Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.

  • Name
    402 - Payment Required
    Description

    Albo twoje konto działa w ramach darmowego planu — utworzenie zadania w tym punkcie końcowym wymaga płatnego planu — albo masz niewystarczającą liczbę kredytów.

  • Name
    403 - Forbidden
    Description

    Obraz wejściowy został oznaczony jako naruszenie własności intelektualnej.

  • Name
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości.

Request

POST
/openapi/creative-lab/fidget-collapsible/v1
curl https://api.meshy.ai/openapi/creative-lab/fidget-collapsible/v1 \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "image_url": "<your publicly accessible image url or base64-encoded data URI>"
  }'

Response

{
  "result": "018a210d-8ba4-705c-b111-1f1776f7f578"
}

GET/openapi/creative-lab/fidget-collapsible/v1/:id

Pobierz zadanie składanego fidgeta

Pobierz zadanie składanego fidgeta na podstawie prawidłowego id zadania. Tylko zadania utworzone za pomocą tego punktu końcowego są tutaj dostępne — zadanie utworzone za pomocą innego punktu końcowego Creative Lab lub utworzone w aplikacji webowej zwraca 404.

Informacje o strukturze odpowiedzi znajdziesz w sekcji Obiekt zadania składanego fidgeta.

Parametry

  • Name
    id
    Type
    path
    Description

    Unikalny identyfikator zadania składanego fidgeta, które ma zostać pobrane.

Zwracane wartości

Odpowiedź zawiera obiekt zadania składanego fidgeta.

Request

GET
/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578
curl https://api.meshy.ai/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-fidget-collapsible",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123456000,
  "started_at": 1729123460000,
  "finished_at": 1729123512000,
  "expires_at": 1729382712000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
  }
}

DELETE/openapi/creative-lab/fidget-collapsible/v1/:id

Usuń zadanie składanego fidgeta

Anuluje zadanie składanego fidgeta. Jeśli zadanie nadal ma status PENDING, kredyty zużyte w momencie tworzenia są zwracane. Zadania, które już są w stanie IN_PROGRESS, są anulowane bez zwrotu kredytów (worker mógł już zacząć zużywać zasoby). Zadań, które osiągnęły już stan końcowy (SUCCEEDED, FAILED, CANCELED), nie można anulować.

Parametry ścieżki

  • Name
    id
    Type
    path
    Description

    Unikalny identyfikator zadania składanego fidgeta do anulowania.

Zwraca

Zwraca 204 No Content w przypadku powodzenia, z pustym ciałem odpowiedzi.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Zadanie znajduje się już w stanie końcowym i nie może zostać anulowane.

  • Name
    404 - Not Found
    Description

    Zadanie nie istnieje, należy do innego użytkownika lub nie zostało utworzone za pomocą tego punktu końcowego.

Request

DELETE
/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578
curl --request DELETE \
  --url https://api.meshy.ai/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// Returns 204 No Content on success (empty body).

GET/openapi/creative-lab/fidget-collapsible/v1/:id/stream

Przesyłaj strumieniowo zadanie Collapsible Fidget

Przesyłaj strumieniowo aktualizacje w czasie rzeczywistym dla zadania collapsible fidget za pomocą Server-Sent Events (SSE). Zadanie, które nie istnieje lub nie zostało utworzone za pośrednictwem tego punktu końcowego, emituje pojedynczy ładunek event: error z status_code: 404 i zamyka strumień.

Parametry

  • Name
    id
    Type
    path
    Description

    Unikalny identyfikator zadania collapsible fidget do przesyłania strumieniowego.

Zwraca

Zwraca strumień obiektów zadania Collapsible Fidget w postaci zdarzeń Server-Sent Events. Każda klatka zawiera pełny obiekt zadania dla danego etapu — dokładnie w takiej samej postaci, jaką zwraca punkt końcowy Get — więc dopóki zadanie ma status PENDING lub IN_PROGRESS, pola wyjściowe po prostu nie są jeszcze wypełnione (null, [] lub {}), a finished_at ma wartość null.

Request

GET
/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578/stream
curl -N https://api.meshy.ai/openapi/creative-lab/fidget-collapsible/v1/018a210d-8ba4-705c-b111-1f1776f7f578/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example (task not found, or not created through this endpoint)
event: error
data: {
  "status_code": 404,
  "message": "Task not found"
}

// Message event examples illustrate task progress.
// Every frame is the full task object; fields not yet populated are null / empty.
// The PENDING frame below is abbreviated to the fields that change.
event: message
data: {
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-fidget-collapsible",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123456000,
  "started_at": 1729123460000,
  "finished_at": 1729123512000,
  "expires_at": 1729382712000,
  "task_error": null,
  "consumed_credits": 6,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
  }
}

GET/openapi/creative-lab/fidget-collapsible/v1

Lista zadań Collapsible Fidget

Pobierz stronicowaną listę Twoich zadań collapsible fidget. Uwzględnione są wyłącznie zadania utworzone za pośrednictwem tego punktu końcowego.

Parametry zapytania

  • Name
    page_num
    Type
    integer
    domyślne 1
    Description

    Numer strony do stronicowania.

  • Name
    page_size
    Type
    integer
    domyślne 10
    Description

    Limit rozmiaru strony. Maksymalna dozwolona wartość to 100 elementów.

  • Name
    sort_by
    Type
    string
    domyślne -created_at
    Description

    Pole, według którego ma zostać przeprowadzone 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ę obiektu zadania collapsible fidget.

Request

GET
/openapi/creative-lab/fidget-collapsible/v1
curl https://api.meshy.ai/openapi/creative-lab/fidget-collapsible/v1?page_size=10 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "type": "creative-lab-fidget-collapsible",
    "name": "",
    "status": "SUCCEEDED",
    "progress": 100,
    "created_at": 1729123456000,
    "started_at": 1729123460000,
    "finished_at": 1729123512000,
    "expires_at": 1729382712000,
    "preceding_tasks": 0,
    "task_error": null,
    "consumed_credits": 6,
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
    }
  }
]

Obiekt zadania składanego fidgeta

Obiekt zadania składanego fidgeta to jednostka pracy, którą Meshy śledzi w celu przekształcenia zdjęcia źródłowego w model składanego fidgeta drukowanego w całości. Jest to zadanie jednoetapowe: nie istnieje prototyp, od którego można by się odgałęzić, a pośrednia sylwetka nie jest częścią odpowiedzi.

Właściwości

  • Name
    id
    Type
    string
    Description

    Unikalny identyfikator zadania. Chociaż jako szczegół implementacyjny używamy identyfikatorów zadań w formacie k-sortable UUID, nie należy zakładać żadnego konkretnego formatu id.

  • Name
    type
    Type
    string
    Description

    Typ zadania. Wartość to creative-lab-fidget-collapsible.

  • Name
    name
    Type
    string
    Description

    Nazwa zadania podana podczas jego tworzenia. Pusty ciąg znaków, jeśli nie podano nazwy.

  • Name
    status
    Type
    string
    Description

    Status zadania. Możliwe wartości to jedna z: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Postęp zadania. Jeśli zadanie jeszcze się nie rozpoczęło, wartość tej właściwości wynosi 0. Gdy zadanie zakończy się powodzeniem, wartość ta zmieni się na 100.

  • 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, wartość tej właściwości wynosi null.

  • Name
    finished_at
    Type
    timestamp
    Description

    Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie jeszcze się nie zakończyło, wartość tej właściwości wynosi null.

  • Name
    expires_at
    Type
    timestamp
    Description

    Znacznik czasu wygaśnięcia wyniku zadania, w milisekundach.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Liczba poprzedzających zadań.

  • 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ń FAILED (kredyty są zwracane w przypadku niepowodzenia).

  • Name
    model_urls
    Type
    object
    Description

    Adresy URL do pobrania wygenerowanego modelu 3D. Wypełniane po zakończeniu zadania statusem SUCCEEDED: stl jest zawsze obecne, glb tylko wtedy, gdy renderowanie podglądu się powiodło.

    • Name
      stl
      Type
      string
      Description

      Adres URL do pobrania pliku STL. Jest to gotowy do druku plik wynikowy — wystarczy przesłać go bezpośrednio do slicera.

    • Name
      glb
      Type
      string
      Description

      Adres URL do pobrania pliku GLB, umożliwiający podgląd modelu w przeglądarce 3D. Jego kolory służą wyłącznie do podglądu: STL nie zawiera informacji o kolorze, a wydrukowany fidget przyjmuje kolor filamentu. Plik GLB jest generowany na zasadzie best-effort: gdy renderowanie podglądu jest niedostępne, klucz jest całkowicie pomijany w model_urls, dlatego należy odczytywać go w sposób odporny na braki — stl jest właściwym plikiem wynikowym i jest zawsze obecny w zadaniu ze statusem SUCCEEDED.

Example Collapsible Fidget Task Object

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-fidget-collapsible",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123456000,
  "started_at": 1729123460000,
  "finished_at": 1729123512000,
  "expires_at": 1729382712000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
  }
}