Zmień tekstowy prompt lub zdjęcie źródłowe w klosz lampy nadający się do druku 3D w dwóch
etapach: prototyp generuje stylizowany, matowobiały obraz koncepcyjny, a następnie
budowanie przekształca ten obraz koncepcyjny w pusty w środku klosz lampy STL (opcjonalnie
połączony z dyskiem podstawy do mocowania źródła światła). Te dwa etapy są powiązane
za pomocą input_task_id.
Wygeneruj pojedynczy matowobiały obraz koncepcyjny abażuru — albo
z tekstowego promptu (text-to-3D), albo ze zdjęcia referencyjnego (image-to-3D).
Zwrócony identyfikator zadania jest tym, co przekazujesz jako input_task_id do punktu końcowego
budowania. Zobacz
Obiekt zadania prototypu lampy,
aby poznać strukturę odpowiedzi.
Parametry
Wymagane jest dokładnie jedno z text lub image_url. Przekazanie obu albo żadnego zwraca 400.
Zdjęcie źródłowe, którego Meshy używa jako wizualnego odniesienia dla abażuru. Wymagane, gdy pominięto text. Obecnie obsługujemy formaty .jpg, .jpeg, .png i .webp.
Obraz można podać na dwa sposoby:
Publicznie dostępny URL: URL dostępny z publicznego internetu.
Data URI: Zakodowany w base64 Data URI obrazu. Przykład Data URI: data:image/jpeg;base64,<your base64-encoded image data>.
Name
image_subject
Type
string
domyślne character
Description
Wskazówka kategorii tematu dla ścieżki image-to-3D. Dostępne wartości:
character (domyślne) — pojedyncza postać / obiekt (figurina, zwierzę, maskotka itp.).
landscape — plenerowa scena / panorama (góra, panorama miasta, las itp.).
Ignorowane na ścieżce text-to-3D.
Name
name
Type
string
Description
Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków.
Zwraca
Właściwość result odpowiedzi zawiera id zadania nowo utworzonego zadania prototypu lampy. Odpytuj punkt końcowy Pobierz zadanie albo zasubskrybuj strumień, aż zadanie osiągnie SUCCEEDED, a następnie przekaż ten identyfikator do punktu końcowego budowania jako input_task_id.
Tryby niepowodzenia
Name
400 - Bad Request
Description
Żądanie było nieakceptowalne. Typowe przyczyny:
Brakujący parametr: Wymagane jest dokładnie jedno z text lub image_url.
Podano oba: Przekazanie zarówno text, jak i image_url jest odrzucane — wzajemnie się wykluczają.
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 albo 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 zniekształcony.
Treść oznaczona: Obraz wejściowy został oznaczony przez NSFW lub moderation własności intelektualnej.
Tekst zbyt długi: text przekracza 800 znaków.
Nieprawidłowy image_subject: Nie jest jednym z 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 Twój limit szybkości.
Request
POST
/openapi/creative-lab/lamp/v1/prototype
# Stage 1 (image-to-3D): generate a matte-white lampshade concept imagecurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -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>", "image_subject": "character" }'# Stage 1 (text-to-3D): generate from a text promptcurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -X POST \ -H "Authorization: Bearer ${YOUR_API_KEY}" \ -H 'Content-Type: application/json' \ -d '{ "text": "a stylized owl perched on a tree branch under moonlight" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo, then generate the prototype image used by the lamp build stage.
Wygeneruj końcowy, nadający się do druku 3D klosz lampy z zakończonego
powodzeniem zadania prototypu. Budowanie uruchamia potok image-to-3D na obrazie
koncepcyjnym prototypu, a następnie przetwarza siatkę przez procesor lampy, aby ją
wydrążyć, spłaszczyć górę, opcjonalnie wyciąć podstawę oraz (gdy wybrano preset
mocowania) wygenerować oddzielny dysk podstawy dla źródła światła. Zobacz
Obiekt zadania budowania lampy, aby poznać
kształt odpowiedzi.
Parametry
Name
input_task_id
Type
string
Wymagane
Description
ID zadania prototypu utworzonego za pomocą tego samego punktu końcowego OpenAPI. Prototyp musi być utworzony przy użyciu tego samego klucza API, musi osiągnąć SUCCEEDED i musi wygenerować dokładnie jeden obraz kandydujący.
Zadania prototypu utworzone przez aplikację webową nie są akceptowane — punkt końcowy budowania akceptuje tylko zadania prototypu utworzone przez POST /openapi/creative-lab/lamp/v1/prototype i odrzuca każde inne źródło z 404.
Name
name
Type
string
Description
Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków.
options
Opcjonalne parametry dostrajania geometrii klosza lampy. Każde pole ma rozsądną wartość domyślną — wyślij tylko te, które chcesz nadpisać.
Name
diameter_mm
Type
number
domyślne 80
Description
Docelowy maksymalny wymiar prostopadłościanu ograniczającego klosza lampy, w milimetrach. Siatka jest skalowana równomiernie, aby się zmieścić. Zakres: [50, 400].
Name
thickness_mm
Type
number
domyślne 1.5
Description
Grubość ścianki pustego klosza lampy, w milimetrach. Zakres: (0, 10].
Name
cut_amount_percent
Type
number
domyślne 35
Description
Procent wysokości klosza lampy do spłaszczenia u góry, aby wydruk mógł leżeć na stole. Zakres: [1, 100].
Name
light_source_preset
Type
string
domyślne bambu_mh001_60mm
Description
Preset mocowania źródła światła, który określa, czy (i jaki) dysk podstawy wygenerować wraz z kloszem lampy. Dostępne wartości:
bambu_mh001_60mm (domyślnie) — generuje dysk podstawy 60 mm o rozmiarze dla kompatybilnego mocowania źródła światła. Wynik zawiera model_urls.base_stl.
none — brak mocowania, brak dysku podstawy. model_urls.base_stl jest pomijane.
Name
fixture_offset_x_mm
Type
number
domyślne 0
Description
Poziome przesunięcie osi X wycięcia mocowania względem środka klosza lampy, 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
Pionowe przesunięcie osi Z wycięcia mocowania względem dołu klosza lampy, w milimetrach. Zakres: [-80, 80].
Name
rotate_x_deg
Type
number
domyślne 0
Description
Obrót wokół osi X zastosowany do zaimportowanej siatki przed przetwarzaniem, w stopniach. Zakres: [-360, 360].
Name
rotate_y_deg
Type
number
domyślne 0
Description
Obrót wokół osi Y zastosowany do zaimportowanej siatki przed przetwarzaniem, w stopniach. Zakres: [-360, 360].
Name
rotate_z_deg
Type
number
domyślne 0
Description
Obrót wokół osi Z zastosowany do zaimportowanej siatki przed przetwarzaniem, w stopniach. Zakres: [-360, 360].
Name
include_result_json
Type
boolean
domyślne false
Description
Gdy true i output.format to zip, dołącza result.json procesora lampy (zawierający zmierzone metryki siatki + rozwiązany zestaw opcji) do pakietu. Ignorowane, gdy output.format to stl.
Pakiet artefaktów zwracany przez budowanie. Dostępne wartości:
stl (domyślnie) — zwraca klosz lampy jako model_urls.lamp_stl, plus model_urls.base_stl, gdy light_source_preset ≠ none.
zip — pakuje każdy artefakt generowany przez procesor (lamp.stl, opcjonalny base.stl, opcjonalny result.json) do jednego pliku zip i zwraca go w model_urls.bundle_zip.
Zwraca
Właściwość result odpowiedzi zawiera id zadania nowo utworzonego zadania budowania lampy. Odpytuj punkt końcowy Pobierz zadanie lub subskrybuj strumień, aż zadanie osiągnie SUCCEEDED, a następnie pobierz artefakty z model_urls.
Tryby niepowodzeń
Name
400 - Bad Request
Description
Żądanie było nieakceptowalne. 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ńczyło się powodzeniem: Odwołane zadanie prototypu nie osiągnęło jeszcze SUCCEEDED.
Brak kandydata: Zadanie prototypu zakończyło się powodzeniem, ale nie wygenerowało obrazu kandydującego.
Opcje poza zakresem: Jedno z pól options znalazło się poza dozwolonym zakresem lub zestawem enum.
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
Odwołane zadanie prototypu nie istnieje, należy do innego użytkownika lub zostało utworzone przez aplikację webową (tylko zadania prototypu w mode API można łączyć z budowaniem).
Pobierz zadanie prototypu lub budowy, podając prawidłowe 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 nadal ma status PENDING, kredyty zużyte
w momencie utworzenia są zwracane. Zadania, które są już IN_PROGRESS, są
anulowane bez zwrotu (worker może już zużywać zasoby).
Zadania, które osiągnęły już stan końcowy (SUCCEEDED, FAILED,
CANCELED), nie mogą zostać 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 powodzenia z pustą treścią odpowiedzi.
Tryby niepowodzenia
Name
400 - Bad Request
Description
Zadanie jest 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 albo jego etap nie pasuje do ścieżki URL.
Strumieniuj aktualizacje w czasie rzeczywistym dla zadania lampy za pośrednictwem 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ń prototypu lampy
lub kompilacji lampy jako
Server-Sent Events. W przypadku zadań PENDING lub IN_PROGRESS strumień
odpowiedzi będzie zawierał tylko 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": 30,"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 stronicowaną listę swoich zadań lampy dla pojedynczego etapu. Ścieżka
URL wybiera etap — /prototype zwraca zadania prototypu; /build
zwraca zadania budowania. Zadania z innego etapu nie są uwzględniane w żadnej
odpowiedzi.
Parametry ścieżki
Name
stage
Type
path
Wymagane
Description
Albo prototype, albo build. Kolekcja zwraca tylko zadania,
których etap odpowiada adresowi URL — pobranie /prototype nigdy nie zwraca
zadań budowania i odwrotnie.
Parametry zapytania
Name
page_num
Type
integer
domyślne 1
Description
Numer strony dla stronicowania.
Name
page_size
Type
integer
domyślne 10
Description
Limit rozmiaru strony. Maksymalna dozwolona liczba to 50 elementów.
Name
sort_by
Type
string
domyślne -created_at
Description
Pole, według którego należy sortować. Dostępne wartości:
+created_at: Sortuj według czasu utworzenia w kolejności rosnącej.
-created_at: Sortuj według czasu utworzenia w kolejności malejącej.
Obiekt zadania prototypu lampy to jednostka pracy, którą Meshy śledzi, aby
wygenerować stylizowany, matowobiały obraz koncepcyjny na podstawie promptu tekstowego
lub zdjęcia źródłowego. 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 identyfikatora UUID sortowalnego typu k dla identyfikatorów zadań, nie należy przyjmować żadnych założeń dotyczących 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, 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
progress zadania. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość będzie mieć wartość 0. Gdy zadanie zakończy się powodzeniem, wartość ta stanie się 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 r. UTC, zgodnie ze
standardem RFC 3339.
Na przykład piątek, 1 września 2023 r. 12:00:00 PM 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 nie zostało jeszcze rozpoczęte, ta właściwość będzie mieć wartość 0.
Name
finished_at
Type
timestamp
Description
Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie nie zostało jeszcze zakończone, ta właściwość będzie mieć 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 zadań zakończonych niepowodzeniem. Zobacz Błędy, aby uzyskać pełną referencję obiektu task_error.
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 (kredyty są zwracane w przypadku niepowodzenia).
Name
image_urls
Type
array of strings
Description
Adresy URL do pobrania dla kandydatów obrazów koncepcyjnych wygenerowanych przez to zadanie prototypu. Obecnie API zawsze zwraca dokładnie jednego kandydata; pole jest tablicą, aby przyszłe wersje mogły udostępniać wielu kandydatów bez zmiany łamiącej kompatybilność.
Obiekt zadania budowy lampy to jednostka pracy, którą Meshy śledzi, aby
wygenerować finalny, nadający się do druku 3D abażur z zakończonego powodzeniem zadania prototypu.
Budowa uruchamia potok szkicu image-to-3D + tekstury na obrazie koncepcyjnym
prototypu, a następnie przetwarza siatkę przez procesor lampy, aby
wydrążyć, spłaszczyć i (opcjonalnie) wyciąć podstawę 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 tworzenia zadania. 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
Progress zadania. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość będzie mieć wartość 0. Po pomyślnym ukończeniu zadania wartość ta stanie się 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 poprzedzających zadań. 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 uzyskać pełną referencję obiektu task_error.
Name
consumed_credits
Type
integer
Description
Liczba kredytów zużytych przez to zadanie. Zwraca 0 dla zadań 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 i options.light_source_preset:
Name
lamp_stl
Type
string
Description
Adres URL do pobrania klosza lampy lamp.stl. Obecny, gdy output.format było stl (wartość domyślna).
Name
base_stl
Type
string
Description
Adres URL do pobrania podstawy mocowania base.stl. Obecny, gdy output.format było stlioptions.light_source_preset nie było none. Pomijany, gdy preset mocowania był none.
Name
bundle_zip
Type
string
Description
Adres URL do pobrania pakietu zip każdego artefaktu emitowanego przez procesor (lamp.stl, opcjonalnie base.stl oraz — gdy options.include_result_json ma wartość true — result.json). Obecny, gdy output.format było zip. Gdy bundle_zip jest obecny, lamp_stl / base_stl są pomijane.