Referensi API
Integrasikan enuchat ke sistem Anda menggunakan Tenant API. Kelola percakapan, kirim pesan, dan akses data penagihan secara terprogram.
Autentikasi
Semua permintaan API diautentikasi menggunakan kunci API yang dikirim di header X-Api-Key.
Mendapatkan kunci API Anda
- Pergi ke Pengaturan → Kunci API di dasbor Anda
- Klik Buat Kunci API dan beri nama
- Salin kunci segera — itu hanya ditampilkan sekali
- Simpan dengan aman (variabel lingkungan, manajer rahasia)
Membuat permintaan
Sertakan kunci di setiap permintaan:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsSemua respons adalah JSON. Respons sukses memiliki field data. Kesalahan memiliki field error dengan code dan message.
Keamanan: Kunci API di-hash (SHA-256) di database kami. Kami tidak pernah menyimpan kunci mentah. Perlakukan kunci Anda seperti kata sandi — jangan commit ke kode atau bagikan secara publik.
URL Dasar
https://api.enuchat.com/api/v1/tenant-apiSemua endpoint di bawah ini relatif terhadap URL dasar ini.
Endpoint
GET /widgets
Daftar semua widget untuk akun Anda.
Respons
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Daftar percakapan, diurutkan berdasarkan pesan terbaru.
Parameter Query
| Parameter | Tipe | Deskripsi |
|---|---|---|
status | string | Filter berdasarkan status: open, pending, closed |
widgetId | string | Filter berdasarkan UUID widget |
limit | integer | Hasil maks (default 20, maks 100) |
offset | integer | Lewati N hasil |
Contoh
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Respons
{'{'}
"data": [
{'{'}
"id": "019d6724-000e-...",
"widgetId": "019d19c6-7e0b-...",
"visitorId": "v-abc123",
"visitorName": "John",
"visitorEmail": "john{'@'}example.com",
"visitorLanguage": "en",
"status": "open",
"assignedTo": null,
"lastMessageAt": "2026-04-11T14:30:00+00:00",
"startedAt": "2026-04-11T14:25:00+00:00"
}
]
}GET /conversations/{'{'}id}
Dapatkan percakapan dengan semua pesan.
Parameter Query
| Parameter | Tipe | Deskripsi |
|---|---|---|
limit | integer | Pesan maks (default 50, maks 200) |
Respons
{'{'}
"data": {'{'}
"id": "019d6724-000e-...",
"visitorLanguage": "en",
"status": "open",
"messages": [
{'{'}
"id": "019d6724-1234-...",
"role": "visitor",
"content": "Hello, how much does it cost?",
"contentLanguage": "en",
"translatedContent": "Cześć, ile to kosztuje?",
"translatedLanguage": "pl",
"isAutoReply": false,
"createdAt": "2026-04-11T14:25:30+00:00"
},
{'{'}
"id": "019d6724-5678-...",
"role": "ai",
"content": "Our plans start at €19/month...",
"isAutoReply": true,
"createdAt": "2026-04-11T14:25:32+00:00"
}
]
}
}POST /conversations/{'{'}id}/messages
Kirim pesan ke percakapan. Pesan akan dikirim ke pengunjung secara real-time melalui widget chat.
Body Permintaan
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Field | Tipe | Deskripsi |
|---|---|---|
content | string | Wajib. Teks pesan. |
role | string | system (default) atau operator |
Respons (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
Perbarui status atau penugasan percakapan.
Body Permintaan
{'{'}
"status": "closed"
}| Field | Tipe | Deskripsi |
|---|---|---|
status | string | open, pending, atau closed |
assignedTo | string|null | UUID operator untuk ditugaskan, atau null untuk membatalkan penugasan |
GET /billing/balance
Dapatkan paket dan saldo kredit Anda saat ini.
Respons
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Penanganan Kesalahan
Kesalahan mengembalikan kode status non-2xx dengan body JSON:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| Status HTTP | Arti |
|---|---|
401 | Kunci API tidak valid, kedaluwarsa, atau hilang |
400 | Body permintaan atau parameter tidak valid |
404 | Sumber daya tidak ditemukan (atau milik tenant berbeda) |
500 | Kesalahan server |
Kasus Penggunaan Umum
Integrasi CRM
Polling untuk percakapan baru dan sinkronkan data pengunjung (nama, email, bahasa) ke CRM Anda. Gunakan ID percakapan sebagai referensi eksternal.
Tindak Lanjut Otomatis
Setelah percakapan ditutup, kirim pesan tindak lanjut melalui API: "Terima kasih telah berbincang! Apakah ada hal lain yang dapat kami bantu?"
Alternatif Webhook
Sampai webhook keluar tersedia, polling endpoint percakapan secara berkala untuk mendeteksi pesan baru atau perubahan status.
Operasi Massal
Tutup semua percakapan yang lebih lama dari 7 hari, tugaskan percakapan ke operator berdasarkan logika eksternal, atau ekspor riwayat percakapan untuk analitik.
Batas Tarif
API memungkinkan hingga 60 permintaan per menit per kunci API. Jika Anda melebihi batas ini, Anda akan menerima respons 429 Too Many Requests. Tunggu dan coba lagi dengan backoff eksponensial.
Siap mengintegrasikan?
Buat akun gratis Anda dan hasilkan kunci API dalam hitungan menit.
Mulai Gratis