Skip to content

Referensi API

REST API WallaWhats memungkinkan Anda mengelola telepon, langganan akun X, dan riwayat notifikasi secara programatis — persis seperti yang akan Anda lakukan dari dashboard.

  • Base URL: https://api.wallawhats.com
  • Content type: application/json
  • Autentikasi: API key (header)
  • Versioning: API ini stabil. Perubahan yang merusak diumumkan 30 hari sebelumnya melalui email ke setiap akun.

Autentikasi

Setiap permintaan harus menyertakan API key di header x-api-key:

bash
curl https://api.wallawhats.com/user/profile \
  -H "x-api-key: bws_prod_00000000000000000000000000000000"

Key dibuat di dashboard pada Settings → API Keys atau melalui POST /apikeys. Prefix key diawali dengan bws_ dan memiliki panjang 36 karakter. Key ditampilkan hanya sekali, saat pembuatan — jika Anda kehilangan satu, hapus dan buat yang baru.

Cakupan dan masa berlaku

  • Sebuah key terautentikasi sebagai pengguna yang membuatnya. Key memiliki izin yang sama dengan pengguna tersebut dan dihitung terhadap kuota paket yang sama.
  • Key berlaku selama 365 hari. Lakukan rotasi dengan membuat key baru, beralih, dan menghapus yang lama.
  • Key yang hilang, salah format, atau dicabut mengembalikan 401 Unauthorized.

Batas paket untuk key

PaketKey yang diizinkan
Free1
Pro1
Pro+2
Business5
Enterprise20

Mencoba membuat lebih banyak dari yang diizinkan paket Anda mengembalikan 400 dengan "error": "api key limit reached".

Error

Error dikembalikan sebagai JSON dengan field error dan kode status HTTP:

json
{ "error": "phoneNumber is required" }
StatusMakna
400Parameter tidak valid, kuota terlampaui, atau pelanggaran aturan bisnis
401API key hilang atau tidak valid
402Kredit tidak cukup untuk menyelesaikan operasi
404Resource tidak ditemukan
500Error server — coba ulangi dengan exponential backoff

Batas rate

  • Default: 20 permintaan/detik per API key, dengan burst hingga 40.
  • Endpoint list mengembalikan hingga 50 item per halaman; gunakan cursor lastKey untuk paginasi.
  • Aturan WAF dapat mengembalikan 403 pada pola yang abusif. Hubungi dukungan jika Anda tiba-tiba mengalami rate-limiting.

User

Dapatkan profil Anda

GET /user/profile

Mengembalikan profil pengguna yang terautentikasi.

Response

json
{
  "userId": "5a4cbd70-...",
  "email": "jane@example.com",
  "name": "Jane",
  "plan": "pro_plus",
  "createdAt": 1745000000000
}

Contoh

bash
curl https://api.wallawhats.com/user/profile \
  -H "x-api-key: bws_prod_..."

Phones

Sebuah phone adalah nomor WhatsApp terverifikasi yang dapat menerima notifikasi. Anda harus memverifikasi phone sebelum melanggankan akun X padanya.

Daftarkan phone

POST /phones

Menghasilkan kode 6 digit dan mengirimkannya ke nomor melalui WhatsApp. Phone dibuat dalam status pending_verification.

Request

FieldTypeRequiredCatatan
phoneNumberstringyaFormat E.164, misalnya +6281234567890
displayNamestringtidakLabel ramah yang ditampilkan di dashboard

Response

json
{ "phoneNumber": "+6281234567890", "status": "pending_verification" }

Error

  • 400 "invalid phone number format" — bukan E.164
  • 400 "phone number limit reached" — melebihi batas paket (Free/Pro/Pro+ 1, Business 3, Enterprise 10)

Contoh

bash
curl -X POST https://api.wallawhats.com/phones \
  -H "x-api-key: bws_prod_..." \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber": "+6281234567890", "displayName": "Work"}'

Verifikasi phone

POST /phones/verify

Mengonfirmasi phone dengan mengirimkan kode 6 digit. Kode kedaluwarsa setelah 15 menit.

Request

FieldTypeRequired
phoneNumberstring (E.164)ya
codestring (6 digit)ya

Response

json
{ "phoneNumber": "+6281234567890", "status": "verified" }

Error

  • 404 "phone not found"
  • 400 "invalid code" — kode salah
  • 400 "code expired" — lebih dari 15 menit
  • 400 "phone already verified"

Daftar phone Anda

GET /phones

Response

json
{
  "phones": [
    {
      "phoneNumber": "+6281234567890",
      "status": "verified",
      "displayName": "Work",
      "createdAt": 1745000000000,
      "verifiedAt": 1745000060000
    }
  ],
  "count": 1
}

Hapus phone

DELETE /phones/{phoneNumber}

Menghapus phone dan menonaktifkan semua langganan yang menargetkannya. URL-encode + sebagai %2B.

Response

json
{ "success": true }

Contoh

bash
curl -X DELETE "https://api.wallawhats.com/phones/%2B6281234567890" \
  -H "x-api-key: bws_prod_..."

Subscriptions

Sebuah subscription menghubungkan akun X yang ingin Anda pantau ke salah satu phone terverifikasi Anda. Ketika akun X memposting, WallaWhats mengirim notifikasi WhatsApp ke phone tersebut.

Buat subscription

POST /subscriptions

Request

FieldTypeRequiredCatatan
xUsernamestringya1–15 karakter, alfanumerik + underscore. Prefix @ diterima dan dihapus.
phoneNumberstring (E.164)yaHarus salah satu phone terverifikasi Anda.

Response

json
{
  "xUsername": "elonmusk",
  "xUserId": "44196397",
  "xDisplayName": "Elon Musk",
  "xProfileImage": "https://pbs.twimg.com/...",
  "phoneNumber": "+6281234567890",
  "isActive": true,
  "createdAt": 1745000000000
}

Error

  • 400 "invalid X username format" — regex gagal
  • 400 "phone not found" / "phone not verified"
  • 400 "subscription limit reached" — lihat tabel paket di bawah
  • 404 "X account not found" — username tidak ditemukan di X

Batas paket

PaketSubscriptions
Free1
Pro1
Pro+2
Business5
Enterprise50

Daftar subscription Anda

GET /subscriptions

Response

json
{
  "subscriptions": [ /* bentuk sama dengan response POST /subscriptions */ ],
  "count": 3
}

Hapus subscription

DELETE /subscriptions/{xUsername}

Pencocokan case-insensitive pada xUsername. Hapus @ sebelum mengirim.

Response

json
{ "success": true }

Notifications

Setiap notifikasi yang dikirim WallaWhats dicatat di sini, beserta status pengirimannya di WhatsApp.

Daftar notifikasi

GET /notifications

Parameter query

ParamTypeDeskripsi
fromnumber (ms epoch)Filter ke notifikasi yang dibuat pada atau setelah waktu ini
tonumber (ms epoch)Filter ke notifikasi yang dibuat pada atau sebelum waktu ini
lastKeystringCursor paginasi yang dikembalikan oleh respons sebelumnya

Response

json
{
  "notifications": [
    {
      "notificationId": "a1b2c3d4-...",
      "userId": "5a4cbd70-...",
      "phoneNumber": "+6281234567890",
      "xUsername": "elonmusk",
      "tweetId": "1797123456789000000",
      "tweetText": "...",
      "tweetUrl": "https://x.com/elonmusk/status/...",
      "waMessageId": "wamid.HBgN...",
      "status": "delivered",
      "errorMessage": null,
      "createdAt": 1745000000000,
      "updatedAt": 1745000002000
    }
  ],
  "lastKey": "eyJOT1RJRklDQVRJT05fSUQi..."
}

Nilai status yang mungkin: queued, sent, delivered, read, failed.

Ukuran halaman adalah 50. Ketika lastKey tidak ada, Anda telah mencapai akhir.


API keys

Kelola key yang digunakan aplikasi Anda untuk memanggil API ini.

Membuat API key

POST /apikeys

Request

FieldTypeRequired
namestringtidak, default "Default"

Response (201 Created)

json
{
  "apiKey": "bws_prod_00000000000000000000000000000000",
  "keyPrefix": "bws_prod_00",
  "keyName": "CI server",
  "createdAt": 1745000000000,
  "expiresAt": 1776536000000
}

Nilai tampil sekali

apiKey dikembalikan hanya saat pembuatan. Simpan segera di secrets manager Anda. Panggilan selanjutnya hanya mengekspos keyPrefix.

Daftar API key Anda

GET /apikeys

Response

json
[
  {
    "keyPrefix": "bws_prod_00",
    "keyName": "CI server",
    "createdAt": 1745000000000,
    "lastUsedAt": 1745086400000,
    "expiresAt": 1776536000000
  }
]

Hapus API key

DELETE /apikeys/{keyPrefix}

Gunakan keyPrefix 12 karakter dari respons daftar — jangan pernah key lengkapnya.

Response

json
{ "success": true }

Quickstart

bash
# 1. Buat key di dashboard dan ekspor
export WALLA_API_KEY="bws_prod_..."

# 2. Daftarkan + verifikasi nomor WhatsApp Anda
curl -X POST https://api.wallawhats.com/phones \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber":"+6281234567890","displayName":"Mobile"}'
# -> phone menerima kode WhatsApp. Kirimkan:
curl -X POST https://api.wallawhats.com/phones/verify \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber":"+6281234567890","code":"123456"}'

# 3. Langganan akun X
curl -X POST https://api.wallawhats.com/subscriptions \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xUsername":"elonmusk","phoneNumber":"+6281234567890"}'

# 4. Lihat notifikasi berdatangan
curl https://api.wallawhats.com/notifications \
  -H "x-api-key: $WALLA_API_KEY"

Begitu saja — setelah akun X memposting, notifikasi tiba di phone dalam ~10 detik.

Dukungan

Pertanyaan API, laporan bug, atau permintaan peningkatan kuota: buka tiket dari tab Support di dashboard Anda, atau email hello@support.wallawhats.com.

WallaWhats Documentation