Zamień zdjęcie źródłowe w medalion breloka nadający się do druku 3D — kolorowaną
plakietkę z reliefem głębi — w dwóch etapach: prototype generuje skolorowany
obraz koncepcyjny na podstawie zdjęcia wejściowego, a następnie build zamienia
ten obraz koncepcyjny w model 3D w postaci reliefu. Oba etapy są powiązane za pomocą input_task_id.
Wygeneruj pojedynczy skolorowany obraz koncepcyjny ze zdjęcia źródłowego. Zwrócony
identyfikator zadania to wartość, którą przekazujesz jako input_task_id do punktu
końcowego budowania. Zapoznaj się z sekcją
Obiekt zadania prototypu breloka
aby poznać kształt odpowiedzi.
Parametry
Name
image_url
Type
string
Wymagane
Description
Zdjęcie źródłowe, które Meshy ma skolorować i przekształcić w obraz koncepcyjny gotowy do stworzenia breloka. 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>.
Name
name
Type
string
Description
Opcjonalna nazwa zadania do celów wyświetlania. Maksymalnie 100 znaków.
Nadaje ona zadaniu etykietę na twoim panelu i na listach zadań. Nie jest ona grawerowana na breloku — do tego celu służy name_text.
Name
name_text
Type
string
Description
Tekst do wygrawerowania na breloku, na przykład imię zwierzaka lub osoby. Maksymalnie 10 znaków, liczonych jako znaki Unicode, a nie bajty, więc 10-znakowe imię w języku chińskim, japońskim lub koreańskim zostanie zaakceptowane. Pomiń ten parametr, aby uzyskać brelok bez grawerunku.
Otaczające białe znaki są usuwane, a niewidoczne znaki formatujące są usuwane przed użyciem tekstu. Wynikowa wartość jest zwracana jako name_text w obiekcie zadania prototypu, dzięki czemu możesz potwierdzić dokładnie to, co zostanie wygrawerowane, zanim zapłacisz za etap budowania.
Grawerunek jest stosowany tutaj, na etapie prototypu. Etap budowania dziedziczy go automatycznie i nie przyjmuje własnego name_text.
Gdy tekst nie jest w prostym ASCII, wyślij treść żądania jako UTF-8 i ustaw Content-Type: application/json; charset=utf-8. Niektóre klienty HTTP — w tym Invoke-RestMethod z Windows PowerShell — domyślnie kodują treść jako ISO-8859-1, co po cichu zamienia każdy znak spoza alfabetu łacińskiego na ?, zanim dotrze do Meshy. API nie może odróżnić tego od grawerunku, o który faktycznie prosiłeś.
Name
remove_background
Type
boolean
domyślne false
Description
Gdy ustawione na true, obraz prototypu jest zwracany jako przezroczysty plik PNG w formacie RGBA z usuniętym tłem, dzięki czemu możesz nałożyć obiekt na dowolne tło.
Kontroluje to wyłącznie obraz zwracany przez ten punkt końcowy. Jest to oddzielne od opcji budowania o tej samej nazwie (domyślnie true), która kontroluje usuwanie tła przed procesem reliefowania.
Zwraca
Właściwość result odpowiedzi zawiera id zadania nowo utworzonego prototypu breloka. 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 niepowodzenia
Name
400 - Bad Request
Description
Żądanie było nie do przyjęcia. 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 sformułowany.
Zbyt długi grawerunek: name_text jest dłuższy niż 10 znaków. Żądanie jest odrzucane, a nie skracane, dzięki czemu nigdy nie zostaniesz obciążony za brelok wygrawerowany skróconą nazwą.
Treść oznaczona: obraz wejściowy został oznaczony przez moderation NSFW lub moderation praw własności intelektualnej, albo grawerunek name_text został oznaczony przez moderation NSFW. Grawerunek jest sprawdzany wyłącznie pod kątem treści NSFW — sprawdzanie praw własności intelektualnej dotyczy obrazu.
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/creative-lab/keychain/v1/prototype
# Stage 1: generate a colorized keychain concept imagecurlhttps://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json; charset=utf-8' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "name_text": "Luna" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo, then generate the prototype image used by the keychain build stage.
Wygeneruj finalny medalion breloka do druku 3D na podstawie zakończonego powodzeniem zadania prototypu. Kompilacja (build) uruchamia potok reliefu na podstawie mapy głębi na skolorowanym obrazie koncepcyjnym prototypu i dostarcza pojedynczy artefakt siatki w formacie, który wskażesz. Zapoznaj się z sekcją
Obiekt zadania budowania breloka, aby zobaczyć kształt odpowiedzi.
Parametry
Name
input_task_id
Type
string
Wymagane
Description
Identyfikator zadania (task ID) zadania prototypu utworzonego za pomocą tego samego punktu końcowego OpenAPI. Prototyp musi zostać utworzony za pomocą tego samego klucza API, musi osiągnąć status SUCCEEDED i musi wygenerować dokładnie jeden obraz kandydujący.
Zadania prototypów utworzone za pomocą aplikacji webowej nie są akceptowane — punkt końcowy budowania akceptuje tylko zadania prototypów wygenerowane przez POST /openapi/creative-lab/keychain/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 dostrajające geometrię reliefu. Każde pole ma sensowną wartość domyślną — wyślij tylko te, które chcesz nadpisać.
Name
badge_shape
Type
string
domyślne circle
Description
Kontur/silhouette medalionu breloka. Dostępne wartości:
circle (domyślnie)
rounded-rect
hexagon
shield
star
Name
size_mm
Type
number
domyślne 40
Description
Długość krawędzi kwadratu ograniczającego brelok, w milimetrach. Zakres: (0, 400].
Name
relief_height_mm
Type
number
domyślne 2.2
Description
Maksymalna wysokość reliefu nad podstawą, w milimetrach. Zakres: [0, 20].
Name
relief_offset_mm
Type
number
domyślne 0
Description
Przesunięcie wertykalne zastosowane do reliefu przed wytłoczeniem (extrusion), w milimetrach. Zakres: [0, 20].
Name
base_thickness_mm
Type
number
domyślne 0.1
Description
Grubość płaskiej płyty podstawy za reliefem, w milimetrach. Zakres: [0, 20].
Name
has_closed_back
Type
boolean
domyślne true
Description
Określa, czy tył medalionu jest zamknięty jako zamknięta powierzchnia. Ustaw na false dla otwartej powłoki (shell).
Name
relief_curve
Type
string
domyślne linear
Description
Krzywa transferu mapująca wartości mapy głębi na wysokość reliefu. Dostępne wartości:
linear (domyślnie)
gamma
s-curve
Name
curve_param
Type
number
domyślne 1.0
Description
Parametr kształtu dla krzywej transferu (znaczący tylko wtedy, gdy relief_curve ma wartość gamma). Zakres: (0, 10].
Name
invert_depth
Type
boolean
domyślne false
Description
Odwraca interpretację mapy głębi, tak aby ciemniejsze obszary stały się wyższym reliefem.
Name
smoothing
Type
number
domyślne 0.24
Description
Siła wygładzania zastosowana do mapy głębi przed ekstrakcją reliefu. Zakres: [0, 10].
Name
relief_scale
Type
number
domyślne 1.0
Description
Mnożnik skali wertykalnej zastosowany na wartości relief_height_mm. Zakres: (0, 10].
Name
depth_threshold
Type
number
domyślne 0.1
Description
Próg dolnoprzepustowy dla wartości mapy głębi; wszystko poniżej tego progu jest ograniczane do zera. Zakres: [0, 1].
Name
remove_background
Type
boolean
domyślne true
Description
Automatycznie usuwa tło z obrazu koncepcyjnego prototypu przed nałożeniem reliefu.
Odrębny od parametru prototypu o tej samej nazwie (domyślnie false), który kontroluje, czy sam obraz prototypu jest zwracany z przezroczystością.
Name
export_resolution
Type
integer
domyślne 512
Description
Rozdzielczość siatki użyta do eksportu. Zakres: [64, 2048].
Pakiet artefaktów zwracany przez kompilację. Dostępne wartości:
glb (domyślnie) — zwraca pojedynczy plik model.glb pod model_urls.glb.
obj — pakuje model.obj + model.mtl + texture.png i zwraca pakiet pod model_urls.obj.
zip — pakuje każdy artefakt wygenerowany przez generator i zwraca pakiet pod model_urls.bundle_zip.
Zwracane wartości
Właściwość result w odpowiedzi zawiera id zadania nowo utworzonego zadania budowania breloka. Odpytuj (poll) punkt końcowy Pobierz zadanie lub zapisz się do strumienia, aż zadanie osiągnie status SUCCEEDED, a następnie pobierz artefakt z jedynego wpisu w model_urls.
Rodzaje błędów
Name
400 - Bad Request
Description
Żądanie było niedopuszczalne. Typowe przyczyny:
Brakujący parametr: input_task_id jest wymagany.
Nieprawidłowy UUID: input_task_id nie jest prawidłowym UUID.
Zadanie nadrzędne nie zakończone powodzeniem: Wskazywane zadanie prototypu nie osiągnęło jeszcze statusu SUCCEEDED.
Brak kandydata: Zadanie prototypu zakończyło się powodzeniem, ale nie wygenerowało żadnego obrazu kandydującego.
Opcje poza zakresem: Jedno z pól options wykroczyło poza dozwolony zakres lub zestaw wartości 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, aby wykonać to zadanie.
Name
404 - Not Found
Description
Wskazywane zadanie prototypu nie istnieje, należy do innego użytkownika lub zostało utworzone za pomocą aplikacji webowej (tylko zadania prototypów w trybie API mogą być łączone w łańcuch z budowaniem).
Pobierz zadanie prototypu lub builda na podstawie prawidłowego id zadania. Ścieżka URL
musi odpowiadać etapowi zadania — zadanie builda pobrane przez
/prototype/:id zwróci 404, i odwrotnie.
Anuluje zadanie brelok. Jeśli zadanie ma nadal status PENDING, kredyty
zużyte w momencie utworzenia zostaną zwrócone. Zadania, które są już w stanie
IN_PROGRESS, są anulowane bez zwrotu (worker mógł już zużywać
zasoby). Zadań, które osiągnęły już stan końcowy
(SUCCEEDED, FAILED, CANCELED), nie można anulować.
Ścieżka URL musi odpowiadać etapowi zadania — wywołanie DELETE na
/prototype/:buildId zwraca 404.
Parametry ścieżki
Name
id
Type
path
Description
Unikalny identyfikator zadania brelok do anulowania.
Zwraca
Zwraca 204 No Content w przypadku sukcesu z pustym ciałem odpowiedzi.
Tryby niepowodzenia
Name
400 - Bad Request
Description
Zadanie znajduje się już w stanie końcowym i nie można go anulować.
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 breloka 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 ze
status_code: 404 i zamyka strumień.
Parametry
Name
id
Type
path
Description
Unikalny identyfikator zadania breloka do strumieniowania.
Zwraca
Zwraca strumień obiektów zadania Keychain Prototype
lub Keychain Build jako
Server-Sent Events. Każda ramka zawiera pełny obiekt zadania dla danego etapu — o tym samym kształcie, co
ten zwracany przez punkt końcowy Get — więc gdy 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.
// Error event example (wrong stage or task not found)event: errordata: {"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: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-keychain-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 20,"model_urls": {"glb":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***" }}
Pobierz stronicowaną listę zadań brelока dla jednego etapu. Ścieżka URL
określa etap — /prototype zwraca zadania prototypu; /build
zwraca zadania budowy. Zadania z drugiego etapu nie są zawarte w żadnej z odpowiedzi.
Parametry ścieżki
Name
stage
Type
path
Wymagane
Description
prototype albo build. Kolekcja zwraca tylko zadania,
których etap odpowiada adresowi URL — pobranie /prototype nigdy nie zwraca
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 100 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: Sortowanie według czasu utworzenia rosnąco.
-created_at: Sortowanie według czasu utworzenia malejąco.
Obiekt zadania prototypu breloka Keychain to jednostka pracy, którą Meshy śledzi w celu wygenerowania kolorowego obrazu koncepcyjnego na podstawie zdjęcia źródłowego. Wynik tego etapu jest przekazywany do etapu budowy za pomocą input_task_id.
Właściwości
Name
id
Type
string
Description
Unikalny identyfikator zadania. Choć jako szczegół implementacyjny używamy identyfikatorów UUID z możliwością sortowania k-sortowalnego dla identyfikatorów zadań, nie należy przyjmować żadnych założeń co do formatu identyfikatora.
Name
type
Type
string
Description
Typ zadania. Wartość to creative-lab-keychain-prototype.
Name
name
Type
string
Description
Nazwa zadania podana podczas jego tworzenia. Pusty ciąg, jeśli nazwa nie została podana.
Name
name_text
Type
string
Description
Grawerunek zastosowany na tym breloku, po przycięciu i usunięciu niewidocznych znaków formatujących. Nieobecne, jeśli zadanie zostało utworzone bez name_text. Porównaj tę wartość z tym, co wysłałeś, aby potwierdzić, że tekst przetrwał kodowanie Twojego klienta HTTP.
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 nie zostało jeszcze rozpoczęte, ta właściwość będzie równa 0. Po zakończeniu zadania sukcesem 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 UTC, zgodnie ze
standardem RFC 3339.
Na przykład piątek, 1 września 2023, 12:00:00 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 równa 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 równa 0.
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.
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 znaleźć pełny opis 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 kandydatów na obraz koncepcyjny wygenerowanych przez to zadanie prototypowe. Obecnie API zawsze zwraca dokładnie jednego kandydata; pole jest tablicą, aby przyszłe wersje mogły udostępniać wielu kandydatów bez wprowadzania zmian łamiących kompatybilność.
Obiekt Zadania Budowy Breloka to jednostka pracy, którą Meshy śledzi, aby
wygenerować finalną siatkę 3D breloka na podstawie zakończonego powodzeniem zadania prototypu. Budowa
uruchamia potok reliefu mapy głębi na obrazie koncepcyjnym prototypu i
publikuje pojedynczy artefakt siatki w formacie żądanym przez wywołującego.
Właściwości
Name
id
Type
string
Description
Unikalny identyfikator zadania.
Name
type
Type
string
Description
Typ zadania. Wartość to creative-lab-keychain-build.
Name
name
Type
string
Description
Nazwa zadania podana podczas jego tworzenia. Pusty ciąg znaków, jeśli nazwa nie została podana.
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ść 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 poprzedzających zadań. Ma znaczenie tylko wtedy, gdy status to PENDING.
Name
task_error
Type
object
Description
Szczegóły błędu dla nieudanych zadań. Zobacz Błędy, aby uzyskać pełny opis 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 wygenerowanego artefaktu, indeksowane nazwą artefaktu. Zawsze zawiera dokładnie jeden wpis — format żądany za pomocą output.format w żądaniu budowy. Klucz odpowiada żądanemu formatowi:
Name
glb
Type
string
Description
Adres URL do pobrania pliku GLB. Obecny, gdy output.format miało wartość glb (domyślną).
Name
obj
Type
string
Description
Adres URL do pobrania paczki zip zawierającej model.obj, model.mtl oraz texture.png. Obecny, gdy output.format miało wartość obj.
Name
bundle_zip
Type
string
Description
Adres URL do pobrania paczki zip zawierającej każdy artefakt wygenerowany przez generator. Obecny, gdy output.format miało wartość zip.