Ikhtisar
Gunakan API untuk mengelola tenant, channel, kontak, campaign, dan workflow inbox. Autentikasi dengan JWT untuk sesi user atau API key untuk server-to-server.
Mulai cepat
- Daftarkan owner tenant via /auth/register.
- Simpan access_token dan refresh_token dengan aman.
- Gunakan Authorization: Bearer untuk aksi user dan X-API-Key untuk server-to-server.
- Buat channel, kontak, segmen, dan template.
- Antrikan campaign atau kirim pesan, lalu pantau inbox/webhook.
Unduhan
Ambil koleksi Postman atau spesifikasi OpenAPI untuk eksplor API secara lokal.
Autentikasi
JWT (Sesi pengguna)
Gunakan Authorization: Bearer <token>. Refresh token via /auth/refresh.
API key (Server-to-server)
Gunakan header X-API-Key. Tenant di-resolve dari key dan tercatat untuk usage.
Headers
Authorization: Bearer <access_token> X-API-Key: <api_key> Content-Type: application/json
Endpoint auth
POST/auth/registerRegistrasi↓
Buat akun user dan kembalikan access dan refresh token. Tenant dibuat saat aktivasi trial atau checkout berbayar.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"owner@acme.com","password":"secret","otp_channel":"email"}'Respons
{
"data": {
"token": "access_token",
"refresh_token": "refresh_token",
"onboarding_status": "pending_tenant",
"user": {
"id": "user_id",
"email": "owner@acme.com"
}
}
}POST/auth/loginLogin↓
Autentikasi dengan email dan password untuk mendapatkan access dan refresh token.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"owner@acme.com","password":"secret"}'Respons
{
"data": {
"token": "access_token",
"refresh_token": "refresh_token"
}
}POST/auth/refreshRefresh token↓
Tukar refresh token untuk access token baru dan refresh token yang dirotasi.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/refresh \
-H 'Content-Type: application/json' \
-d '{"refresh_token":"refresh_token"}'Respons
{
"data": {
"token": "new_access_token",
"refresh_token": "new_refresh_token"
}
}POST/auth/logoutLogout↓
Cabut access token saat ini dan akhiri sesi.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/logout \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}GET/auth/meAmbil profil↓
Kembalikan profil user saat ini beserta membership tenant.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/auth/me \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"user": {
"id": "user_id",
"email": "owner@acme.com"
},
"tenant": {
"id": "tenant_id",
"name": "Acme Inc"
},
"memberships": [
{
"tenant_id": "tenant_id",
"role": "owner"
}
]
}
}PATCH/auth/mePerbarui profil↓
Perbarui field profil user seperti nama.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/auth/me \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Owner Name"}'Respons
{
"data": {
"ok": true
}
}POST/auth/me/change-passwordUbah password↓
Ubah password setelah memvalidasi password lama.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/me/change-password \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"current_password":"secret","new_password":"newsecret"}'Respons
{
"data": {
"ok": true
}
}GET/auth/me/sessionsDaftar sesi↓
Daftar sesi aktif untuk user saat ini.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/auth/me/sessions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"sessions": [
{
"id": "session_id",
"ip": "127.0.0.1",
"created_at": "2024-08-17T10:12:00Z"
}
]
}
}POST/auth/me/sessions/revokeCabut sesi↓
Cabut satu sesi berdasarkan session ID.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/me/sessions/revoke \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"session_id":"session_id"}'Respons
{
"data": {
"ok": true
}
}POST/auth/me/sessions/revoke-allCabut semua sesi↓
Logout semua sesi untuk user saat ini.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/me/sessions/revoke-all \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/auth/me/mfa/toggleToggle MFA↓
Aktifkan atau nonaktifkan multi-factor authentication.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/me/mfa/toggle \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"enabled":true}'Respons
{
"data": {
"enabled": true
}
}POST/auth/forgotLupa password↓
Kirim token reset password ke email user.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/forgot \
-H 'Content-Type: application/json' \
-d '{"email":"owner@acme.com"}'Respons
{
"data": {
"ok": true
}
}POST/auth/resetReset password↓
Reset password menggunakan token yang valid.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/reset \
-H 'Content-Type: application/json' \
-d '{"token":"reset_token","password":"newsecret"}'Respons
{
"data": {
"ok": true
}
}POST/auth/verifyVerifikasi akun↓
Verifikasi akun menggunakan token email.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/verify \
-H 'Content-Type: application/json' \
-d '{"token":"verify_token"}'Respons
{
"data": {
"ok": true
}
}POST/auth/verify/requestMinta verifikasi↓
Minta token verifikasi email baru untuk user saat ini.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/auth/verify/request \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}Coba langsung
Runner interaktif untuk flow SaaS yang paling umum. Pastikan CORS mengizinkan origin ini, atau test dari client server-side.
Flow
Respons
Belum ada response
Error
Error mengikuti Problem Details: { "type": "https://jangkauin.local/problems/bad_request", "title": "Bad Request", "details": "message", "validation": [{ "field": "email", "message": "Invalid value" }] }. Batas plan bisa mengembalikan 402 atau 403 tergantung guard.
Respons sukses dibungkus { data: ..., meta: { page, limit, total, sort, order, count, next_cursor } } saat metadata pagination tersedia.
Kenapa 400 sering muncul
Sebagian besar handler memvalidasi UUID param, field wajib, bentuk JSON, dan rule domain. Payload tidak valid, field kurang, atau gagal parsing akan jadi 400.
Peta error per-route (dari OpenAPI)
0 routeDihasilkan dari spesifikasi OpenAPI. Setiap baris menampilkan response non-2xx yang dideklarasikan endpoint tersebut.
Belum ada error route di spesifikasi.
Contoh payload error standar
400
{"error":{"message":"invalid payload","code":"bad_request"}}401
{"error":{"message":"unauthorized","code":"unauthorized"}}403
{"error":{"message":"forbidden","code":"forbidden"}}404
{"error":{"message":"not found","code":"not_found"}}409
{"error":{"message":"conflict","code":"conflict"}}402
{"error":{"message":"subscription required","code":"payment_required"}}413
{"error":{"message":"payload too large","code":"payload_too_large"}}429
{"error":{"message":"rate limit exceeded","code":"rate_limited"}}500
{"error":{"message":"internal server error","code":"server_error"}}400
Bad request
UUID tidak valid, JSON tidak valid, field wajib kosong, filter tidak didukung, email/phone tidak valid, atau payload salah.
401
Unauthorized
Token tidak ada/tidak valid, token expired, atau API key salah.
403
Forbidden
Role/permission ditolak, tenant mismatch, fitur nonaktif, atau demo read-only.
404
Not found
Resource ID tidak ditemukan atau tidak terlihat untuk tenant ini.
409
Conflict
Konflik state (contoh: sudah di-assign, slug/code duplikat).
402
Payment required
Fitur plan tidak aktif, subscription wajib, atau limit/usage habis.
413
Payload terlalu besar
Attachment melebihi batas ukuran atau constraint upload.
429
Rate limited
Terlalu banyak request atau proteksi abuse aktif.
501
Not implemented
Fitur belum tersedia di build ini (mis. dukungan provider belum lengkap).
500/503
Server error
Kegagalan tak terduga atau service dependensi tidak tersedia. Coba ulang dengan backoff.
Tenant & member
Tenant mewakili organisasi. Setiap request scope tenant harus menyertakan tenant ID di path.
GET/tenantsDaftar Tenant↓
Ambil daftar Tenant dengan pagination sesuai tenant saat ini.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"tenants": [
{
"id": "tenant_id",
"name": "Acme Inc"
}
]
}
}POST/tenantsBuat Tenant↓
Buat Tenant baru dan kembalikan payload awal.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Acme Inc"}'Respons
{
"data": {
"tenant": {
"id": "tenant_id",
"name": "Acme Inc"
}
}
}GET/tenants/currentDetail Tenant↓
Ambil satu Tenant beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/current \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"tenant": {
"id": "tenant_id",
"name": "Acme Inc"
}
}
}GET/tenants/<tenant_id>/membersDaftar Member↓
Ambil daftar Member dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/members \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"members": [
{
"id": "user_id",
"email": "owner@acme.com",
"role": "owner"
}
]
}
}GET/tenants/<tenant_id>/members/<user_id>Detail Member↓
Ambil satu Member beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `user_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/members/<user_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"member": {
"id": "user_id",
"email": "owner@acme.com",
"role": "owner"
}
}
}PATCH/tenants/<tenant_id>/members/<user_id>Perbarui Member↓
Perbarui field Member dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `user_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/members/<user_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"role":"admin"}'Respons
{
"data": {
"ok": true
}
}DELETE/tenants/<tenant_id>/members/<user_id>Hapus Member↓
Hapus Member dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `user_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/members/<user_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/inviteUndang Resource↓
Kirim undangan dan provision akses untuk Resource.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/invite \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"email":"agent@acme.com","role":"agent"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/invite/bulkUndang Resource↓
Kirim undangan dan provision akses untuk Resource.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/invite/bulk \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"emails":["agent1@acme.com","agent2@acme.com"],"role":"agent"}'Respons
{
"data": {
"ok": true
}
}POST/invites/acceptUndang Resource↓
Kirim undangan dan provision akses untuk Resource.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/invites/accept \
-H 'Content-Type: application/json' \
-d '{"token":"invite_token","password":"changeme123","full_name":"Raka Aditya"}'Respons
{
"data": {
"ok": true,
"status": "accepted",
"login_url": "/auth/login"
}
}Channel
Hubungkan channel Email atau WhatsApp POC. Flow login WhatsApp bisa mengembalikan data QR dummy pada build saat ini.
GET/tenants/<tenant_id>/channelsDaftar Channel↓
Ambil daftar Channel dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"channels": [
{
"id": "channel_id",
"type": "email",
"status": "active"
}
]
}
}POST/tenants/<tenant_id>/channelsBuat Channel↓
Buat Channel baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"type":"email","provider":"smtp","name":"Support SMTP","config":{"host":"smtp.example.com","username":"support"}}'Respons
{
"data": {
"channel": {
"id": "channel_id",
"type": "email",
"status": "active"
}
}
}GET/tenants/<tenant_id>/channels/<channel_id>Detail Channel↓
Ambil satu Channel beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"channel": {
"id": "channel_id",
"type": "email",
"status": "active"
}
}
}PATCH/tenants/<tenant_id>/channels/<channel_id>Perbarui Channel↓
Perbarui field Channel dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Support SMTP"}'Respons
{
"data": {
"channel": {
"id": "channel_id",
"name": "Support SMTP"
}
}
}DELETE/tenants/<tenant_id>/channels/<channel_id>Hapus Channel↓
Hapus Channel dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}PATCH/tenants/<tenant_id>/channels/<channel_id>/default-otpAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id>/default-otp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}PATCH/tenants/<tenant_id>/channels/<channel_id>/rotate-secretRotasi Channel↓
Rotasi secret pada Channel dan batalkan nilai lama.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id>/rotate-secret \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"secret": "new_secret"
}
}GET/tenants/<tenant_id>/channels/<channel_id>/healthDetail Channel↓
Ambil satu Channel beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id>/health \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"status": "ok"
}
}POST/tenants/<tenant_id>/channels/<channel_id>/test-emailAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/<channel_id>/test-email \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"to":"user@acme.com","subject":"Hello","body":"Hi"}'Respons
{
"data": {
"ok": true
}
}GET/tenants/<tenant_id>/channels/whatsappDaftar Channel↓
Ambil daftar Channel dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"channels": [
{
"id": "wa_id",
"status": "pending"
}
]
}
}POST/tenants/<tenant_id>/channels/whatsappBuat Channel↓
Buat Channel baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Support WA","phone":"+628123456789"}'Respons
{
"data": {
"channel": {
"id": "wa_id",
"status": "pending"
}
}
}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/loginLogin Channel↓
Autentikasi dan mulai sesi baru untuk Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/login \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"status": "pending",
"qr": "data:image/png;base64,..."
}
}GET/tenants/<tenant_id>/channels/whatsapp/<wa_id>/statusStatus Channel↓
Cek status atau health terbaru untuk Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/status \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"status": "connected"
}
}GET/tenants/<tenant_id>/channels/whatsapp/streamStream Channel↓
Streaming update langsung untuk Channel via SSE.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Gunakan EventSource atau client SSE untuk stream.
SSE stream. Gunakan EventSource di browser.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/stream \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
event: init
data: {"ok":true}GET/tenants/<tenant_id>/channels/whatsapp/<wa_id>/login-streamLogin Channel↓
Autentikasi dan mulai sesi baru untuk Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
SSE stream. Gunakan EventSource di browser.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/login-stream \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
event: qr
data: {"qr":"data:image/png;base64,..."}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/sendKirim Channel↓
Kirim pesan Channel lewat channel yang dikonfigurasi.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/send \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"to":"+628123456789","body":"Hello"}'Respons
{
"data": {
"message_id": "provider_message_id"
}
}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/testAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/test \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"to":"+628123456789","body":"Test"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/logoutLogout Channel↓
Akhiri sesi Channel dan cabut token.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/logout \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}DELETE/tenants/<tenant_id>/channels/whatsapp/<wa_id>Hapus Channel↓
Hapus Channel dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/import-contactsImpor Channel↓
Impor massal Channel dari file atau payload eksternal.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
Gunakan multipart form upload dengan field file.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/import-contacts \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"imported": 120
}
}POST/tenants/<tenant_id>/channels/whatsapp/<wa_id>/inboundAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `wa_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/whatsapp/<wa_id>/inbound \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"from":"+628123456789","to":"+628987654321","body":"Hello","message_id":"provider_msg_id"}'Respons
{
"data": {
"ok": true
}
}GET/tenants/<tenant_id>/channels/telegramDaftar Channel↓
Ambil daftar Channel dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"channels": [
{
"id": "telegram_id",
"status": "connected"
}
]
}
}POST/tenants/<tenant_id>/channels/telegramBuat Channel↓
Buat Channel baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Telegram Support","bot_token":"<bot_token>","default_chat_id":"<chat_id>"}'Respons
{
"data": {
"id": "telegram_id",
"status": "disconnected"
}
}POST/tenants/<tenant_id>/channels/telegram/<telegram_id>/connectAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `telegram_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram/<telegram_id>/connect \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"bot_token":"<bot_token>","default_chat_id":"<chat_id>"}'Respons
{
"data": {
"id": "telegram_id",
"status": "connected"
}
}GET/tenants/<tenant_id>/channels/telegram/<telegram_id>/statusStatus Channel↓
Cek status atau health terbaru untuk Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `telegram_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram/<telegram_id>/status \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"id": "telegram_id",
"status": "connected"
}
}POST/tenants/<tenant_id>/channels/telegram/<telegram_id>/sendKirim Channel↓
Kirim pesan Channel lewat channel yang dikonfigurasi.
Cara pakai
- - Ganti parameter path: `tenant_id`, `telegram_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram/<telegram_id>/send \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"chat_id":"<chat_id>","message":"Hello"}'Respons
{
"data": {
"status": "sent"
}
}POST/tenants/<tenant_id>/channels/telegram/<telegram_id>/logoutLogout Channel↓
Akhiri sesi Channel dan cabut token.
Cara pakai
- - Ganti parameter path: `tenant_id`, `telegram_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram/<telegram_id>/logout \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"status": "disconnected"
}
}DELETE/tenants/<tenant_id>/channels/telegram/<telegram_id>Hapus Channel↓
Hapus Channel dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `telegram_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/telegram/<telegram_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"status": "deleted"
}
}POST/tenants/<tenant_id>/channels/email/<channel_id>/sendKirim Channel↓
Kirim pesan Channel lewat channel yang dikonfigurasi.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/email/<channel_id>/send \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"to":"user@acme.com","subject":"Hello","body":"Hi"}'Respons
{
"data": {
"ok": true,
"message_id": "provider_message_id"
}
}POST/tenants/<tenant_id>/channels/email/<channel_id>/inboundAksi Channel↓
Jalankan aksi pada Channel.
Cara pakai
- - Ganti parameter path: `tenant_id`, `channel_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/email/<channel_id>/inbound \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"from":"user@acme.com","to":"support@acme.com","subject":"Help","body":"Need assistance","message_id":"msg_id"}'Respons
{
"data": {
"ok": true
}
}Kontak
GET/tenants/<tenant_id>/contacts?limit=20&page=1Daftar Kontak↓
Ambil daftar Kontak dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
- - Pagination tersedia via limit/page atau cursor.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts?limit=20&page=1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>'Respons
{
"data": {
"contacts": [],
"page": 1,
"limit": 20,
"total": 0
}
}GET/tenants/<tenant_id>/contacts/<contact_id>Detail Kontak↓
Ambil satu Kontak beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `contact_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/<contact_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>'Respons
{
"data": {
"contact": {
"id": "contact_id",
"name": "Nadia"
}
}
}POST/tenants/<tenant_id>/contactsBuat Kontak↓
Buat Kontak baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>' \
-d '{"name":"Nadia","phone":"+628123456789","email":"nadia@acme.com"}'Respons
{
"data": {
"id": "contact_id",
"tenant_id": "tenant_id",
"name": "Nadia",
"phone": "+628123456789",
"email": "nadia@acme.com",
"wa_opt_in": true,
"opt_out": false,
"attributes": {},
"created_at": "2024-08-17T10:12:00Z",
"updated_at": "2024-08-17T10:12:00Z"
}
}PATCH/tenants/<tenant_id>/contacts/<contact_id>Perbarui Kontak↓
Perbarui field Kontak dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `contact_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/<contact_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>' \
-d '{"name":"Nadia","phone":"+628123456789","email":"nadia@acme.com","attributes":{"tier":"gold"}}'Respons
{
"data": {
"contact": {
"id": "contact_id",
"name": "Nadia"
}
}
}PATCH/tenants/<tenant_id>/contacts/<contact_id>/phonePerbarui Kontak↓
Perbarui field Kontak dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `contact_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/<contact_id>/phone \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>' \
-d '{"phone":"+628123456789"}'Respons
{
"data": {
"ok": true
}
}PATCH/tenants/<tenant_id>/contacts/<contact_id>/opt-outAksi Kontak↓
Jalankan aksi pada Kontak.
Cara pakai
- - Ganti parameter path: `tenant_id`, `contact_id`.
- - Gunakan Authorization: Bearer <access_token> atau X-API-Key.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/<contact_id>/opt-out \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'X-API-Key: <api_key>' \
-d '{"opt_out":true}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/contacts/import-csvImpor Kontak↓
Impor massal Kontak dari file atau payload eksternal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
Gunakan multipart form upload dengan field file.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/import-csv \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"imported": 120
}
}GET/tenants/<tenant_id>/contacts/export-csvEkspor Kontak↓
Ekspor Kontak ke file yang bisa diunduh.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts/export-csv \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
CSV file download
Segmen
Segmen menyimpan filter dinamis dan dihitung saat dibutuhkan untuk campaign.
{
"filters": [
{ "field": "tag", "op": "in", "value": ["vip", "trial"] },
{ "field": "channel", "op": "eq", "value": "whatsapp" },
{ "field": "opt_out", "op": "eq", "value": false },
{ "field": "custom.job_title", "op": "contains", "value": "manager" }
]
}GET/tenants/<tenant_id>/segments?limit=20&page=1Daftar Segmen↓
Ambil daftar Segmen dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Pagination tersedia via limit/page atau cursor.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments?limit=20&page=1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"segments": [],
"page": 1,
"limit": 20,
"total": 0
}
}POST/tenants/<tenant_id>/segmentsBuat Segmen↓
Buat Segmen baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"VIP","filters":[{"field":"tag","op":"in","value":["vip"]}]}'Respons
{
"data": {
"segment": {
"id": "segment_id",
"name": "VIP"
}
}
}GET/tenants/<tenant_id>/segments/<segment_id>Detail Segmen↓
Ambil satu Segmen beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `segment_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments/<segment_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"segment": {
"id": "segment_id",
"name": "VIP"
}
}
}PATCH/tenants/<tenant_id>/segments/<segment_id>Perbarui Segmen↓
Perbarui field Segmen dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `segment_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments/<segment_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"VIP","filters":[{"field":"tag","op":"in","value":["vip"]}]}'Respons
{
"data": {
"segment": {
"id": "segment_id",
"name": "VIP"
}
}
}DELETE/tenants/<tenant_id>/segments/<segment_id>Hapus Segmen↓
Hapus Segmen dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `segment_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments/<segment_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/segments/<segment_id>/previewPratinjau Segmen↓
Pratinjau output Segmen tanpa mengirim atau enqueue.
Cara pakai
- - Ganti parameter path: `tenant_id`, `segment_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/segments/<segment_id>/preview \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"count": 120
}
}Campaign
GET/tenants/<tenant_id>/campaigns?limit=20&page=1Daftar Campaign↓
Ambil daftar Campaign dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Pagination tersedia via limit/page atau cursor.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns?limit=20&page=1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"campaigns": [],
"page": 1,
"limit": 20,
"total": 0
}
}POST/tenants/<tenant_id>/campaignsBuat Campaign↓
Buat Campaign baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Promo Blast","channel_type":"email","segment_id":"segment_id","template_id":"template_id","schedule_at":"2024-09-01T09:00:00Z"}'Respons
{
"data": {
"campaign": {
"id": "campaign_id",
"name": "Promo Blast"
}
}
}GET/tenants/<tenant_id>/campaigns/<campaign_id>Detail Campaign↓
Ambil satu Campaign beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `campaign_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns/<campaign_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"campaign": {
"id": "campaign_id",
"name": "Promo Blast"
}
}
}PATCH/tenants/<tenant_id>/campaigns/<campaign_id>Perbarui Campaign↓
Perbarui field Campaign dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `campaign_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns/<campaign_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Promo Blast Q3"}'Respons
{
"data": {
"campaign": {
"id": "campaign_id",
"name": "Promo Blast Q3"
}
}
}DELETE/tenants/<tenant_id>/campaigns/<campaign_id>Hapus Campaign↓
Hapus Campaign dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `campaign_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns/<campaign_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/campaigns/<campaign_id>/enqueueAntrikan Campaign↓
Antrikan Campaign untuk diproses oleh worker.
Cara pakai
- - Ganti parameter path: `tenant_id`, `campaign_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns/<campaign_id>/enqueue \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"dry_run":false}'Respons
{
"data": {
"jobs_enqueued": 120
}
}GET/tenants/<tenant_id>/campaigns/<campaign_id>/jobsDetail Campaign↓
Ambil satu Campaign beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `campaign_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/campaigns/<campaign_id>/jobs \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"jobs": [
{
"id": "job_id",
"status": "queued"
}
]
}
}Inbox
Inbox bersama mendukung assignment, klaim, dan update SSE.
GET/tenants/<tenant_id>/conversations?limit=20&page=1Daftar Percakapan↓
Ambil daftar Percakapan dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Pagination tersedia via limit/page atau cursor.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations?limit=20&page=1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"conversations": [],
"page": 1,
"limit": 20,
"total": 0
}
}GET/tenants/<tenant_id>/conversations/<conversation_id>Detail Percakapan↓
Ambil satu Percakapan beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"conversation": {
"id": "conversation_id",
"status": "open"
}
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/assignTetapkan Percakapan↓
Tetapkan Percakapan ke owner atau agent tertentu.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/assign \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"assignee_id":"user_id"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/claimKlaim Percakapan↓
Klaim Percakapan untuk agent saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/claim \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/unassignTetapkan Percakapan↓
Tetapkan Percakapan ke owner atau agent tertentu.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/unassign \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/mark-readTandai dibaca Percakapan↓
Tandai Percakapan sebagai dibaca untuk tenant ini.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/mark-read \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/bulk/mark-readBulk Percakapan↓
Jalankan aksi secara bulk pada banyak Percakapan.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/bulk/mark-read \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"ids":["conversation_id"]}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/reply/emailBalas Percakapan↓
Kirim balasan untuk percakapan atau pesan Percakapan.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/reply/email \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"subject":"Re: Help","body":"We can assist"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/conversations/<conversation_id>/closeAksi Percakapan↓
Jalankan aksi pada Percakapan.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/close \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}GET/tenants/<tenant_id>/conversations/<conversation_id>/messagesDetail Percakapan↓
Ambil satu Percakapan beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `conversation_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/<conversation_id>/messages \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"messages": [
{
"id": "message_id",
"body": "Hello"
}
]
}
}GET/tenants/<tenant_id>/conversations/streamStream Percakapan↓
Streaming update langsung untuk Percakapan via SSE.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Gunakan EventSource atau client SSE untuk stream.
SSE stream. Gunakan EventSource di browser.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/conversations/stream \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
event: init
data: {"ok":true}Template
POST/tenants/<tenant_id>/templatesBuat Template↓
Buat Template baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Order Update","channel_type":"email","body":"Hi {{name}}, your order shipped."}'Respons
{
"data": {
"template": {
"id": "template_id",
"name": "Order Update"
}
}
}GET/tenants/<tenant_id>/templatesDaftar Template↓
Ambil daftar Template dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"templates": [
{
"id": "template_id",
"name": "Order Update"
}
]
}
}GET/tenants/<tenant_id>/templates/<template_id>Detail Template↓
Ambil satu Template beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `template_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates/<template_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"template": {
"id": "template_id",
"name": "Order Update"
}
}
}PATCH/tenants/<tenant_id>/templates/<template_id>Perbarui Template↓
Perbarui field Template dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `template_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates/<template_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"Order Update v2"}'Respons
{
"data": {
"template": {
"id": "template_id",
"name": "Order Update v2"
}
}
}DELETE/tenants/<tenant_id>/templates/<template_id>Hapus Template↓
Hapus Template dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `template_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates/<template_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/templates/<template_id>/cloneAksi Template↓
Jalankan aksi pada Template.
Cara pakai
- - Ganti parameter path: `tenant_id`, `template_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/templates/<template_id>/clone \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"template": {
"id": "template_id_copy",
"name": "Order Update"
}
}
}Webhook
Event meliputi message.sent, message.failed, contact.created, contact.updated, campaign.started, campaign.completed.
X-Jangkauin-Event: message.sent X-Jangkauin-Webhook-ID: <webhook_id> X-Jangkauin-Signature: HMAC_SHA256(raw_body)
POST/tenants/<tenant_id>/webhooksBuat Webhook↓
Buat Webhook baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"url":"https://example.com/webhooks/jangkauin","events":["message.sent","message.failed"]}'Respons
{
"data": {
"webhook": {
"id": "webhook_id",
"status": "active"
}
}
}GET/tenants/<tenant_id>/webhooksDaftar Webhook↓
Ambil daftar Webhook dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"webhooks": [
{
"id": "webhook_id",
"status": "active"
}
]
}
}PATCH/tenants/<tenant_id>/webhooks/<webhook_id>Perbarui Webhook↓
Perbarui field Webhook dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"url":"https://example.com/webhooks/jangkauin","events":["message.sent"]}'Respons
{
"data": {
"webhook": {
"id": "webhook_id",
"status": "active"
}
}
}DELETE/tenants/<tenant_id>/webhooks/<webhook_id>Hapus Webhook↓
Hapus Webhook dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}PATCH/tenants/<tenant_id>/webhooks/<webhook_id>/statusStatus Webhook↓
Cek status atau health terbaru untuk Webhook.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id>/status \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"status":"active"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/webhooks/<webhook_id>/rotate-secretRotasi Webhook↓
Rotasi secret pada Webhook dan batalkan nilai lama.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id>/rotate-secret \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"secret": "new_secret"
}
}GET/tenants/<tenant_id>/webhooks/<webhook_id>/logsDetail Webhook↓
Ambil satu Webhook beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id>/logs \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"logs": [
{
"id": "log_id",
"status": "delivered"
}
]
}
}POST/tenants/<tenant_id>/webhooks/<webhook_id>/resend/<log_id>Kirim Webhook↓
Kirim pesan Webhook lewat channel yang dikonfigurasi.
Cara pakai
- - Ganti parameter path: `tenant_id`, `webhook_id`, `log_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks/<webhook_id>/resend/<log_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}Storage
Upload menerima multipart file atau raw body untuk payload besar.
POST/tenants/<tenant_id>/storage/uploadAksi Resource↓
Jalankan aksi pada Resource.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
Gunakan multipart form dengan field file atau kirim raw body.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/storage/upload \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"id": "object_id",
"url": "https://...",
"size": 1024
}
}GET/tenants/<tenant_id>/storage/objectsDaftar Resource↓
Ambil daftar Resource dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/storage/objects \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": [
{
"id": "object_id",
"name": "file.png",
"size": 1024
}
]
}DELETE/tenants/<tenant_id>/storage/objects/<object_id>Hapus Resource↓
Hapus Resource dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `object_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/storage/objects/<object_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}API key
GET/tenants/<tenant_id>/api-keysDaftar API key↓
Ambil daftar API key dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"keys": [
{
"id": "key_id",
"name": "backend-prod",
"status": "active"
}
]
}
}POST/tenants/<tenant_id>/api-keysBuat API key↓
Buat API key baru dan kembalikan payload awal.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"backend-prod"}'Respons
{
"data": {
"id": "key_id",
"name": "backend-prod",
"secret": "secret",
"status": "active"
}
}DELETE/tenants/<tenant_id>/api-keys/<key_id>Hapus API key↓
Hapus API key dan cabut aksesnya secara langsung.
Cara pakai
- - Ganti parameter path: `tenant_id`, `key_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X DELETE https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys/<key_id> \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}PATCH/tenants/<tenant_id>/api-keys/<key_id>/statusStatus API key↓
Cek status atau health terbaru untuk API key.
Cara pakai
- - Ganti parameter path: `tenant_id`, `key_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X PATCH https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys/<key_id>/status \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"status":"disabled"}'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/api-keys/<key_id>/rotateRotasi API key↓
Rotasi secret pada API key dan batalkan nilai lama.
Cara pakai
- - Ganti parameter path: `tenant_id`, `key_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys/<key_id>/rotate \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"secret": "new_secret"
}
}GET/tenants/<tenant_id>/api-keys/<key_id>/usageDetail API key↓
Ambil satu API key beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `key_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys/<key_id>/usage \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"usage": [
{
"path": "/contacts",
"count": 120
}
]
}
}Provider key & feature flag
GET/tenants/<tenant_id>/integrations/provider-keysDaftar Provider key↓
Ambil daftar Provider key dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/provider-keys \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"keys": [
{
"id": "provider_key_id",
"provider": "xendit"
}
]
}
}POST/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/rotateRotasi Provider key↓
Rotasi secret pada Provider key dan batalkan nilai lama.
Cara pakai
- - Ganti parameter path: `tenant_id`, `provider_key_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/rotate \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/toggleToggle Provider key↓
Aktifkan atau nonaktifkan fitur pada Provider key.
Cara pakai
- - Ganti parameter path: `tenant_id`, `provider_key_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/toggle \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"enabled":true}'Respons
{
"data": {
"ok": true
}
}GET/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/auditsDetail Provider key↓
Ambil satu Provider key beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`, `provider_key_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/provider-keys/<provider_key_id>/audits \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"audits": [
{
"id": "audit_id",
"action": "rotate"
}
]
}
}GET/tenants/<tenant_id>/integrations/feature-flagsDaftar Resource↓
Ambil daftar Resource dengan pagination sesuai tenant saat ini.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/feature-flags \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"flags": [
{
"key": "feature_webhooks",
"enabled": true
}
]
}
}POST/tenants/<tenant_id>/integrations/feature-flags/<flag_key>/toggleToggle Resource↓
Aktifkan atau nonaktifkan fitur pada Resource.
Cara pakai
- - Ganti parameter path: `tenant_id`, `flag_key`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/feature-flags/<flag_key>/toggle \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"enabled":false}'Respons
{
"data": {
"key": "feature_webhooks",
"enabled": false
}
}GET/tenants/<tenant_id>/integrations/storageDetail Storage↓
Ambil satu Storage beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/storage \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"provider": "s3",
"bucket": "jangkauin",
"is_public": false
}
}POST/tenants/<tenant_id>/integrations/storagePerbarui Storage↓
Perbarui field Storage dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/integrations/storage \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"provider":"s3","bucket":"jangkauin","is_public":false}'Respons
{
"data": {
"ok": true
}
}Penggunaan & statistik
GET/tenants/<tenant_id>/usage?key=messages_sent&months=6Detail Usage↓
Ambil satu Usage beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/usage?key=messages_sent&months=6 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"usage": [
{
"month": "2024-08",
"value": 1200
}
]
}
}GET/tenants/<tenant_id>/statsDetail Resource↓
Ambil satu Resource beserta konfigurasi dan status terbaru.
Cara pakai
- - Ganti parameter path: `tenant_id`.
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/stats \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"contacts": 120,
"messages": 4200,
"campaigns": 5
}
}Billing
GET/plansDetail Resource↓
Ambil satu Resource beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/plans \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"plans": [
{
"code": "trial",
"name": "Trial"
}
]
}
}GET/billing/subscriptionDetail Billing↓
Ambil satu Billing beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/billing/subscription \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"plan_code": "trial",
"status": "active"
}
}POST/billing/subscriptionAksi Billing↓
Jalankan aksi pada Billing.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/billing/subscription \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"plan_code":"growth"}'Respons
{
"data": {
"plan_code": "growth",
"status": "active"
}
}POST/billing/trial/activateAktifkan Billing↓
Aktifkan flow Billing dan siapkan data yang dibutuhkan.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/billing/trial/activate \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"tenant_payload":{"name":"Acme Inc","industry":"Retail","size":"1-10","billing_email":"owner@acme.com","use_case":"Support inbox"},"contact_phone":"+628123456789"}'Respons
{
"data": {
"tenant": {
"id": "tenant_id",
"name": "Acme Inc"
},
"subscription": {
"plan_code": "trial",
"status": "active"
},
"token": "access_token",
"refresh_token": "refresh_token"
}
}POST/billing/trial/requestAjukan Billing↓
Ajukan Billing untuk ditinjau.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/billing/trial/request \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"company_name":"Acme Inc","industry":"Retail","company_size":"1-10","work_email":"owner@acme.com","use_case":"Support inbox","notes":""}'Respons
{
"data": {
"ok": true,
"status": "pending_review"
}
}GET/billing/invoicesDetail Billing↓
Ambil satu Billing beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/billing/invoices \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"invoices": [
{
"id": "invoice_id",
"external_id": "pay_123",
"amount": 150000,
"currency": "IDR",
"plan_code": "growth",
"status": "paid",
"issued_at": "2024-12-01T10:00:00Z",
"paid_at": "2024-12-01T10:10:00Z",
"download_url": "/api/v1/billing/invoices/pay_123/download"
}
],
"page": 1,
"limit": 20,
"total": 1
}
}GET/billing/invoices/{external_id}/downloadDetail Billing↓
Ambil satu Billing beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/billing/invoices/{external_id}/download \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
<!doctype html><html><body>Invoice</body></html>
GET/billing/prefsDetail Billing↓
Ambil satu Billing beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/billing/prefs \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"email_enabled": true
}
}POST/billing/prefsPerbarui Billing↓
Perbarui field Billing dan kembalikan state terbaru bila tersedia.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/billing/prefs \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"email_enabled":true}'Respons
{
"data": {
"ok": true
}
}Pembayaran
Request webhook memerlukan signature HMAC yang valid.
POST/payments/checkoutAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/checkout \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"plan_code":"growth","provider":"xendit","amount":150000,"currency":"IDR","tenant_payload":{"name":"Acme Inc","industry":"Retail","size":"1-10","billing_email":"owner@acme.com","use_case":"Support inbox"},"contact_phone":"+628123456789"}'Respons
{
"data": {
"external_id": "pay_xxx",
"checkout_url": "https://payments.example/checkout",
"status": "pending"
}
}GET/payments/methodsDetail Pembayaran↓
Ambil satu Pembayaran beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/payments/methods \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": [
{
"payment_type": "invoice",
"gateway": "xendit",
"channel": "invoice",
"active": true,
"priority": 10
}
]
}POST/payments/invoicesAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/invoices \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"payment_type":"invoice","gateway":"auto","currency":"IDR","customer":{"name":"Acme Inc","email":"billing@acme.com","phone":"+628123456789"},"items":[{"name":"Plan Growth","category":"subscription","price":200000,"qty":1,"currency":"IDR"}],"callback":{"success_url":"https://app.example.com/thanks","failure_url":"https://app.example.com/failed"},"options":{"bank":"bca","installment":{"type":"offline","term":0}}}'Respons
{
"data": {
"invoice_number": "inv_xxx",
"status": "published",
"gateway": "xendit",
"payment_url": "https://pay.example"
}
}GET/payments/invoices/{number}Detail Pembayaran↓
Ambil satu Pembayaran beserta konfigurasi dan status terbaru.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
curl -X GET https://staging.jangkauin.site/api/v1/payments/invoices/{number} \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"number": "inv_xxx",
"state": "published"
}
}POST/payments/subscriptionsAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/subscriptions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"payment_type":"invoice","gateway":"auto","currency":"IDR","interval_days":30,"customer":{"name":"Acme Inc","email":"billing@acme.com","phone":"+628123456789"},"items":[{"name":"Plan Growth","category":"subscription","price":200000,"qty":1,"currency":"IDR"}],"callback":{"success_url":"https://app.example.com/thanks","failure_url":"https://app.example.com/failed"},"options":{"bank":"bca","installment":{"type":"offline","term":0}}}'Respons
{
"data": {
"number": "sub_xxx",
"status": "active",
"next_invoice_at": "2025-01-30T00:00:00Z"
}
}POST/payments/subscriptions/{number}/pauseAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/subscriptions/{number}/pause \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/payments/subscriptions/{number}/resumeAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/subscriptions/{number}/resume \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/payments/subscriptions/{number}/stopAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Kirim Authorization: Bearer <access_token>.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/subscriptions/{number}/stop \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'Respons
{
"data": {
"ok": true
}
}POST/payments/webhookAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/webhook \
-H 'Content-Type: application/json' \
-d '{"external_id":"pay_xxx","status":"paid","signature":"..."}'Respons
{
"data": {
"ok": true
}
}POST/payments/webhook/xenditAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/webhook/xendit \
-H 'Content-Type: application/json' \
-d '{"external_id":"pay_xxx","status":"PAID"}'Respons
{
"data": {
"ok": true
}
}POST/payments/webhook/midtransAksi Pembayaran↓
Jalankan aksi pada Pembayaran.
Cara pakai
- - Tidak perlu auth.
- - Kirim JSON body sebagai application/json.
curl -X POST https://staging.jangkauin.site/api/v1/payments/webhook/midtrans \
-H 'Content-Type: application/json' \
-d '{"order_id":"pay_xxx","transaction_status":"settlement","status_code":"200","gross_amount":"150000.00","signature_key":"..."}'Respons
{
"data": {
"ok": true
}
}Contoh: login
curl -X POST https://staging.jangkauin.site/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"dev@acme.com","password":"secret"}'Respons
{
"data": {
"token": "access_token",
"refresh_token": "refresh_token"
}
}Contoh: buat API key
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/api-keys \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"name":"backend-prod"}'Respons
{
"data": {
"id": "api_key_id",
"name": "backend-prod",
"secret": "api_key_secret",
"status": "active"
}
}Contoh: kirim email
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/channels/email/<channel_id>/send \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"to":"user@example.com","subject":"Hello","body":"Hi"}'Respons
{
"data": {
"ok": true,
"message_id": "provider_message_id"
}
}Contoh: daftar webhook
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/webhooks \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>' \
-d '{"url":"https://example.com/webhooks/jangkauin","events":["message.sent","message.failed"]}'Respons
{
"data": {
"id": "webhook_id",
"url": "https://example.com/webhooks/jangkauin",
"events": [
"message.sent",
"message.failed"
],
"status": "active"
}
}Contoh: buat kontak
curl -X POST https://staging.jangkauin.site/api/v1/tenants/<tenant_id>/contacts \
-H 'Content-Type: application/json' \
-H 'X-API-Key: <api_key>' \
-d '{"name":"Nadia","phone":"+628123456789","email":"nadia@acme.com"}'Respons
{
"data": {
"id": "contact_id",
"tenant_id": "tenant_id",
"name": "Nadia",
"phone": "+628123456789",
"email": "nadia@acme.com",
"wa_opt_in": true,
"opt_out": false,
"attributes": {},
"created_at": "2024-08-17T10:12:00Z",
"updated_at": "2024-08-17T10:12:00Z"
}
}