lowpoly zostanie wycofany 30 paź 2026. Zmień model przed tymi datami, aby uniknąć błędów żądań. Zobacz wszystkie wycofania

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.


POST/openapi/v1/relief

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

POST
/openapi/v1/relief
# 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 null lub "" jest równoznaczne z pominięciem tego parametru. Każda inna wartość zwraca 400.

  • Name
    should_generate_model
    Type
    boolean
    domyślne true
    Description

    Czy zbudować model płaskorzeźby. Ustaw na false dla 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 20 do 250 milimetrów. Przy użyciu remove_base model 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 0 do 60 milimetrów. Gdy remove_base jest ustawione na true, wartość 0 pozostawia 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_threshold określa, co liczy się jako tło. Meshy sprawdza removal_threshold niezależnie od wartości tego parametru.

Dotyczy tylko gdy 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.01 do 1, gdzie mapa głębi przebiega od 0 do 1. 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.1 do 10 milimetrów. Gdy remove_base jest true, pomiń ten parametr lub wyślij 0.

  • Name
    bend_mode
    Type
    string
    domyślne off
    Description

    Czy zgiąć płaskorzeźbę i w którą stronę. Gdy nie jest off, bend_axis i bend_angle kształ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.
Dotyczy tylko gdy 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 0 do 360 stopni. Poniżej 1 pł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 512 do 2048. Wyższa wartość zachowuje drobniejsze szczegóły i tworzy większe pliki. Przy domyślnej wartości 1024 plik GLB ma około 40 do 50 MB, a plik STL około 80 do 105 MB. Zdjęcie kwadratowe daje większe rozmiary. Przy 2048 mają one około 150 MB i 300 MB. Zgięcie zwiększa ich rozmiar: plik STL może osiągnąć około 800 MB przy 2048.

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 variant nie jest high ani low, albo mesh_resolution nie jest liczbą całkowitą od 512 do 2048.
    • Grubość podstawy: base_thickness_mm nie jest 0 przy remove_base ustawionym na true, lub jest poniżej 0.1 bez tego ustawienia.
    • Niedostępny adres URL: Meshy nie może pobrać obrazu spod image_url, na przykład dlatego, że adres URL zwraca 404 lub 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.

  • 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.


GET/openapi/v1/relief/:id

Pobierz zadanie Płaskorzeźby

Zwraca zadanie Płaskorzeźby na podstawie jego ID.

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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

Obiekt zadania Płaskorzeźby.


DELETE/openapi/v1/relief/:id

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

DELETE
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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.


GET/openapi/v1/relief

Lista zadań Płaskorzeźby

Zwraca listę Twoich zadań Płaskorzeźby.

Request

GET
/openapi/v1/relief
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 1 i taka jest wartość domyślna.

  • Name
    page_size
    Type
    integer
    Description

    Liczba zadań na stronę, maksymalnie 100. Domyślnie 10. Meshy traktuje wartość od 101 do 255 jako 100, a większa wartość zwraca 400.

  • 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.


GET/openapi/v1/relief/:id/stream

Strumieniowanie zadania Płaskorzeźby

Strumieniuje aktualizacje zadania Płaskorzeźby jako zdarzenia Server-Sent Events (SSE).

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream
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_resolution zawiera 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, oraz 100, gdy zakończy się powodzeniem.

  • Name
    status
    Type
    string
    Description

    Status zadania, jeden z: PENDING, IN_PROGRESS, SUCCEEDED lub FAILED.

  • 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, lub 0 dla zadania FAILED, które Meshy zwraca.