Developer Quickstart
Stuur uw eerste SMS in minder dan 5 minuten. Geen SDK vereist — gewone HTTP aanroepen werken overal.
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"}
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.
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."
}
]
}'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 APIqueuedIn wachtrij voor providersubmittedDoorgestuurd naar operatordeliveredBezorgd bij ontvangerfailedBezorging misluktexpiredVerlopen (72u timeout)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.