Płaskorzeźba API
Zamień jedno zdjęcie w model 3D w formie płaskorzeźby oraz 16-bitową mapę głębi, przeznaczone do druku 3D, grawerowania laserowego i frezowania CNC.
Utwórz zadanie Płaskorzeźby
Tworzy zadanie Płaskorzeźby. Zadanie zamienia zdjęcie w model bas-reliefu. Po powodzeniu zadanie generuje model jako plik GLB i plik STL, 16-bitową mapę głębi w skali szarości oraz obraz podglądu. Aby uzyskać tylko mapę głębi, ustaw should_generate_model na false.
Zadanie działa w tle.
Zadanie Płaskorzeźby nie może być danymi wejściowymi innego punktu końcowego, takiego jak Remesh, Konwertuj czy Auto Split. Takie żądania zwracają 403.
Request
# Simple request: a low relief, 60 mm on its longer side
curl https://api.meshy.ai/openapi/v1/relief \
-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>"
}'
# Advanced request: a deep 120 mm relief with a thicker base, curved from side to side
curl https://api.meshy.ai/openapi/v1/relief \
-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>",
"variant": "high",
"size_mm": 120,
"carving_depth_mm": 10,
"base_thickness_mm": 3,
"bend_mode": "convex",
"bend_angle": 90
}'
Response
{
"result": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20"
}
Parametry
- Name
- image_url
- Type
- string
- Wymagane
- Description
Zdjęcie do przekształcenia w płaskorzeźbę, podane jako publiczny adres URL lub Data URI (
data:image/png;base64,...).Obraz musi być plikiem JPG, JPEG, PNG lub WebP o rozmiarze maksymalnie 20 MB i co najmniej 32 × 32 piksele. Jego dłuższy bok może być co najwyżej około 16 razy dłuższy niż krótszy bok. Każdy inny obraz zwraca
400. Meshy wypełnia przezroczyste obszary kolorem czarnym przed zbudowaniem płaskorzeźby.
- Name
- variant
- Type
- string
- domyślne low
- Description
Styl płaskorzeźby. Kształtuje mapę głębi i ustawia domyślną wartość
carving_depth_mm.Dostępne wartości:
high: głębsze rzeźbienie, do wydruków 3D.low: płytkie rzeźbienie, do grawerowania laserowego, grawerowania CNC i cienkich tabliczek.
Wysłanie
nulllub""jest równoznaczne z pominięciem tego parametru. Każda inna wartość zwraca400.
- Name
- should_generate_model
- Type
- boolean
- domyślne true
- Description
Czy zbudować model płaskorzeźby. Ustaw na
falsedla zadania generującego tylko mapę głębi, bez modelu i bez obrazu podglądu. Meshy nadal sprawdza parametry rozmiaru, rzeźbienia, podstawy, zgięcia i rozdzielczości, ale ich nie wykorzystuje. Nie zmienia to kosztu w kredytach.
- Name
- size_mm
- Type
- number
- domyślne 60
- Description
Długość dłuższego boku zdjęcia na modelu, mierzona na płasko przed ewentualnym zgięciem, od
20do250milimetrów. Przy użyciuremove_basemodel może być mniejszy.
- Name
- carving_mode
- Type
- string
- domyślne emboss
- Description
Czy obiekt wystaje z płyty, czy jest w nią wcięty.
Dostępne wartości:
emboss: bliższe części zdjęcia wystają.engrave: głębia jest odwrócona, więc bliższe części są wcięte.
Mapa głębi jest taka sama w obu trybach.
- Name
- carving_depth_mm
- Type
- number
- domyślne 6 (high), 3 (low)
- Description
Jak głęboko wyrzeźbiona jest płaskorzeźba, od
0do60milimetrów. Gdyremove_basejest ustawione natrue, wartość0pozostawia pusty model. Zadanie nadal kończy się powodzeniem i kosztuje 20 kredytów, a jego pliki GLB i STL nie mają geometrii.
- Name
- remove_base
- Type
- boolean
- domyślne false
- Description
Czy wyciąć tło i nie budować podstawy. Gdy jest
true,removal_thresholdokreśla, co liczy się jako tło. Meshy sprawdzaremoval_thresholdniezależnie od wartości tego parametru.
remove_base = true- Name
- removal_threshold
- Type
- number
- domyślne 0.01
- Description
Głębia, poniżej której Meshy wycina tło, od
0.01do1, gdzie mapa głębi przebiega od0do1. Wysoka wartość może wyciąć całą płaskorzeźbę i pozostawić pusty model, co nadal kończy się powodzeniem i jest naliczane.
- Name
- base_thickness_mm
- Type
- number
- domyślne 1, or 0 with remove_base
- Description
Grubość podstawy, od
0.1do10milimetrów. Gdyremove_basejesttrue, pomiń ten parametr lub wyślij0.
- Name
- bend_mode
- Type
- string
- domyślne off
- Description
Czy zgiąć płaskorzeźbę i w którą stronę. Gdy nie jest
off,bend_axisibend_anglekształtują zgięcie. Meshy sprawdza je niezależnie od wartości tego parametru.Dostępne wartości:
off: płaska płaskorzeźba.convex: przód wybrzusza się na zewnątrz.concave: przód wygina się do wewnątrz.
bend_mode = convex or concave- Name
- bend_axis
- Type
- string
- domyślne xz
- Description
Które krawędzie zwija zgięcie.
Dostępne wartości:
xz: lewa i prawa krawędź.yz: górna i dolna krawędź.
- Name
- bend_angle
- Type
- number
- domyślne 60
- Description
Kąt, jaki obejmuje zgięcie, od
0do360stopni. Poniżej1płaskorzeźba pozostaje płaska.
- Name
- mesh_resolution
- Type
- integer
- domyślne 1024
- Description
Liczba punktów siatki wzdłuż dłuższego boku zdjęcia, od
512do2048. Wyższa wartość zachowuje drobniejsze szczegóły i tworzy większe pliki. Przy domyślnej wartości1024plik GLB ma około 40 do 50 MB, a plik STL około 80 do 105 MB. Zdjęcie kwadratowe daje większe rozmiary. Przy2048mają one około 150 MB i 300 MB. Zgięcie zwiększa ich rozmiar: plik STL może osiągnąć około 800 MB przy2048.
Zwraca
202 Accepted, z identyfikatorem nowego zadania Płaskorzeźby w result.
Tryby niepowodzenia
- Name
400 - Bad Request- Description
Żądanie nie może zostać wykonane. Komunikat błędu wskazuje znaleziony problem. Na przykład:
- Brakujący parametr: nie wysłano
image_url. - Nieprawidłowy parametr: parametr ma niewłaściwy typ, jest poza swoim zakresem lub nie jest jedną z dostępnych wartości. Na przykład
variantnie jesthighanilow, albomesh_resolutionnie jest liczbą całkowitą od512do2048. - Grubość podstawy:
base_thickness_mmnie jest0przyremove_baseustawionym natrue, lub jest poniżej0.1bez tego ustawienia. - Niedostępny adres URL: Meshy nie może pobrać obrazu spod
image_url, na przykład dlatego, że adres URL zwraca404lub upłynął limit czasu. - Nieprawidłowy obraz: obraz nie jest plikiem JPG, JPEG, PNG ani WebP, przekracza 20 MB, jest mniejszy niż 32 × 32 piksele, ma zbyt wiele pikseli lub nie można go odczytać.
- Skrajne proporcje: dłuższy bok obrazu jest ponad 16 razy dłuższy niż krótszy bok.
Popraw żądanie, a następnie wyślij je ponownie. Meshy nie nalicza za to opłaty. Zobacz Błędy.
- Brakujący parametr: nie wysłano
- Name
401 - Unauthorized- Description
Brak klucza API lub klucz API jest nieprawidłowy. Sprawdź nagłówek
Authorization.
- Name
402 - Payment Required- Description
Na przykład:
- Niewystarczające kredyty: konto nie ma wystarczającej liczby kredytów na to zadanie lub konto osiągnęło limit kredytów. Sprawdź saldo kredytów, a następnie spróbuj ponownie.
- Plan darmowy: utworzenie zadania wymaga płatnego planu. Uaktualnij swój plan w ustawieniach subskrypcji, a następnie spróbuj ponownie.
- Name
403 - Forbidden- Description
Moderacja treści zablokowała obraz. Meshy nie nalicza opłaty za to żądanie. Wyślij inny obraz.
- Name
429 - Too Many Requests- Description
Osiągnięto jeden z tych limitów:
- Wysłano zbyt wiele żądań. Odczekaj, a następnie spróbuj ponownie. Zobacz Limity szybkości.
- Zbyt wiele Twoich zadań jest w kolejce lub w trakcie wykonywania. Poczekaj, aż niektóre się zakończą, a następnie spróbuj ponownie.
- W planie nielimitowanym bez pozostałych kredytów osiągnięto liczbę zadań, które mogą działać bez kredytów. Poczekaj na zakończenie zadania lub dodaj kredyty.
Jeśli kontrola bezpieczeństwa odrzuci obraz podczas wykonywania zadania, zadanie kończy się niepowodzeniem z task_error.type ustawionym na invalid_input i task_error.code ustawionym na provider_content_refused. Meshy zwraca kredyty za zadanie. Wyślij inny obraz. Zobacz Błędy.
Pobierz zadanie Płaskorzeźby
Zwraca zadanie Płaskorzeźby na podstawie jego ID.
Request
curl https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametry
- Name
- id
- Type
- path
- Description
ID zadania z odpowiedzi utworzenia.
Zwraca
Usuń zadanie Płaskorzeźby
Trwale usuwa zadanie Płaskorzeźby, w tym jego model, mapę głębi i dane. Usunięcia nie można cofnąć.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-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 keeps 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."
}
Parametry ścieżki
- Name
- id
- Type
- path
- Description
ID zadania do usunięcia.
Status zadania
Usunięcie zadania o statusie PENDING zwraca kredyty wykorzystane przy jego tworzeniu.
Zadania o statusie IN_PROGRESS nie można usunąć. Żądanie zwraca 409 Conflict,
a zadanie nadal się wykonuje. Meshy nie zwraca kredytów za zadanie, które już się rozpoczęło,
więc jego usunięcie kosztowałoby Cię zarówno kredyty, jak i wynik. Poczekaj, aż osiągnie
status SUCCEEDED lub FAILED, a następnie je usuń.
Usunięcie zadania o statusie SUCCEEDED nie zwraca jego kredytów. Za zadanie ze statusem FAILED kredyty zostały już zwrócone w momencie niepowodzenia.
Zwraca
200 OK, gdy zadanie zostało usunięte, lub 409 Conflict, gdy zadanie ma status
IN_PROGRESS.
Lista zadań Płaskorzeźby
Zwraca listę Twoich zadań Płaskorzeźby.
Request
curl https://api.meshy.ai/openapi/v1/relief?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
]
Parametry
- Name
- page_num
- Type
- integer
- Description
Numer strony do zwrócenia. Zaczyna się od
1i taka jest wartość domyślna.
- Name
- page_size
- Type
- integer
- Description
Liczba zadań na stronę, maksymalnie
100. Domyślnie10. Meshy traktuje wartość od101do255jako100, a większa wartość zwraca400.
- Name
- sort_by
- Type
- string
- Description
Kolejność sortowania.
Dostępne wartości:
+created_at: od najstarszych-created_at: od najnowszych
Zwraca
Stronicowaną listę obiektów zadań Płaskorzeźby.
Strumieniowanie zadania Płaskorzeźby
Strumieniuje aktualizacje zadania Płaskorzeźby jako zdarzenia Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametry
- Name
- id
- Type
- path
- Description
ID zadania z odpowiedzi tworzenia.
Zwraca
Strumień obiektów zadania Płaskorzeźby jako zdarzenia Server-Sent Events.
Każde zdarzenie message zawiera pełny obiekt zadania, taki sam, jaki zwraca Pobieranie zadania Płaskorzeźby. Gdy zadanie ma status PENDING lub IN_PROGRESS, pola, które zmieniają się między zdarzeniami, to progress, status, started_at i preceding_tasks (obecne tylko wtedy, gdy przed tym zadaniem znajdują się inne zadania w kolejce). Pola model_urls, depth_map_url i thumbnail_url otrzymują wartości, gdy zadanie osiągnie status SUCCEEDED. Zadanie dotyczące wyłącznie mapy głębi zachowuje model_urls jako {} oraz puste thumbnail_url.
Zdarzenie error zawiera tylko status_code i message, dlatego przed odczytaniem status sprawdź najpierw nazwę zdarzenia.
Obiekt zadania Płaskorzeźby
Obiekt zadania Płaskorzeźby opisuje jedną płaskorzeźbę utworzoną ze zdjęcia. model_urls, depth_map_url oraz thumbnail_url są zawsze obecne i puste, dopóki zadanie nie zakończy się powodzeniem.
The Relief Task Object
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Depth map only
{
"id": "0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31",
"type": "relief",
"model_urls": {},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31/output/depth.png?Expires=***",
"thumbnail_url": "",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1700259230000,
"task_error": null,
"consumed_credits": 20
}
- Name
- id
- Type
- string
- Description
ID zadania. Traktuj je jako nieprzejrzysty ciąg znaków i nie polegaj na jego formacie.
- Name
- type
- Type
- string
- Description
Typ zadania, zawsze
relief.
- Name
- model_urls
- Type
- object
- Description
Adresy URL do pobrania modelu płaskorzeźby. Pliki mogą być duże;
mesh_resolutionzawiera typowe rozmiary.- Name
glb- Type
- string
- Description
Plik GLB, bez tekstury. Jego jednostką są metry. Nieobecny dla zadania obejmującego tylko mapę głębi.
- Name
stl- Type
- string
- Description
Ten sam model w postaci binarnego pliku STL. Jego jednostką są milimetry, więc otwiera się w rzeczywistym rozmiarze płaskorzeźby, z osią Z skierowaną w górę. Nieobecny dla zadania obejmującego tylko mapę głębi.
- Name
- depth_map_url
- Type
- string
- Description
Adres URL do pobrania 16-bitowej mapy głębi w skali szarości, na podstawie której zbudowano płaskorzeźbę. Jaśniejsze piksele są wyższe. Wartości to wysokości względne, a nie milimetry. Oprogramowanie do grawerowania laserowego i CNC może używać jej jako mapy wysokości. Plik ma od około 1 do 2 MB. Puste, jeśli żadnej nie ma.
- Name
- thumbnail_url
- Type
- string
- Description
Adres URL do pobrania podglądu modelu płaskorzeźby. Puste, jeśli żaden nie został wyrenderowany, w tym dla zadania obejmującego tylko mapę głębi.
- Name
- progress
- Type
- integer
- Description
Jak dużo z zadania zostało wykonane, w procentach. Wynosi
0, dopóki zadanie się nie rozpocznie, oraz100, gdy zakończy się powodzeniem.
- Name
- status
- Type
- string
- Description
Status zadania, jeden z:
PENDING,IN_PROGRESS,SUCCEEDEDlubFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Liczba zadań poprzedzających to zadanie w kolejce. Pole jest pomijane, gdy wartość wynosi
0, więc pojawia się tylko wtedy, gdy przed tym zadaniem znajdują się inne zadania.
- Name
- created_at
- Type
- timestamp
- Description
Czas utworzenia zadania, w milisekundach Unix.
- Name
- started_at
- Type
- timestamp
- Description
Czas rozpoczęcia zadania, w milisekundach Unix. Wynosi
0, dopóki zadanie się nie rozpocznie.
- Name
- finished_at
- Type
- timestamp
- Description
Czas zakończenia zadania, w milisekundach Unix. Wynosi
0, dopóki zadanie się nie zakończy.
- Name
- expires_at
- Type
- timestamp
- Description
Czas wygaśnięcia wyniku zadania, w milisekundach Unix. Wynosi
0, dopóki zadanie się nie zakończy.
- Name
- task_error
- Type
- object
- Description
Szczegóły błędu, gdy zadanie zakończy się niepowodzeniem. Zobacz Błędy.
- Name
- consumed_credits
- Type
- integer
- Description
Liczba kredytów zużytych przez zadanie:
20, lub0dla zadaniaFAILED, które Meshy zwraca.