Skip to content

API-referentie

Met de REST API van WallaWhats beheert u telefoons, X-accountabonnementen en meldingsgeschiedenis programmatisch — precies wat u anders vanuit het dashboard zou doen.

  • Basis-URL: https://api.wallawhats.com
  • Content-Type: application/json
  • Authenticatie: API-sleutel (header)
  • Versiebeheer: de API is stabiel. Breaking changes worden 30 dagen van tevoren per e-mail aan elk account aangekondigd.

Authenticatie

Elke aanvraag moet een API-sleutel bevatten in de header x-api-key:

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

Sleutels worden aangemaakt in het dashboard onder Settings → API Keys of via POST /apikeys. Een sleutelprefix begint met bws_ en is 36 tekens lang. Sleutels worden slechts één keer, bij aanmaak getoond — verliest u er een, verwijder hem en maak een nieuwe aan.

Scope en vervaltijd

  • Een sleutel authenticeert als de gebruiker die hem heeft aangemaakt. Hij heeft dezelfde rechten als die gebruiker en telt mee voor dezelfde abonnementsquota.
  • Sleutels zijn 365 dagen geldig. Rouleer door een nieuwe sleutel aan te maken, over te schakelen en de oude te verwijderen.
  • Ontbrekende, misvormde of ingetrokken sleutels leveren 401 Unauthorized op.

Sleutellimieten per abonnement

AbonnementToegestane sleutels
Free1
Pro1
Pro+2
Business5
Enterprise20

Een poging om meer sleutels aan te maken dan uw abonnement toestaat levert 400 op met "error": "api key limit reached".

Fouten

Fouten worden als JSON teruggegeven met een veld error en een HTTP-statuscode:

json
{ "error": "phoneNumber is required" }
StatusBetekenis
400Ongeldige parameters, quotum overschreden of schending van een businessregel
401Ontbrekende of ongeldige API-sleutel
402Onvoldoende credits om de handeling te voltooien
404Resource niet gevonden
500Serverfout — probeer het opnieuw met exponential backoff

Rate limits

  • Standaard: 20 aanvragen/seconde per API-sleutel, burst tot 40.
  • Lijstendpoints leveren tot 50 items per pagina; gebruik de lastKey-cursor om te pagineren.
  • WAF-regels kunnen 403 teruggeven bij misbruikpatronen. Neem contact op met support als u onverwacht wordt geknepen.

Gebruiker

Uw profiel ophalen

GET /user/profile

Retourneert het profiel van de geauthenticeerde gebruiker.

Antwoord

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

Voorbeeld

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

Telefoons

Een telefoon is een geverifieerd WhatsApp-nummer dat meldingen kan ontvangen. U moet een telefoon verifiëren voordat u er een X-account aan koppelt.

Een telefoon registreren

POST /phones

Genereert een 6-cijferige code en stuurt die via WhatsApp naar het nummer. De telefoon wordt aangemaakt in de status pending_verification.

Aanvraag

VeldTypeVereistOpmerkingen
phoneNumberstringjaE.164-formaat, bijv. +34612345678
displayNamestringneeHerkenbaar label dat in het dashboard wordt getoond

Antwoord

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

Fouten

  • 400 "invalid phone number format" — geen E.164
  • 400 "phone number limit reached" — overschrijdt het abonnementslimiet (Free/Pro/Pro+ 1, Business 3, Enterprise 10)

Voorbeeld

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

Een telefoon verifiëren

POST /phones/verify

Bevestigt een telefoon door de 6-cijferige code in te sturen. Codes vervallen na 15 minuten.

Aanvraag

VeldTypeVereist
phoneNumberstring (E.164)ja
codestring (6 cijfers)ja

Antwoord

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

Fouten

  • 404 "phone not found"
  • 400 "invalid code" — verkeerde code
  • 400 "code expired" — ouder dan 15 minuten
  • 400 "phone already verified"

Uw telefoons opvragen

GET /phones

Antwoord

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

Een telefoon verwijderen

DELETE /phones/{phoneNumber}

Verwijdert de telefoon en deactiveert alle abonnementen die erop waren gericht. Codeer de + als %2B in de URL.

Antwoord

json
{ "success": true }

Voorbeeld

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

Abonnementen

Een abonnement koppelt een X-account dat u wilt volgen aan een van uw geverifieerde telefoons. Zodra het X-account iets plaatst, stuurt WallaWhats een WhatsApp-melding naar die telefoon.

Een abonnement aanmaken

POST /subscriptions

Aanvraag

VeldTypeVereistOpmerkingen
xUsernamestringja1–15 tekens, alfanumeriek + underscore. Een voorvoegsel @ wordt geaccepteerd en verwijderd.
phoneNumberstring (E.164)jaMoet een van uw geverifieerde telefoons zijn.

Antwoord

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

Fouten

  • 400 "invalid X username format" — regex mislukt
  • 400 "phone not found" / "phone not verified"
  • 400 "subscription limit reached" — zie abonnemententabel hieronder
  • 404 "X account not found" — gebruikersnaam is niet oplosbaar op X

Abonnementslimieten

AbonnementAbonnementen
Free1
Pro1
Pro+2
Business5
Enterprise50

Uw abonnementen opvragen

GET /subscriptions

Antwoord

json
{
  "subscriptions": [ /* zelfde vorm als antwoord van POST /subscriptions */ ],
  "count": 3
}

Een abonnement verwijderen

DELETE /subscriptions/{xUsername}

Hoofdletter-ongevoelige match op xUsername. Verwijder de @ vóór verzending.

Antwoord

json
{ "success": true }

Meldingen

Elke melding die WallaWhats aflevert wordt hier geregistreerd, samen met de WhatsApp-leveringsstatus.

Meldingen opvragen

GET /notifications

Queryparameters

ParameterTypeBeschrijving
fromnumber (ms epoch)Filter op meldingen die op of na dit tijdstip zijn aangemaakt
tonumber (ms epoch)Filter op meldingen die op of vóór dit tijdstip zijn aangemaakt
lastKeystringPaginatiecursor uit de vorige respons

Antwoord

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

Mogelijke waarden voor status: queued, sent, delivered, read, failed.

De paginagrootte is 50. Ontbreekt lastKey, dan bent u aan het einde.


API-sleutels

Beheer de sleutels die uw applicaties gebruiken om deze API aan te roepen.

Een API-sleutel aanmaken

POST /apikeys

Aanvraag

VeldTypeVereist
namestringnee, standaardwaarde "Default"

Antwoord (201 Created)

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

Eenmalig zichtbare waarde

apiKey wordt alleen bij aanmaak teruggegeven. Sla hem direct op in uw secrets manager. Latere calls tonen alleen de keyPrefix.

Uw API-sleutels opvragen

GET /apikeys

Antwoord

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

Een API-sleutel verwijderen

DELETE /apikeys/{keyPrefix}

Gebruik de 12 tekens lange keyPrefix uit de lijstrespons — nooit de volledige sleutel.

Antwoord

json
{ "success": true }

Snelstart

bash
# 1. Maak een sleutel aan in het dashboard en exporteer hem
export WALLA_API_KEY="bws_prod_..."

# 2. Registreer + verifieer uw WhatsApp-nummer
curl -X POST https://api.wallawhats.com/phones \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber":"+34612345678","displayName":"Mobile"}'
# -> de telefoon ontvangt een WhatsApp-code. Stuur die in:
curl -X POST https://api.wallawhats.com/phones/verify \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber":"+34612345678","code":"123456"}'

# 3. Abonneer u op een X-account
curl -X POST https://api.wallawhats.com/subscriptions \
  -H "x-api-key: $WALLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xUsername":"elonmusk","phoneNumber":"+34612345678"}'

# 4. Bekijk de binnenkomende meldingen
curl https://api.wallawhats.com/notifications \
  -H "x-api-key: $WALLA_API_KEY"

Dat is alles — zodra het X-account iets plaatst, komt de melding binnen ongeveer 10 seconden op de telefoon aan.

Support

API-vragen, bugmeldingen of verzoeken om quotaverhoging: open een ticket via het tabblad Support in uw dashboard, of e-mail hello@support.wallawhats.com.

WallaWhats Documentation