REST API

Developer Quickstart

Stuur uw eerste SMS in minder dan 5 minuten. Geen SDK vereist — gewone HTTP aanroepen werken overal.

1

Authenticatie

Elke aanroep vereist een API-sleutel in de Authorization header. U vindt uw sleutel in het portal onder Instellingen → API-sleutels.

# Vervang met uw eigen API-sleutel
API_KEY="abc12345.uw-geheime-sleutel"

curl https://api.pulsesms.nl/v1/account/balance \
  -H "Authorization: Bearer $API_KEY"

Verwachte respons: {"balance":"40.0700","currency":"EUR"}

2

Eerste SMS versturen

Een SMS aanroep is één POST request. Het telefoonnummer in E.164 formaat, een afzender (max. 11 alfanumerieke tekens of 14 cijfers), en de berichttekst.

curl -X POST https://api.pulsesms.nl/v1/messages \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+31612345678",
    "from": "MijnBedrijf",
    "body": "Uw afspraak is bevestigd voor morgen om 14:00."
  }'

Respons (202 Accepted):

{
  "id": "msg_01j8x...",
  "status": "accepted",
  "to": "+31612345678",
  "segments": 1,
  "cost": "0.0900"
}

De API retourneert direct 202. Bezorging verloopt asynchroon — gebruik een DLR webhook (stap 4) voor de definitieve status.

3

Batch versturen

Stuur tot 1.000 berichten in één aanroep. Elk bericht kan een eigen ontvanger en tekst hebben.

curl -X POST https://api.pulsesms.nl/v1/messages/batch \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "to": "+31612345678",
        "from": "MijnBedrijf",
        "body": "Herinnering: afspraak morgen om 10:00."
      },
      {
        "to": "+31698765432",
        "from": "MijnBedrijf",
        "body": "Herinnering: afspraak morgen om 11:30."
      }
    ]
  }'
4

Status ophalen

Gebruik het bericht-ID uit de stuur-respons om de huidige status op te halen.

curl https://api.pulsesms.nl/v1/messages/msg_01j8x... \
  -H "Authorization: Bearer $API_KEY"

Mogelijke statussen:

acceptedOntvangen door API
queuedIn wachtrij voor provider
submittedDoorgestuurd naar operator
deliveredBezorgd bij ontvanger
failedBezorging mislukt
expiredVerlopen (72u timeout)
5

DLR webhook ontvangen

Registreer een webhook endpoint om real-time bezorgbevestigingen te ontvangen. PulseSMS ondertekent elk verzoek met HMAC-SHA256 zodat u de authenticiteit kunt verifiëren.

1. Webhook registreren

curl -X POST https://api.pulsesms.nl/v1/webhooks \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://uwdomein.nl/webhooks/sms",
    "events": ["message.delivered", "message.failed"],
    "secret": "uw-webhook-geheim"
  }'

2. Webhook verwerken (Node.js voorbeeld)

import crypto from "crypto";

export async function POST(request) {
  const body = await request.text();
  const sig = request.headers.get("x-pulsesms-signature");

  // Verifieer handtekening
  const expected = crypto
    .createHmac("sha256", process.env.WEBHOOK_SECRET)
    .update(body)
    .digest("hex");

  if (sig !== `sha256=${expected}`) {
    return new Response("Unauthorized", { status: 401 });
  }

  const event = JSON.parse(body);
  // event.type: "message.delivered" | "message.failed"
  // event.message_id, event.to, event.status, event.timestamp

  console.log(`SMS ${event.message_id} → ${event.status}`);
  return new Response("OK");
}

3. Inkomende SMS ontvangen (optioneel)

# Registreer webhook voor inkomende berichten
curl -X POST https://api.pulsesms.nl/v1/webhooks \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://uwdomein.nl/webhooks/inbound",
    "events": ["message.inbound"]
  }'

# Inbound event payload:
# {
#   "type": "message.inbound",
#   "from": "+31612345678",
#   "to": "MijnBedrijf",
#   "body": "STOP",
#   "timestamp": "2026-04-15T10:00:00Z"
# }

Klaar voor productie

Dat is alles. Geen SDK installeren, geen complexe configuratie. Gewone HTTP aanroepen, standaard JSON, Nederlandse telefoonnummers in E.164 formaat.

ACM telecomlicentie

Wij zijn geregistreerd bij de ACM als telecomaanbieder. Verplicht voor A2P SMS in Nederland.

AVG-compliant

Infrastructuur en data in Nederland en de EU. Geen data buiten Europa.

Prepaid, geen contract

Koop tegoed wanneer u het nodig heeft. Geen minimumafname, geen opzegtermijn.