lowpoly dihentikan pada 30 Okt 2026. Ganti model sebelum tanggal-tanggal ini agar permintaan tidak error. Lihat semua penghentian

Relief timbul API

Ubah satu foto menjadi model 3D relief timbul dan peta kedalaman 16-bit, untuk pencetakan 3D, pengukiran laser, dan pemahatan CNC.


POST/openapi/v1/relief

Membuat Relief task

Membuat Relief task. Task ini mengubah foto menjadi model bas-relief. Saat berhasil, task akan menghasilkan model dalam bentuk file GLB dan file STL, peta kedalaman grayscale 16-bit, dan gambar pratinjau. Untuk hanya mendapatkan peta kedalaman, atur should_generate_model ke false.

Task ini berjalan di latar belakang.

Relief task tidak dapat menjadi input untuk endpoint lain, seperti Remesh, Konversi, atau Auto Split. Permintaan tersebut akan mengembalikan 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"
}

Parameter

  • Name
    image_url
    Type
    string
    Wajib
    Description

    Foto yang akan diubah menjadi relief, berupa URL publik atau data URI (data:image/png;base64,...).

    Gambar harus berupa file JPG, JPEG, PNG, atau WebP dengan ukuran maksimal 20 MB, dan minimal 32 × 32 piksel. Sisi yang lebih panjang paling banyak sekitar 16 kali sisi yang lebih pendek. Gambar lain akan mengembalikan 400. Meshy akan mengisi area transparan dengan warna hitam sebelum membangun relief.

  • Name
    variant
    Type
    string
    default low
    Description

    Gaya relief. Ini membentuk peta kedalaman dan menetapkan carving_depth_mm default.

    Nilai yang tersedia:

    • high: ukiran yang lebih dalam, untuk bagian yang dicetak 3D.
    • low: ukiran yang dangkal, untuk pengukiran laser, pengukiran CNC, dan plakat tipis.

    Mengirim null atau "" sama saja dengan tidak menyertakannya. Nilai lain akan mengembalikan 400.

  • Name
    should_generate_model
    Type
    boolean
    default true
    Description

    Apakah akan membangun model relief. Atur ke false untuk task yang hanya menghasilkan peta kedalaman, tanpa model dan tanpa gambar pratinjau. Meshy tetap memeriksa parameter ukuran, pengukiran, alas, lengkungan, dan resolusi, tetapi tidak menggunakannya. Ini tidak mengubah biaya kredit.

  • Name
    size_mm
    Type
    number
    default 60
    Description

    Panjang sisi foto yang lebih panjang pada model, diukur dalam keadaan datar sebelum ada lengkungan, dari 20 hingga 250 milimeter. Dengan remove_base, model dapat lebih kecil.

  • Name
    carving_mode
    Type
    string
    default emboss
    Description

    Apakah subjek menonjol dari plat atau dipotong ke dalamnya.

    Nilai yang tersedia:

    • emboss: bagian foto yang lebih dekat akan menonjol.
    • engrave: kedalaman dibalik, sehingga bagian yang lebih dekat terpotong ke dalam.

    Peta kedalaman sama di kedua mode.

  • Name
    carving_depth_mm
    Type
    number
    default 6 (high), 3 (low)
    Description

    Seberapa dalam relief diukir, dari 0 hingga 60 milimeter. Dengan remove_base diatur ke true, 0 menghasilkan model kosong. Task tetap berhasil dan dikenakan biaya 20 kredit, dan file GLB serta STL-nya tidak memiliki geometri.

  • Name
    remove_base
    Type
    boolean
    default false
    Description

    Apakah akan memotong latar belakang dan tidak membangun plat alas. Saat true, removal_threshold menentukan apa yang dianggap sebagai latar belakang. Meshy memeriksa removal_threshold dalam kedua kasus.

Hanya berlaku ketika remove_base = true
  • Name
    removal_threshold
    Type
    number
    default 0.01
    Description

    Kedalaman di bawah mana Meshy memotong latar belakang, dari 0.01 hingga 1, dengan peta kedalaman berjalan dari 0 hingga 1. Nilai yang tinggi dapat memotong seluruh relief dan menghasilkan model kosong, yang tetap berhasil dan dikenakan biaya.

  • Name
    base_thickness_mm
    Type
    number
    default 1, or 0 with remove_base
    Description

    Ketebalan plat alas, dari 0.1 hingga 10 milimeter. Saat remove_base adalah true, biarkan kosong atau kirim 0.

  • Name
    bend_mode
    Type
    string
    default off
    Description

    Apakah akan melengkungkan relief, dan ke arah mana. Saat bukan off, bend_axis dan bend_angle membentuk lengkungan. Meshy memeriksanya dalam kedua kasus.

    Nilai yang tersedia:

    • off: relief datar.
    • convex: bagian depan menonjol keluar.
    • concave: bagian depan melengkung ke dalam.
Hanya berlaku ketika bend_mode = convex or concave
  • Name
    bend_axis
    Type
    string
    default xz
    Description

    Tepi mana yang digulung oleh lengkungan.

    Nilai yang tersedia:

    • xz: tepi kiri dan kanan.
    • yz: tepi atas dan bawah.
  • Name
    bend_angle
    Type
    number
    default 60
    Description

    Busur yang dicakup lengkungan, dari 0 hingga 360 derajat. Di bawah 1, relief tetap datar.

  • Name
    mesh_resolution
    Type
    integer
    default 1024
    Description

    Jumlah titik mesh di sepanjang sisi foto yang lebih panjang, dari 512 hingga 2048. Nilai yang lebih tinggi mempertahankan detail yang lebih halus dan menghasilkan file yang lebih besar. Pada nilai default 1024, file GLB berukuran sekitar 40 hingga 50 MB dan file STL sekitar 80 hingga 105 MB. Foto berbentuk persegi menghasilkan ukuran yang lebih besar. Pada 2048, ukurannya sekitar 150 MB dan 300 MB. Lengkungan membuatnya lebih besar: file STL dapat mencapai sekitar 800 MB pada 2048.

Hasil

202 Accepted, dengan ID Relief task baru di result.

Mode kegagalan

  • Name
    400 - Bad Request
    Description

    Permintaan tidak dapat dijalankan. Pesan kesalahan menunjukkan masalah apa yang ditemukan. Contohnya:

    • Parameter hilang: image_url tidak dikirim.
    • Parameter tidak valid: Sebuah parameter memiliki tipe yang salah, berada di luar rentangnya, atau bukan salah satu nilai yang tersedia. Contohnya, variant bukan high atau low, atau mesh_resolution bukan bilangan bulat dari 512 hingga 2048.
    • Ketebalan alas: base_thickness_mm bukan 0 saat remove_base diatur ke true, atau berada di bawah 0.1 tanpa itu.
    • URL tidak dapat dijangkau: Meshy tidak dapat mengunduh gambar image_url, misalnya karena URL mengembalikan 404 atau waktu habis.
    • Gambar tidak valid: Gambar bukan file JPG, JPEG, PNG, atau WebP, berukuran lebih dari 20 MB, lebih kecil dari 32 × 32 piksel, memiliki terlalu banyak piksel, atau tidak dapat dibaca.
    • Rasio aspek ekstrem: Sisi gambar yang lebih panjang lebih dari sekitar 16 kali sisi yang lebih pendek.

    Perbaiki permintaan, lalu kirim lagi. Meshy tidak mengenakan biaya untuk ini. Lihat Kesalahan.

  • Name
    401 - Unauthorized
    Description

    Kunci API hilang atau tidak valid. Periksa header Authorization.

  • Name
    402 - Payment Required
    Description

    Contohnya:

    • Kredit tidak cukup: Akun tidak memiliki cukup kredit untuk task ini, atau akun mencapai batas kredit. Periksa saldo kredit Anda, lalu coba lagi.
    • Paket gratis: Membuat task memerlukan paket berbayar. Tingkatkan paket Anda di pengaturan langganan Anda, lalu coba lagi.
  • Name
    403 - Forbidden
    Description

    Moderasi konten memblokir gambar. Meshy tidak mengenakan biaya untuk permintaan ini. Kirim gambar lain.

  • Name
    429 - Too Many Requests
    Description

    Salah satu batas ini tercapai:

    • Anda mengirim terlalu banyak permintaan. Tunggu, lalu coba lagi. Lihat Batas laju.
    • Terlalu banyak task Anda yang sedang antre atau berjalan. Tunggu hingga beberapa selesai, lalu coba lagi.
    • Pada paket tak terbatas tanpa sisa kredit, Anda mencapai jumlah task yang dapat berjalan tanpa kredit. Tunggu hingga sebuah task selesai, atau tambahkan kredit.

Jika pemeriksaan keamanan menolak gambar saat task berjalan, task akan gagal dengan task_error.type diatur ke invalid_input dan task_error.code diatur ke provider_content_refused. Meshy akan mengembalikan kredit task tersebut. Kirim gambar lain. Lihat Kesalahan.


GET/openapi/v1/relief/:id

Dapatkan Relief timbul task

Mengembalikan Relief timbul task berdasarkan ID-nya.

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
}

Parameter

  • Name
    id
    Type
    path
    Description

    ID task dari respons pembuatan (create).

Hasil

Objek Relief timbul task.


DELETE/openapi/v1/relief/:id

Hapus tugas Relief

Menghapus tugas Relief secara permanen, termasuk model, peta kedalaman, dan datanya. Anda tidak dapat membatalkan penghapusan ini.

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."
}

Parameter jalur

  • Name
    id
    Type
    path
    Description

    ID tugas yang akan dihapus.

Status tugas

Menghapus tugas PENDING akan mengembalikan kredit yang digunakan saat Anda membuatnya.

Tugas IN_PROGRESS tidak dapat dihapus. Permintaan akan mengembalikan 409 Conflict, dan tugas tersebut akan terus berjalan. Meshy tidak mengembalikan kredit untuk tugas yang sudah mulai berjalan, sehingga menghapusnya akan membuat Anda kehilangan baik kredit maupun hasilnya. Tunggu hingga tugas tersebut mencapai status SUCCEEDED atau FAILED, lalu hapus.

Menghapus tugas SUCCEEDED tidak akan mengembalikan kreditnya. Tugas FAILED sudah dikembalikan kreditnya saat gagal.

Returns

200 OK ketika tugas berhasil dihapus, atau 409 Conflict ketika tugas berstatus IN_PROGRESS.


GET/openapi/v1/relief

Daftar tugas Relief timbul

Mengembalikan daftar tugas Relief timbul Anda.

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
  }
]

Parameter

  • Name
    page_num
    Type
    integer
    Description

    Nomor halaman yang akan dikembalikan. Dimulai dari dan default-nya adalah 1.

  • Name
    page_size
    Type
    integer
    Description

    Jumlah tugas per halaman, hingga 100. Default-nya adalah 10. Meshy memperlakukan nilai dari 101 hingga 255 sebagai 100, dan nilai yang lebih besar akan mengembalikan 400.

  • Name
    sort_by
    Type
    string
    Description

    Urutan pengurutan.

    Nilai yang tersedia:

    • +created_at: terlama lebih dulu
    • -created_at: terbaru lebih dulu

Returns

Daftar berhalaman dari objek tugas Relief timbul.


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

Streaming tugas Relief

Men-streaming pembaruan tugas Relief sebagai 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
}

Parameter

  • Name
    id
    Type
    path
    Description

    ID tugas dari respons pembuatan.

Returns

Sebuah stream objek tugas Relief sebagai Server-Sent Events.

Setiap event message berisi objek tugas lengkap, sama seperti yang dikembalikan oleh Get a Relief task. Selama tugas berstatus PENDING atau IN_PROGRESS, field yang berubah di antara event adalah progress, status, started_at, dan preceding_tasks (hanya ada selama masih ada tugas lain di depan tugas ini). model_urls, depth_map_url, dan thumbnail_url mendapatkan nilainya saat tugas mencapai status SUCCEEDED. Tugas depth-map-only tetap memiliki model_urls {} dan thumbnail_url kosong.

Sebuah event error hanya berisi status_code dan message, jadi periksa nama event sebelum Anda membaca status.


Objek task Relief timbul

Objek task Relief timbul mendeskripsikan satu relief timbul yang dibuat dari sebuah foto. model_urls, depth_map_url, dan thumbnail_url selalu ada, dan kosong hingga task berhasil.

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 task. Perlakukan sebagai string buram, dan jangan bergantung pada formatnya.

  • Name
    type
    Type
    string
    Description

    Jenis task, selalu relief.

  • Name
    model_urls
    Type
    object
    Description

    URL unduhan untuk model relief timbul. Berkasnya bisa berukuran besar; mesh_resolution mencantumkan ukuran umumnya.

    • Name
      glb
      Type
      string
      Description

      Berkas GLB, tanpa tekstur. Satuannya adalah meter. Tidak ada untuk task yang hanya menghasilkan depth map.

    • Name
      stl
      Type
      string
      Description

      Model yang sama dalam bentuk berkas STL biner. Satuannya adalah milimeter, sehingga terbuka sesuai ukuran asli relief timbulnya, dengan Z menghadap ke atas. Tidak ada untuk task yang hanya menghasilkan depth map.

  • Name
    depth_map_url
    Type
    string
    Description

    URL unduhan untuk depth map grayscale 16-bit yang menjadi dasar pembuatan relief timbul. Piksel yang lebih terang berarti lebih tinggi. Nilainya adalah tinggi relatif, bukan milimeter. Perangkat lunak laser engraving dan CNC dapat menggunakannya sebagai height map. Ukuran berkasnya sekitar 1 hingga 2 MB. Kosong jika tidak ada.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL unduhan untuk gambar pratinjau model relief timbul. Kosong jika tidak ada yang di-render, termasuk untuk task yang hanya menghasilkan depth map.

  • Name
    progress
    Type
    integer
    Description

    Seberapa banyak task yang sudah selesai, dalam bentuk persentase. Nilainya 0 hingga task dimulai dan 100 saat berhasil.

  • Name
    status
    Type
    string
    Description

    Status task, salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, atau FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Jumlah task yang berada di depan task ini dalam antrean. Kolom ini tidak disertakan jika nilainya 0, sehingga hanya muncul selama masih ada task lain di depannya.

  • Name
    created_at
    Type
    timestamp
    Description

    Waktu task dibuat, dalam milidetik Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Waktu task dimulai, dalam milidetik Unix. Nilainya 0 hingga task dimulai.

  • Name
    finished_at
    Type
    timestamp
    Description

    Waktu task selesai, dalam milidetik Unix. Nilainya 0 hingga task selesai.

  • Name
    expires_at
    Type
    timestamp
    Description

    Waktu hasil task kedaluwarsa, dalam milidetik Unix. Nilainya 0 hingga task selesai.

  • Name
    task_error
    Type
    object
    Description

    Detail kesalahan saat task gagal. Lihat Kesalahan.

  • Name
    consumed_credits
    Type
    integer
    Description

    Jumlah kredit yang digunakan task: 20, atau 0 untuk task FAILED, yang dikembalikan oleh Meshy.