Relief timbul API
Ubah satu foto menjadi model 3D relief timbul dan peta kedalaman 16-bit, untuk pencetakan 3D, pengukiran laser, dan pemahatan CNC.
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
# 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_mmdefault.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
nullatau""sama saja dengan tidak menyertakannya. Nilai lain akan mengembalikan400.
- Name
- should_generate_model
- Type
- boolean
- default true
- Description
Apakah akan membangun model relief. Atur ke
falseuntuk 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
20hingga250milimeter. Denganremove_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
0hingga60milimeter. Denganremove_basediatur ketrue,0menghasilkan 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_thresholdmenentukan apa yang dianggap sebagai latar belakang. Meshy memeriksaremoval_thresholddalam kedua kasus.
remove_base = true- Name
- removal_threshold
- Type
- number
- default 0.01
- Description
Kedalaman di bawah mana Meshy memotong latar belakang, dari
0.01hingga1, dengan peta kedalaman berjalan dari0hingga1. 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.1hingga10milimeter. Saatremove_baseadalahtrue, biarkan kosong atau kirim0.
- Name
- bend_mode
- Type
- string
- default off
- Description
Apakah akan melengkungkan relief, dan ke arah mana. Saat bukan
off,bend_axisdanbend_anglemembentuk lengkungan. Meshy memeriksanya dalam kedua kasus.Nilai yang tersedia:
off: relief datar.convex: bagian depan menonjol keluar.concave: bagian depan melengkung ke dalam.
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
0hingga360derajat. Di bawah1, relief tetap datar.
- Name
- mesh_resolution
- Type
- integer
- default 1024
- Description
Jumlah titik mesh di sepanjang sisi foto yang lebih panjang, dari
512hingga2048. Nilai yang lebih tinggi mempertahankan detail yang lebih halus dan menghasilkan file yang lebih besar. Pada nilai default1024, file GLB berukuran sekitar 40 hingga 50 MB dan file STL sekitar 80 hingga 105 MB. Foto berbentuk persegi menghasilkan ukuran yang lebih besar. Pada2048, ukurannya sekitar 150 MB dan 300 MB. Lengkungan membuatnya lebih besar: file STL dapat mencapai sekitar 800 MB pada2048.
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_urltidak dikirim. - Parameter tidak valid: Sebuah parameter memiliki tipe yang salah, berada di luar rentangnya, atau bukan salah satu nilai yang tersedia. Contohnya,
variantbukanhighataulow, ataumesh_resolutionbukan bilangan bulat dari512hingga2048. - Ketebalan alas:
base_thickness_mmbukan0saatremove_basediatur ketrue, atau berada di bawah0.1tanpa itu. - URL tidak dapat dijangkau: Meshy tidak dapat mengunduh gambar
image_url, misalnya karena URL mengembalikan404atau 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.
- Parameter hilang:
- 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.
Dapatkan Relief timbul task
Mengembalikan Relief timbul task berdasarkan ID-nya.
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
}
Parameter
- Name
- id
- Type
- path
- Description
ID task dari respons pembuatan (create).
Hasil
Hapus tugas Relief
Menghapus tugas Relief secara permanen, termasuk model, peta kedalaman, dan datanya. Anda tidak dapat membatalkan penghapusan ini.
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."
}
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.
Daftar tugas Relief timbul
Mengembalikan daftar tugas Relief timbul Anda.
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
}
]
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 adalah10. Meshy memperlakukan nilai dari101hingga255sebagai100, dan nilai yang lebih besar akan mengembalikan400.
- 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.
Streaming tugas Relief
Men-streaming pembaruan tugas Relief sebagai 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
}
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_resolutionmencantumkan 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
0hingga task dimulai dan100saat berhasil.
- Name
- status
- Type
- string
- Description
Status task, salah satu dari
PENDING,IN_PROGRESS,SUCCEEDED, atauFAILED.
- 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
0hingga task dimulai.
- Name
- finished_at
- Type
- timestamp
- Description
Waktu task selesai, dalam milidetik Unix. Nilainya
0hingga task selesai.
- Name
- expires_at
- Type
- timestamp
- Description
Waktu hasil task kedaluwarsa, dalam milidetik Unix. Nilainya
0hingga 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, atau0untuk taskFAILED, yang dikembalikan oleh Meshy.