Przekształć zdjęcie źródłowe w klosz lampy gotowy do druku 3D w dwóch etapach:
prototype generuje stylizowany, matowo-biały obraz koncepcyjny i przekształca go w
pusty w środku model 3D (GLB), a następnie build uruchamia procesor lampy na tym modelu,
aby wygenerować gotowe do druku części STL — otwarty od spodu klosz lampy z płytą podstawy
dla mocowania źródła światła, a także samo mocowanie oprawy. Oba etapy są
połączone za pomocą input_task_id.
Wygeneruj pojedynczy matowo-biały obraz koncepcyjny ze zdjęcia referencyjnego i
przekonwertuj go na wydrążony model 3D klosza lampy. Odpowiedź zawiera zarówno
obraz koncepcyjny (image_urls), jak i model 3D (model_urls.glb wraz z
thumbnail_url). Zwrócony identyfikator zadania to wartość, którą przekazujesz jako input_task_id
do punktu końcowego budowania. Zobacz
Obiekt zadania prototypu lampy,
aby poznać kształt odpowiedzi.
Parametry
Name
image_url
Type
string
Wymagane
Description
Zdjęcie źródłowe, którego Meshy używa jako referencji wizualnej dla klosza lampy. 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,<your base64-encoded image data>.
Name
image_subject
Type
string
domyślne character
Description
Podpowiedź kategorii tematu, która wybiera prompt stylizacji. Dostępne wartości:
character (domyślnie) — pojedyncza postać / obiekt jako temat (figurka, zwierzę, maskotka itp.).
landscape — scena plenerowa / panorama jako temat (góra, panorama miasta, las itp.).
Name
name
Type
string
Description
Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków.
Name
remove_background
Type
boolean
domyślne false
Description
Gdy ustawione na true, obraz prototypu jest zwracany jako przezroczysty PNG RGBA z usuniętym tłem, dzięki czemu możesz nałożyć temat na dowolne tło.
Zwracane wartości
Właściwość result odpowiedzi zawiera id zadania nowo utworzonego prototypu lampy. Odpytuj punkt końcowy Pobierz zadanie lub subskrybuj strumień, aż zadanie osiągnie status SUCCEEDED, a następnie przekaż ten identyfikator do punktu końcowego budowania jako input_task_id.
Tryby awarii
Name
400 - Bad Request
Description
Żądanie było niepoprawne. Typowe przyczyny:
Brakujący parametr: image_url jest wymagane.
Nieprawidłowy format obrazu: podany image_url nie jest w obsługiwanym formacie (.jpg, .jpeg, .png, .webp).
Wymiary obrazu poza zakresem: obraz jest zbyt mały, przekracza maksymalny rozmiar pliku lub przekracza maksymalną liczbę pikseli.
Nieosiągalny 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 lub własności intelektualnej.
Nieprawidłowe image_subject: wartość inna niż character / landscape.
Name
401 - Unauthorized
Description
Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.
Name
402 - Payment Required
Description
Niewystarczające kredyty do wykonania tego zadania.
Name
429 - Too Many Requests
Description
Przekroczono limit szybkości.
Request
POST
/openapi/creative-lab/lamp/v1/prototype
# Stage 1: concept image + hollow 3D lampshade model from a source photocurlhttps://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "image_subject": "character" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Przykład prototypu
Zacznij od zdjęcia źródłowego; prototyp zwraca obraz koncepcyjny oraz wydrążony model 3D, który jest przetwarzany na etapie budowania.
Wygeneruj finalne, gotowe do druku 3D części na podstawie zakończonego powodzeniem zadania prototypu.
Zadanie budowy uruchamia procesor lampy na modelu 3D prototypu: skaluje
model do diameter_mm, spłaszcza spód o cut_amount_percent,
wydrąża go do thickness_mm, otwiera spód i — gdy wybrano
preset osprzętu — dodaje płytę podstawy z otworem na osprzęt oraz osobny
uchwyt na źródło światła. Kształt odpowiedzi opisano w
The Lamp Build Task Object.
Parametry
Name
input_task_id
Type
string
Wymagane
Description
Identyfikator zadania prototypu utworzonego za pomocą tego samego punktu końcowego OpenAPI. Prototyp musiał zostać utworzony przy użyciu tego samego klucza API, musi mieć status SUCCEEDED i musi wygenerować model 3D.
Zadania prototypów utworzone za pomocą aplikacji webowej nie są akceptowane — punkt końcowy build akceptuje wyłącznie zadania prototypów utworzone przez POST /openapi/creative-lab/lamp/v1/prototype i odrzuca każde inne źródło z kodem 404.
Name
name
Type
string
Description
Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków.
options
Opcjonalne parametry dostrajania geometrii abażuru. Każde pole ma rozsądną wartość domyślną — wyślij tylko te, które chcesz nadpisać.
Name
diameter_mm
Type
number
domyślne 150
Description
Docelowy maksymalny wymiar prostopadłościanu ograniczającego abażuru, w milimetrach. Siatka jest skalowana jednolicie, aby się zmieściła. Zakres: [50, 400].
Name
thickness_mm
Type
number
domyślne 1
Description
Grubość ścianki pustego w środku abażuru, w milimetrach. Zakres: (0, 10].
Name
cut_amount_percent
Type
number
domyślne 1
Description
Procent wysokości modelu ścięty płasko od dołu, tak aby abażur mógł stać na stole druku i miał otwór na osprzęt. Zakres: [1, 100].
Name
light_source_preset
Type
string
domyślne bambu_mh001_60mm
Description
Preset osprzętu źródła światła, który określa sposób budowy spodu. Dostępne wartości:
bambu_mh001_60mm (domyślny) — abażur z otwartym spodem plus płyta podstawy z 60-milimetrowym otworem na osprzęt, oba w model_urls.lamp_stl, oraz uchwyt osprzętu jako model_urls.base_stl.
none — pojedynczy, w pełni zamknięty abażur w model_urls.lamp_stl; model_urls.base_stl jest pomijane.
Name
fixture_offset_x_mm
Type
number
domyślne 0
Description
Przesunięcie na osi X otworu na osprzęt na płycie podstawy, względem środka abażuru, w milimetrach. Ma znaczenie tylko wtedy, gdy light_source_preset ≠ none. Zakres: [-80, 80].
Name
fixture_offset_z_mm
Type
number
domyślne 0
Description
Przesunięcie na osi Z (głębokość) otworu na osprzęt na płycie podstawy, względem środka abażuru, w milimetrach. Ma znaczenie tylko wtedy, gdy light_source_preset ≠ none. Zakres: [-80, 80].
Name
rotate_x_deg
Type
number
domyślne 0
Description
Obrót wokół osi X stosowany do modelu przed przetworzeniem, w stopniach. Trzy obroty są stosowane jako kąty Eulera XYZ wokół środka modelu. Zakres: [-360, 360].
Name
rotate_y_deg
Type
number
domyślne 0
Description
Obrót wokół osi Y stosowany do zaimportowanej siatki przed przetworzeniem, w stopniach. Zakres: [-360, 360].
Name
rotate_z_deg
Type
number
domyślne 0
Description
Obrót wokół osi Z stosowany do zaimportowanej siatki przed przetworzeniem, w stopniach. Zakres: [-360, 360].
Name
include_result_json
Type
boolean
domyślne false
Description
Gdy ustawione na true i output.format to zip, dołącza plik result.json procesora lampy (nazwa potoku, ostrzeżenia i ścieżki artefaktów) do pakietu. Ignorowane, gdy output.format to stl.
Pakiet artefaktów zwracany przez zadanie budowy. Dostępne wartości:
stl (domyślny) — zwraca model_urls.lamp_stl (abażur, wraz z płytą podstawy, gdy ustawiono preset osprzętu), plus model_urls.base_stl, gdy light_source_preset ≠ none.
zip — pakuje każdy artefakt generowany przez procesor (lamp.stl, opcjonalnie base.stl, opcjonalnie result.json) do jednego pliku zip i zwraca go pod model_urls.bundle_zip.
Zwracane wartości
Właściwość result odpowiedzi zawiera id zadania nowo utworzonego zadania budowy lampy. Odpytuj punkt końcowy Get a Task lub subskrybuj stream, dopóki zadanie nie osiągnie statusu SUCCEEDED, a następnie pobierz artefakty z model_urls.
Tryby niepowodzenia
Name
400 - Bad Request
Description
Żądanie było niepoprawne. Częste przyczyny:
Brakujący parametr: input_task_id jest wymagane.
Nieprawidłowy UUID: input_task_id nie jest prawidłowym UUID.
Zadanie nadrzędne nie zakończone powodzeniem: Wskazane zadanie prototypu nie osiągnęło jeszcze statusu SUCCEEDED.
Brak modelu: Zadanie prototypu zakończyło się powodzeniem, ale nie wygenerowało modelu 3D.
Opcje poza zakresem: Jedno z pól options znajdowało się poza dozwolonym zakresem lub zbiorem wartości enum.
Name
401 - Unauthorized
Description
Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.
Name
402 - Payment Required
Description
Niewystarczające kredyty do wykonania tego zadania.
Name
404 - Not Found
Description
Wskazane zadanie prototypu nie istnieje, należy do innego użytkownika lub zostało utworzone za pomocą aplikacji webowej (tylko zadania prototypów utworzone w trybie API mogą być łączone w łańcuch z zadaniem budowy).
Pobierz zadanie prototypu lub budowy na podstawie prawidłowego id zadania. Ścieżka URL
musi odpowiadać etapowi zadania — zadanie budowy pobrane przez
/prototype/:id zwraca 404, i odwrotnie.
Anuluj zadanie lampy. Jeśli zadanie jest nadal PENDING, kredyty zużyte
podczas tworzenia są zwracane. Zadania, które są już IN_PROGRESS, są
anulowane bez zwrotu (pracownik może już zużywać zasoby).
Zadania, które osiągnęły już stan końcowy (SUCCEEDED, FAILED,
CANCELED) nie mogą być anulowane.
Ścieżka URL musi odpowiadać etapowi zadania — DELETE na
/prototype/:buildId zwraca 404.
Parametry ścieżki
Name
id
Type
path
Description
Unikalny identyfikator zadania lampy do anulowania.
Zwraca
Zwraca 204 No Content w przypadku sukcesu z pustym ciałem.
Tryby błędów
Name
400 - Bad Request
Description
Zadanie jest już w stanie końcowym i nie może być anulowane.
Name
404 - Not Found
Description
Zadanie nie istnieje, należy do innego użytkownika lub jego etap nie odpowiada ścieżce URL.
Strumieniuj aktualizacje w czasie rzeczywistym dla zadania lampy za pomocą Server-Sent Events (SSE).
Ścieżka URL musi odpowiadać etapowi zadania — otwarcie strumienia pod adresem
/prototype/:buildId/stream emituje pojedynczy ładunek event: error z
status_code: 404 i zamyka strumień.
Parametry
Name
id
Type
path
Description
Unikalny identyfikator zadania lampy do strumieniowania.
Zwraca
Zwraca strumień obiektów zadań Lamp Prototype
lub Lamp Build jako
Server-Sent Events. Dla zadań w stanie PENDING lub IN_PROGRESS
strumień odpowiedzi będzie zawierał wyłącznie niezbędne pola progress i status.
// Error event example (wrong stage or task not found)event: errordata: {"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: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-lamp-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 6,"model_urls": {"lamp_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/lamp.stl?Expires=***","base_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/base.stl?Expires=***" }}
Pobierz listę zadań typu lampa (z podziałem na strony) dla pojedynczego etapu. Ścieżka
URL określa etap — /prototype zwraca zadania prototypowe, a /build
zwraca zadania budowy. Zadania z drugiego etapu nie są uwzględniane
w żadnej z odpowiedzi.
Parametry ścieżki
Name
stage
Type
path
Wymagane
Description
prototype albo build. Kolekcja zwraca tylko zadania,
których etap odpowiada URL — pobranie /prototype nigdy nie zwróci
zadań budowy i odwrotnie.
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 50 elementów.
Name
sort_by
Type
string
domyślne -created_at
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.
Obiekt Lamp Prototype Task to jednostka pracy śledzona przez Meshy w celu
wygenerowania stylizowanego, matowobiałego obrazu koncepcyjnego ze zdjęcia źródłowego oraz
przekształcenia go w pusty w środku model 3D. Wynik tego etapu jest łączony z
etapem budowania za pomocą input_task_id.
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 przyjmować żadnych założeń co do formatu id.
Name
type
Type
string
Description
Typ zadania. Wartość to creative-lab-lamp-prototype.
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 (progress). Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość ma wartość 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.
Znacznik czasu reprezentuje liczbę milisekund, które upłynęły od 1 stycznia 1970 UTC, zgodnie
ze standardem RFC 3339.
Na przykład piątek, 1 września 2023 12:00:00 czasu GMT jest reprezentowany jako 1693569600000. Dotyczy to
wszystkich znaczników czasu w Meshy API.
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ść ma 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ść ma wartość 0.
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ń.
Wartość tego pola ma znaczenie tylko wtedy, gdy status zadania to PENDING.
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. Obecne, gdy status zadania to PENDING, IN_PROGRESS lub SUCCEEDED. Zwraca 0 dla zadań FAILED (w przypadku niepowodzenia kredyty są zwracane).
Name
model_urls
Type
object
Description
Adresy URL do pobrania modelu 3D wygenerowanego z obrazu koncepcyjnego. Obecne po pomyślnym zakończeniu zadania; wcześniej {}.
Name
glb
Type
string
Description
Adres URL do pobrania pustego w środku, matowobiałego modelu klosza lampy w formacie GLB. To jest model przetwarzany przez etap budowania.
Name
thumbnail_url
Type
string
Description
Adres URL do pobrania renderowanego podglądu modelu 3D. Pusty ciąg znaków do czasu pomyślnego zakończenia zadania.
Name
image_urls
Type
array of strings
Description
Adresy URL do pobrania kandydatów obrazów koncepcyjnych wygenerowanych przez to zadanie prototypowe. Obecnie API zawsze zwraca dokładnie jednego kandydata; pole to jest tablicą, aby przyszłe wersje mogły udostępniać wielu kandydatów bez wprowadzania zmiany łamiącej kompatybilność.
Obiekt zadania budowy lampy (Lamp Build Task) to jednostka pracy, którą Meshy śledzi,
aby wygenerować finalny, gotowy do druku 3D klosz lampy na podstawie zakończonego powodzeniem zadania prototypu.
Budowa uruchamia procesor lampy na modelu 3D prototypu, aby go wydrążyć,
spłaszczyć i otworzyć spód, a także (przy zastosowaniu ustawień wstępnych mocowania) dodać płytę podstawy
oraz mocowanie oprawy.
Właściwości
Name
id
Type
string
Description
Unikalny identyfikator zadania.
Name
type
Type
string
Description
Typ zadania. Wartość to creative-lab-lamp-build.
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 (progress) 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, 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.
Name
finished_at
Type
timestamp
Description
Znacznik czasu zakończenia zadania, w milisekundach.
Name
expires_at
Type
timestamp
Description
Znacznik czasu wygaśnięcia wyniku zadania, w milisekundach.
Name
preceding_tasks
Type
integer
Description
Liczba zadań poprzedzających. Ma znaczenie tylko wtedy, gdy status to PENDING.
Name
task_error
Type
object
Description
Szczegóły błędu dla zadań zakończonych niepowodzeniem. Zobacz Błędy, aby poznać pełny opis obiektu task_error.
Name
consumed_credits
Type
integer
Description
Liczba kredytów zużytych przez to zadanie. Zwraca 0 dla zadań ze statusem FAILED (kredyty są zwracane w przypadku niepowodzenia).
Name
model_urls
Type
object
Description
Adresy URL do pobrania wygenerowanych artefaktów, indeksowane według nazwy artefaktu. Zestaw kluczy zależy od output.format oraz options.light_source_preset:
Name
lamp_stl
Type
string
Description
Adres URL do pobrania pliku lamp.stl: klosza lampy z otwartym spodem wraz z płytą podstawy zawierającą otwór na oprawę, lub pojedynczego, szczelnego klosza lampy, gdy options.light_source_preset miało wartość none. Obecny, gdy output.format miało wartość stl (wartość domyślna).
Name
base_stl
Type
string
Description
Adres URL do pobrania pliku base.stl, mocowania oprawy źródła światła. Obecny, gdy output.format miało wartość stlorazoptions.light_source_preset nie miało wartości none. Pomijany, gdy ustawienie wstępne mocowania miało wartość none.
Name
bundle_zip
Type
string
Description
Adres URL do pobrania paczki zip zawierającej wszystkie artefakty wygenerowane przez procesor (lamp.stl, opcjonalnie base.stl, a gdy options.include_result_json ma wartość true — również result.json). Obecny, gdy output.format miało wartość zip. Gdy obecne jest bundle_zip, pola lamp_stl / base_stl są pomijane.