Panduan API
Pakai WujudTin dari aplikasimu sendiri. Semua alamat dimulai dengan https://wujudtin.com, dan jawabannya selalu berbentuk JSON.
Yang tidak ada di API 3D lain
Alamat /api/v1/estimate menjawab pertanyaan yang sebenarnya dihadapi orang sebelum mencetak: butuh berapa gram filamen, per warna, berikut yang terbuang tiap printer berganti warna. Gratis, tidak memotong kredit.
1. Dapatkan kunci
Buat kunci di halaman Kunci API. Kunci hanya ditampilkan sekali, jadi simpan baik-baik.
Kunci API terbuka setelah pembelian kredit pertama. Ini menjaga layanan dari pembuatan akun massal yang menghabiskan kapasitas untuk semua orang.
Kirim kunci di setiap permintaan:
Authorization: Bearer wjt_live_xxxxxxxxxxxxxxxx2. Buat model 3D
/api/v1/modelsmemotong kreditcurl -X POST https://wujudtin.com/api/v1/models \
-H "Authorization: Bearer KUNCI_KAMU" \
-H "Content-Type: application/json" \
-d '{
"mode": "text",
"prompt": "vas keramik bulat bermotif batik biru",
"quality": "standard",
"detail": "normal"
}'{
"id": "aBc123...",
"status": "pending",
"credits_spent": 20
}| mode | standard | high | ultra |
|---|---|---|---|
| text | 20 | 30 | 40 |
| image | 30 | 40 | 50 |
| multiview | 30 | 40 | 50 |
Angka di atas dalam kredit. detail boleh diisi ringan, normal, padat - tidak menambah biaya, hanya mengubah kerapatan mesh dan ukuran file.
Untuk mode foto, unggah gambarnya dulu:
/api/v1/uploadsgratiscurl -X POST https://wujudtin.com/api/v1/uploads \
-H "Authorization: Bearer KUNCI_KAMU" \
-F "file=@foto.jpg"
# -> { "url": "https://....blob.vercel-storage.com/..." }
# lalu pakai alamat itu:
{ "mode": "image", "image_url": "https://....blob.vercel-storage.com/..." }
# atau beberapa sudut sekaligus (depan wajib, minimal dua foto):
{ "mode": "multiview", "views": {
"front": "...", "left": "...", "back": "...", "right": "..." } }Gambar wajib diunggah lewat alamat di atas. Alamat gambar dari tempat lain ditolak - itu mencegah layanan ini dipakai sebagai perantara untuk menjangkau jaringan dalam.
3. Tunggu dan ambil hasilnya
/api/v1/models/{id}gratiscurl https://wujudtin.com/api/v1/models/aBc123 \
-H "Authorization: Bearer KUNCI_KAMU"{
"data": {
"id": "aBc123",
"status": "succeeded",
"progress": 100,
"model_url": "https://....blob.vercel-storage.com/....glb",
"thumbnail_url": "https://....webp"
}
}Status berjalan: pending -> running -> succeeded atau failed. Biasanya 1-3 menit. Kalau gagal, kredit dikembalikan otomatis.
/api/v1/modelsgratisDaftar model kamu. Tambahkan ?limit=50 kalau perlu.
4. Hitung gramasi
/api/v1/estimateGRATIS, tanpa kreditcurl -X POST https://wujudtin.com/api/v1/estimate \
-H "Authorization: Bearer KUNCI_KAMU" \
-H "Content-Type: application/json" \
-d '{
"model_id": "aBc123",
"size_mm": 100,
"material": "PLA",
"infill": 0.15,
"colors": 3
}'{
"data": {
"dimensions_mm": [68.8, 73.7, 100],
"grams": 55.2,
"colors": [
{ "hex": "#a7270e", "grams": 49.6, "is_base": true },
{ "hex": "#c8baa5", "grams": 3.6, "is_base": false },
{ "hex": "#b46b52", "grams": 2, "is_base": false }
],
"purge_grams": 144,
"swaps": 847,
"total_grams": 199.2,
"printability": {
"watertight": false,
"holes": 0,
"non_manifold_edges": 39,
"volume_cm3": 189,
"ready": true
}
}
}Perhatikan purge_grams: pada contoh di atas, mencetak dalam 3 warna membuang 144 gram - hampir tiga kali berat modelnya sendiri. Angka itulah yang biasanya baru ketahuan setelah filamen terlanjur habis.
size_mm: 50, 100, 150, 200 - material: PLA, PETG, ABS, TPU, RESIN - infill: 0 sampai 1 - colors: 1 sampai 4, kosongkan untuk saran otomatis. Bisa juga memakai model_url sebagai ganti model_id.
Batas dan pesan error
| Kode | Artinya |
|---|---|
| 401 | Kunci salah, tidak ada, atau sudah dicabut |
| 402 | Kredit tidak cukup |
| 404 | Model tidak ada, atau bukan milikmu |
| 413 | Berkas model terlalu besar untuk dihitung |
| 422 | Berkas model tidak bisa dibaca |
| 429 | Terlalu sering. Lihat header X-RateLimit-Reset |
| 503 | Batas pemakaian harian layanan tercapai, coba besok |
Batas per menit: 10 untuk membuat model, mengunggah, dan menghitung gramasi; 120 untuk membaca status. Tiap jawaban menyertakan sisa jatahmu di header X-RateLimit-Remaining.
Bentuk error selalu sama, jadi mudah ditangani:
{ "error": { "code": "insufficient_credits", "message": "Kredit tidak cukup. Butuh 30, tersisa 10." } }Butuh bantuan?
API ini masih baru dan kami memang ingin tahu kalau ada yang membingungkan atau angkanya terasa meleset. Beri tahu kami - terutama kalau hasil gramasi kami berbeda jauh dari angka slicer kamu.