Dokumentasi API
1. Untuk apa API ini
API ini membuat agen AI atau skrip Anda sendiri bisa mengerjakan yang biasanya Anda lakukan lewat panel: membuat situs, meminta AI merevisi desain atau data, memantau prosesnya, lalu menerbitkannya. Cocok untuk membangun beberapa situs sekaligus, mengotomasi perubahan berkala, atau menyambungkan panel ini ke perkakas Anda.
Aturannya sama persis dengan memakai panel. Penyaringan konten tetap berjalan, tiap perintah AI tetap memakai 1 Magic token, dan batas paket tetap berlaku. Tidak ada jalur khusus yang lebih longgar lewat API.
2. Otentikasi
API tersedia mulai paket berbayar. Selama masa coba, kunci belum bisa dibuat dan permintaan dijawab 402. Dokumentasi ini bisa dibaca kapan saja, jadi agen Anda dapat disiapkan lebih dulu.
Buat kunci di menu API di dalam panel. Kunci ditampilkan sekali saja โ salin dan simpan seperti kata sandi. Kami hanya menyimpan sidik hash-nya, jadi kami sendiri tidak bisa membacakannya kembali.
Authorization: Bearer wsb_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Kunci mewakili akun Anda sepenuhnya. Cabut lewat panel begitu tidak dipakai; pencabutan berlaku seketika. Kunci juga otomatis mati bila akun Anda ditangguhkan.
3. Bentuk permintaan dan balasan
Kirim badan permintaan sebagai JSON dengan Content-Type: application/json. Balasan selalu JSON, apa pun header Accept Anda. Setiap balasan memuat ok bertipe boolean; bila gagal, ada error berisi kalimat yang bisa langsung ditampilkan ke pengguna Anda.
{"ok": true, "job": 42, "sumber": "paket", "kuota": {"total_sisa": 27}}
{"ok": false, "error": "Magic token habis. Beli Magic token untuk lanjut.", "beli": "/tagihan#kredit", "ajak": "/ajak"}
4. Kode status
| Kode | Artinya | Yang sebaiknya agen Anda lakukan |
|---|---|---|
200 | Berhasil | Lanjut |
400 | Badan bukan JSON yang sah | Perbaiki serialisasi Anda |
401 | Kunci tidak ada, salah, dicabut, atau akun ditangguhkan | Jangan diulang โ periksa kuncinya |
402 | Magic token habis, paket berakhir, atau akun belum berlangganan | Berhenti dan beri tahu pemiliknya; mengulang tidak menolong |
404 | Situs atau job tidak ada, atau bukan milik pemegang kunci | Periksa id-nya |
405 | Metode HTTP salah | Periksa GET/POST |
409 | Masih ada proses AI berjalan, slug terpakai, atau batas situs paket tercapai | Tunggu selesai, atau ganti pilihan |
422 | Masukan tidak sah, atau ditolak penyaring konten | Jangan diulang dengan isi yang sama |
429 | Terlalu sering | Tunggu, lihat header Retry-After |
5. Kuota dan batas laju
Yang memakai Magic token hanya perintah AI (POST /situs/{id}/ai). Membuat situs, membaca status, dan menerbitkan tidak memotong apa pun. Permintaan yang ditolak โ 402, 409, 422 โ juga tidak memotong kuota.
Urutan pemakaian: jatah gratis saat mendaftar, lalu Magic token yang dibeli โ paket langganan tidak memborong Magic token. Balasan perintah AI menyertakan sumber supaya agen Anda tahu jatah mana yang terpakai.
Batas laju: 60 permintaan per menit per kunci untuk seluruh API, dan 6 perintah AI per menit per akun. Satu situs hanya boleh punya satu proses AI berjalan; permintaan berikutnya dijawab 409 sampai yang berjalan selesai.
6. Kebijakan konten
Setiap perintah dan setiap pembuatan situs disaring lebih dulu. Permintaan yang mengarah ke perjudian, konten dewasa, narkoba, penipuan, atau peniruan pihak lain dijawab 422 dan tidak pernah dijalankan. Pelanggaran dicatat, dihitung bersama pelanggaran lewat panel, dan setelah mencapai batas akun ditangguhkan โ kunci API ikut mati saat itu juga. Agen yang mengulang isi yang sama hanya akan mempercepat penangguhan.
7. Daftar perintah
GET /kuota
Sisa Magic token dan masa aktif paket.
curl -s https://websalabim.com/api/v1/kuota -H "Authorization: Bearer $KUNCI"
{"ok":true,"kuota":{"total_sisa":27,"gratis_sisa":0,"paket_sisa":9,"kredit":18},
"paket":"Bisnis","berlaku_sampai":"2026-12-01"}
GET /situs
Semua situs milik pemegang kunci.
{"ok":true,"situs":[{"id":12,"slug":"warungkopisari","nama_usaha":"Warung Kopi Sari",
"jenis":"usaha","bahasa":"id","status":"published","alamat":"https://warungkopisari.websalabim.site"}]}
POST /situs
Buat situs baru. Tidak memakai Magic token, tetapi dibatasi jumlah situs paket Anda.
| Kolom | Wajib | Keterangan |
|---|---|---|
nama_usaha | ya | Minimal 2 huruf |
deskripsi | ya | Minimal 10 huruf; makin jelas, makin baik hasil AI-nya |
kategori | tidak | Misalnya Kuliner, Jasa, Toko |
slug | tidak | Subdomain; bila kosong diturunkan dari nama. 3โ40 huruf kecil/angka/- |
jenis | tidak | usaha (bawaan) atau event |
bahasa | tidak | Bahasa isi website: id atau en |
curl -s -X POST https://websalabim.com/api/v1/situs \
-H "Authorization: Bearer $KUNCI" -H "Content-Type: application/json" \
-d '{"nama_usaha":"Warung Kopi Sari","kategori":"Kuliner",
"deskripsi":"Kopi robusta sangrai sendiri, buka tiap hari 07.00-22.00",
"slug":"warungkopisari","bahasa":"id"}'
{"ok":true,"id":12,"slug":"warungkopisari","alamat":"https://warungkopisari.websalabim.site"}
GET /situs/{id}
Satu situs, plus nomor versi draft dan apakah ada perubahan yang belum diterbitkan.
POST /situs/{id}/ai
Memotong kuota. Kirim satu perintah ke AI.
| Kolom | Wajib | Keterangan |
|---|---|---|
prompt | ya | Minimal 5 huruf. Kalimat biasa, seperti berbicara ke perancang |
kanal | tidak | desain (bawaan) atau data untuk mengubah Data Usaha |
mode | tidak | revisi (bawaan) mengubah seperlunya; ulang membuat ulang dari nol |
curl -s -X POST https://websalabim.com/api/v1/situs/12/ai \
-H "Authorization: Bearer $KUNCI" -H "Content-Type: application/json" \
-d '{"prompt":"ganti warna utama jadi hijau dan tambah bagian promo di bawah hero"}'
{"ok":true,"job":42,"sumber":"paket","kuota":{"total_sisa":26}}
GET /situs/{id}/ai/{job}
Status pekerjaan: queued, running, done, atau failed. Saat done, balasannya menyertakan nomor versi dan tautan pratinjau yang berlaku 15 menit.
POST /situs/{id}/terbitkan
Jadikan draft sebagai versi tayang. Tidak memotong kuota.
8. Contoh alur lengkap
Siklus yang biasa dipakai agen: buat situs, minta desain, tunggu selesai, terbitkan.
#!/usr/bin/env bash
set -e
API="https://websalabim.com/api/v1"; H="Authorization: Bearer $KUNCI"; J="Content-Type: application/json"
SID=$(curl -s -X POST "$API/situs" -H "$H" -H "$J" \
-d '{"nama_usaha":"Warung Kopi Sari","deskripsi":"Kopi robusta sangrai sendiri, buka tiap hari"}' \
| php -r 'echo json_decode(file_get_contents("php://stdin"),true)["id"];')
JOB=$(curl -s -X POST "$API/situs/$SID/ai" -H "$H" -H "$J" \
-d '{"prompt":"buat halaman hangat bernuansa cokelat dengan daftar menu dan tombol WhatsApp"}' \
| php -r 'echo json_decode(file_get_contents("php://stdin"),true)["job"];')
# tunggu sampai selesai โ jangan memanggil lebih sering dari sekali per 3 detik
until curl -s "$API/situs/$SID/ai/$JOB" -H "$H" | grep -q '"status":"done"'; do sleep 3; done
curl -s -X POST "$API/situs/$SID/terbitkan" -H "$H"
9. Saran memakainya dengan baik
- Jangan memanggil status lebih sering dari sekali per 3 detik; pekerjaan desain biasanya 1โ2 menit.
- Hentikan agen Anda pada
401,402, dan422โ mengulang tidak akan berhasil dan bisa memperburuk keadaan. - Pada
429, tunggu selamaRetry-Aftermenyebutkan. - Simpan kunci di variabel lingkungan, jangan di dalam kode yang ikut masuk repositori.
- Satu kunci per agen atau per mesin, supaya bila satu bocor cukup mencabut yang itu saja.