Ubah foto sumber menjadi kap lampu yang siap dicetak 3D dalam dua tahap:
prototype menghasilkan gambar konsep matte-white bergaya khusus dan
mengubahnya menjadi model 3D berongga (GLB), kemudian build menjalankan
prosesor lampu pada model tersebut untuk menghasilkan bagian STL yang siap
dicetak — sebuah kap lampu dengan bagian bawah terbuka lengkap dengan pelat
dasar untuk fixture sumber cahaya, ditambah dudukan fixture itu sendiri. Kedua
tahap ini dihubungkan melalui input_task_id.
Hasilkan satu gambar konsep matte-white dari foto referensi dan
konversikan menjadi model kap lampu 3D berongga. Respons membawa baik gambar
konsep (image_urls) maupun model 3D (model_urls.glb dengan sebuah
thumbnail_url). ID tugas yang dikembalikan adalah yang Anda kirimkan sebagai input_task_id
ke endpoint build. Lihat
The Lamp Prototype Task Object
untuk bentuk responsnya.
Parameter
Name
image_url
Type
string
Wajib
Description
Foto sumber yang digunakan Meshy sebagai referensi visual untuk kap lampu. Saat ini kami mendukung format .jpg, .jpeg, .png, dan .webp.
Ada dua cara untuk menyediakan gambar:
URL yang dapat diakses secara publik: URL yang dapat diakses dari internet publik.
Data URI: Sebuah data URI gambar yang dienkode base64. Contoh data URI: data:image/jpeg;base64,<data gambar Anda yang dienkode base64>.
Name
image_subject
Type
string
default character
Description
Petunjuk kategori subjek yang memilih prompt stylization. Nilai yang tersedia:
character (default) — subjek karakter/objek tunggal (figur, hewan, maskot, dll.).
Nama tugas opsional untuk keperluan tampilan. Maksimum 100 karakter.
Name
remove_background
Type
boolean
default false
Description
Jika diatur ke true, gambar prototipe dikembalikan sebagai PNG RGBA transparan dengan latar belakang dihapus, sehingga Anda dapat mengomposisikan subjek ke latar belakang apa pun.
Hasil Pengembalian
Properti result pada respons berisi id tugas dari tugas prototipe lampu yang baru dibuat. Lakukan polling pada endpoint Get a Task atau berlangganan pada stream hingga tugas mencapai SUCCEEDED, lalu kirimkan ID tersebut ke build endpoint sebagai input_task_id.
Mode Kegagalan
Name
400 - Bad Request
Description
Permintaan tidak dapat diterima. Penyebab umum:
Parameter hilang: image_url wajib diisi.
Format gambar tidak valid: image_url yang diberikan bukan format yang didukung (.jpg, .jpeg, .png, .webp).
Dimensi gambar di luar rentang: Gambar terlalu kecil, melebihi ukuran file maksimum, atau melebihi jumlah piksel maksimum.
URL tidak dapat dijangkau: image_url tidak dapat diunduh (404 atau timeout).
Data URI tidak valid: String base64 rusak formatnya.
Konten ditandai: Gambar input ditandai oleh moderation NSFW atau kekayaan intelektual.
image_subject tidak valid: Bukan salah satu dari character / landscape.
Name
401 - Unauthorized
Description
Autentikasi gagal. Silakan periksa kunci API Anda.
Name
402 - Payment Required
Description
Kredit tidak cukup untuk melakukan tugas ini.
Name
429 - Too Many Requests
Description
Anda telah melampaui batas laju Anda.
Request
POST
/openapi/creative-lab/lamp/v1/prototype
# Stage 1: concept image + hollow 3D lampshade model from a source photocurlhttps://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "image_subject": "character" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo; the prototype returns the concept image and a hollow 3D model that the build stage processes.
Menghasilkan bagian-bagian final yang siap dicetak 3D dari sebuah tugas prototipe yang berhasil.
Proses build menjalankan lamp processor pada model 3D milik prototipe: model
diskalakan ke diameter_mm, bagian bawahnya diratakan sebesar cut_amount_percent,
dilubangi (hollow) hingga thickness_mm, bagian bawahnya dibuka, dan — ketika sebuah
preset fixture dipilih — sebuah pelat dasar ditambahkan dengan lubang fixture serta dudukan
terpisah untuk sumber cahaya. Lihat
The Lamp Build Task Object untuk mengetahui
bentuk responsnya.
Parameter
Name
input_task_id
Type
string
Wajib
Description
ID tugas dari sebuah tugas prototipe yang dibuat melalui endpoint OpenAPI yang sama ini. Prototipe tersebut harus telah dibuat dengan API key yang sama, harus telah mencapai status SUCCEEDED, dan harus telah menghasilkan sebuah model 3D.
Tugas prototipe yang dibuat melalui webapp tidak diterima — endpoint build hanya menerima tugas prototipe yang dihasilkan oleh POST /openapi/creative-lab/lamp/v1/prototype dan menolak sumber lainnya dengan status 404.
Name
name
Type
string
Description
Nama tugas opsional untuk keperluan tampilan. Maksimum 100 karakter.
options
Parameter penyetelan opsional untuk geometri lampshade. Setiap field memiliki nilai default yang masuk akal — kirimkan hanya yang ingin Anda ubah.
Name
diameter_mm
Type
number
default 150
Description
Dimensi maksimum target dari kotak pembatas lampshade, dalam milimeter. Mesh diskalakan secara seragam agar sesuai. Rentang: [50, 400].
Name
thickness_mm
Type
number
default 1
Description
Ketebalan dinding dari lampshade yang berongga, dalam milimeter. Rentang: (0, 10].
Name
cut_amount_percent
Type
number
default 1
Description
Persentase tinggi model yang dipotong rata di bagian bawah, sehingga lampshade dapat berdiri di atas print bed dan memiliki bukaan untuk fixture. Rentang: [1, 100].
Name
light_source_preset
Type
string
default bambu_mh001_60mm
Description
Preset fixture sumber cahaya yang menentukan cara bagian bawah dibangun. Nilai yang tersedia:
bambu_mh001_60mm (default) — lampshade dengan bagian bawah terbuka ditambah pelat dasar yang membawa lubang fixture berukuran 60 mm, keduanya berada di model_urls.lamp_stl, dan dudukan fixture sebagai model_urls.base_stl.
none — satu lampshade tertutup rapat pada model_urls.lamp_stl; model_urls.base_stl dihilangkan.
Name
fixture_offset_x_mm
Type
number
default 0
Description
Offset sumbu X dari lubang fixture pada pelat dasar, relatif terhadap pusat lampshade, dalam milimeter. Hanya bermakna ketika light_source_preset ≠ none. Rentang: [-80, 80].
Name
fixture_offset_z_mm
Type
number
default 0
Description
Offset sumbu Z (kedalaman) dari lubang fixture pada pelat dasar, relatif terhadap pusat lampshade, dalam milimeter. Hanya bermakna ketika light_source_preset ≠ none. Rentang: [-80, 80].
Name
rotate_x_deg
Type
number
default 0
Description
Rotasi terhadap sumbu X yang diterapkan pada model sebelum pemrosesan, dalam derajat. Ketiga rotasi diterapkan sebagai sudut Euler XYZ terhadap pusat model. Rentang: [-360, 360].
Name
rotate_y_deg
Type
number
default 0
Description
Rotasi terhadap sumbu Y yang diterapkan pada mesh yang diimpor sebelum pemrosesan, dalam derajat. Rentang: [-360, 360].
Name
rotate_z_deg
Type
number
default 0
Description
Rotasi terhadap sumbu Z yang diterapkan pada mesh yang diimpor sebelum pemrosesan, dalam derajat. Rentang: [-360, 360].
Name
include_result_json
Type
boolean
default false
Description
Ketika true dan output.format adalah zip, menyertakan result.json milik lamp processor (nama pipeline, peringatan, dan jalur artifact) di dalam bundel. Diabaikan ketika output.format adalah stl.
output
Pemilih format keluaran opsional. Default-nya adalah stl.
Name
format
Type
string
default stl
Description
Bundel artifact yang dikembalikan oleh proses build. Nilai yang tersedia:
stl (default) — mengembalikan model_urls.lamp_stl (lampshade, beserta pelat dasar ketika sebuah preset fixture diatur), ditambah model_urls.base_stl ketika light_source_preset ≠ none.
zip — mengemas setiap artifact yang dihasilkan oleh processor (lamp.stl, base.stl opsional, result.json opsional) ke dalam satu file zip dan mengembalikannya di bawah model_urls.bundle_zip.
Returns
Properti result pada respons berisi id tugas dari tugas lamp build yang baru dibuat. Poll endpoint Get a Task atau berlangganan ke stream hingga tugas mencapai status SUCCEEDED, lalu unduh artifact dari model_urls.
Mode Kegagalan
Name
400 - Bad Request
Description
Permintaan tidak dapat diterima. Penyebab umum:
Parameter hilang: input_task_id wajib diisi.
UUID tidak valid: input_task_id bukan UUID yang valid.
Induk belum berhasil: Tugas prototipe yang dirujuk belum mencapai status SUCCEEDED.
Tidak ada model: Tugas prototipe berhasil tetapi tidak menghasilkan model 3D.
Options di luar rentang: Salah satu field options berada di luar rentang atau kumpulan enum yang diizinkan.
Name
401 - Unauthorized
Description
Autentikasi gagal. Silakan periksa kunci API Anda.
Name
402 - Payment Required
Description
Kredit tidak mencukupi untuk melakukan tugas ini.
Name
404 - Not Found
Description
Tugas prototipe yang dirujuk tidak ada, milik pengguna lain, atau dibuat melalui webapp (hanya tugas prototipe mode API yang dapat dirangkai ke build).
Mengambil task prototype atau build berdasarkan id task yang valid. Path URL
harus sesuai dengan tahap task tersebut — task build yang diambil melalui
/prototype/:id akan mengembalikan 404, dan sebaliknya.
Batalkan sebuah tugas lampu. Jika tugas masih PENDING, kredit yang
terpakai saat pembuatan akan dikembalikan. Tugas yang sudah IN_PROGRESS
akan dibatalkan tanpa pengembalian dana (worker mungkin sudah menghabiskan
sumber daya). Tugas yang sudah mencapai status akhir (SUCCEEDED, FAILED,
CANCELED) tidak dapat dibatalkan.
Path URL harus sesuai dengan tahap tugas — DELETE pada
/prototype/:buildId mengembalikan 404.
Path Parameters
Name
id
Type
path
Description
Pengenal unik untuk tugas lampu yang akan dibatalkan.
Returns
Mengembalikan 204 No Content saat berhasil dengan body kosong.
Failure Modes
Name
400 - Bad Request
Description
Tugas sudah berada dalam status akhir dan tidak dapat dibatalkan.
Name
404 - Not Found
Description
Tugas tidak ada, milik pengguna lain, atau tahapnya tidak sesuai dengan path URL.
Melakukan streaming pembaruan real-time untuk tugas lampu melalui Server-Sent Events (SSE).
Path URL harus sesuai dengan tahap tugas tersebut — membuka stream di
/prototype/:buildId/stream akan mengeluarkan satu event: error payload dengan
status_code: 404 dan menutup stream tersebut.
Parameter
Name
id
Type
path
Description
Pengidentifikasi unik untuk tugas lampu yang akan di-stream.
Return
Mengembalikan sebuah stream objek tugas Lamp Prototype
atau Lamp Build sebagai
Server-Sent Events. Setiap frame membawa objek tugas lengkap untuk tahap tersebut — bentuk yang sama dengan yang
dikembalikan oleh endpoint Get — sehingga selama tugas berstatus PENDING atau IN_PROGRESS
kolom output-nya memang belum terisi (null, [] atau {}) dan
finished_at bernilai 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-lamp-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 6,"model_urls": {"lamp_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/lamp.stl?Expires=***","base_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/base.stl?Expires=***" }}
Ambil daftar tugas lampu Anda yang dipaginasi untuk satu tahap. Jalur URL
memilih tahap tersebut — /prototype mengembalikan tugas prototipe; /build
mengembalikan tugas build. Tugas dari tahap lainnya tidak disertakan dalam
kedua respons tersebut.
Path Parameters
Name
stage
Type
path
Wajib
Description
Salah satu dari prototype atau build. Koleksi hanya mengembalikan
tugas yang tahapnya cocok dengan URL — mengambil /prototype tidak
akan pernah mengembalikan tugas build, dan sebaliknya.
Query Parameters
Name
page_num
Type
integer
default 1
Description
Nomor halaman untuk paginasi.
Name
page_size
Type
integer
default 10
Description
Batas ukuran halaman. Maksimum yang diizinkan adalah 100 item.
Name
sort_by
Type
string
default -created_at
Description
Kolom untuk pengurutan. Nilai yang tersedia:
+created_at: Urutkan berdasarkan waktu pembuatan secara menaik.
-created_at: Urutkan berdasarkan waktu pembuatan secara menurun.
Objek Task Prototipe Lamp adalah unit kerja yang dilacak oleh Meshy untuk
menghasilkan gambar konsep matte-white bergaya dari sebuah foto sumber dan
mengonversinya menjadi model 3D yang berongga. Output dari tahap ini dirangkai ke dalam
tahap build melalui input_task_id.
Properti
Name
id
Type
string
Description
Pengidentifikasi unik untuk task. Meskipun kami menggunakan UUID yang dapat diurutkan-k (k-sortable) untuk id task sebagai detail implementasi, Anda tidak boleh membuat asumsi apa pun tentang format id tersebut.
Name
type
Type
string
Description
Tipe dari task. Nilainya adalah creative-lab-lamp-prototype.
Name
name
Type
string
Description
Nama task yang diberikan saat task dibuat. String kosong jika tidak ada nama yang diberikan.
Name
status
Type
string
Description
Status dari task. Nilai yang mungkin adalah salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Progress dari task. Jika task belum dimulai, properti ini akan bernilai 0. Setelah task berhasil, ini akan menjadi 100.
Name
created_at
Type
timestamp
Description
Stempel waktu saat task dibuat, dalam milidetik.
Stempel waktu merepresentasikan jumlah milidetik yang berlalu sejak 1 Januari 1970 UTC, mengikuti
standar RFC 3339.
Sebagai contoh, Jumat, 1 September 2023 12:00:00 PM GMT direpresentasikan sebagai 1693569600000. Hal ini berlaku
untuk semua stempel waktu di Meshy API.
Name
started_at
Type
timestamp
Description
Stempel waktu saat task dimulai, dalam milidetik. Jika task belum dimulai, properti ini akan bernilai 0.
Name
finished_at
Type
timestamp
Description
Stempel waktu saat task selesai, dalam milidetik. Jika task belum selesai, properti ini akan bernilai 0.
Name
expires_at
Type
timestamp
Description
Stempel waktu saat hasil task kedaluwarsa, dalam milidetik.
Name
preceding_tasks
Type
integer
Description
Jumlah task yang mendahului.
Nilai dari field ini hanya bermakna jika status task adalah PENDING.
Name
task_error
Type
object
Description
Detail kesalahan untuk task yang gagal. Lihat Kesalahan untuk referensi lengkap objek task_error.
Name
consumed_credits
Type
integer
Description
Jumlah kredit yang dikonsumsi oleh task ini. Muncul saat status task adalah PENDING, IN_PROGRESS, atau SUCCEEDED. Mengembalikan 0 untuk task FAILED (kredit dikembalikan jika gagal).
Name
model_urls
Type
object
Description
URL yang dapat diunduh untuk model 3D yang dihasilkan dari gambar konsep. Muncul setelah task berhasil; {} sebelum itu.
Name
glb
Type
string
Description
URL yang dapat diunduh untuk model kap lampu (lampshade) matte-white berongga dalam format GLB. Ini adalah model yang diproses oleh tahap build.
Name
thumbnail_url
Type
string
Description
URL yang dapat diunduh untuk pratinjau render dari model 3D. String kosong hingga task berhasil.
Name
image_urls
Type
array of strings
Description
URL yang dapat diunduh untuk kandidat gambar konsep yang dihasilkan oleh task prototipe ini. Saat ini API selalu mengembalikan tepat satu kandidat; field ini berupa array agar revisi mendatang dapat menampilkan beberapa kandidat tanpa perubahan yang merusak kompatibilitas.
Objek Lamp Build Task adalah unit kerja yang dilacak oleh Meshy untuk
menghasilkan lampshade final yang dapat dicetak dalam 3D dari sebuah prototype task yang berhasil (succeeded).
Build ini menjalankan prosesor lampu pada model 3D dari prototype tersebut untuk melubangi bagian dalamnya (hollow),
meratakan dan membuka bagian bawahnya, dan (dengan preset fixture) menambahkan pelat dasar
serta dudukan fixture.
Properti
Name
id
Type
string
Description
Pengidentifikasi unik untuk task ini.
Name
type
Type
string
Description
Jenis task. Nilainya adalah creative-lab-lamp-build.
Name
name
Type
string
Description
Nama task yang diberikan saat task dibuat. String kosong jika tidak ada nama yang diberikan.
Name
status
Type
string
Description
Status task. Kemungkinan nilainya adalah salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Progress task. Jika task belum dimulai, properti ini bernilai 0. Setelah task berhasil (succeeded), nilainya akan menjadi 100.
Name
created_at
Type
timestamp
Description
Stempel waktu saat task dibuat, dalam milidetik.
Name
started_at
Type
timestamp
Description
Stempel waktu saat task dimulai, dalam milidetik.
Name
finished_at
Type
timestamp
Description
Stempel waktu saat task selesai, dalam milidetik.
Name
expires_at
Type
timestamp
Description
Stempel waktu saat hasil task berakhir masa berlakunya (expires), dalam milidetik.
Name
preceding_tasks
Type
integer
Description
Jumlah task yang mendahului (preceding tasks). Hanya bermakna saat status adalah PENDING.
Name
task_error
Type
object
Description
Detail kesalahan untuk task yang gagal. Lihat Kesalahan untuk referensi lengkap objek task_error.
Name
consumed_credits
Type
integer
Description
Jumlah kredit yang terpakai oleh task ini. Mengembalikan 0 untuk task FAILED (kredit dikembalikan jika gagal).
Name
model_urls
Type
object
Description
URL yang dapat diunduh untuk artefak yang dihasilkan, dengan kunci berupa nama artefak. Kumpulan kunci ini bergantung pada output.format dan options.light_source_preset:
Name
lamp_stl
Type
string
Description
URL yang dapat diunduh untuk lamp.stl: lampshade dengan bagian bawah terbuka beserta pelat dasar yang membawa lubang fixture, atau satu lampshade tertutup rapat (sealed) ketika options.light_source_preset bernilai none. Muncul ketika output.format bernilai stl (default).
Name
base_stl
Type
string
Description
URL yang dapat diunduh untuk base.stl, dudukan fixture sumber cahaya. Muncul ketika output.format bernilai stldanoptions.light_source_preset bukan none. Dihilangkan ketika preset fixture-nya adalah none.
Name
bundle_zip
Type
string
Description
URL yang dapat diunduh untuk paket zip berisi setiap artefak yang dihasilkan oleh prosesor (lamp.stl, base.stl opsional, dan — ketika options.include_result_json bernilai true — result.json). Muncul ketika output.format bernilai zip. Ketika bundle_zip muncul, lamp_stl / base_stl dihilangkan.