Built for developers

Send SMS from your own code in one request

A REST API over the exact same sending, billing, and delivery-tracking engine the dashboard uses, so what you build against is what your team sees when they log in.

curl
curl -X POST https://bulletsms.com/api/v1/sms/send \
  -H "Authorization: Bearer $BULLETSMS_TOKEN" \
  -H "Idempotency-Key: 3f29-a001-..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": ["9801234567"],
    "message": "Your order has shipped.",
    "senderId": "BulletSMS"
  }'
Built in, not bolted on

The parts every production integration ends up needing

Idempotency, rate limits, signed webhooks, and token scoping, available from your first request, not an enterprise add-on.

Idempotency-Key header

Retry a request with the same key and body as many times as you need; it's applied exactly once, so network retries never double-send.

Per-token rate limits

Every API token has its own rate limit, independent of the account's dashboard usage, so a runaway script can't starve the rest of your integration.

HMAC-signed webhooks

Subscribe to delivery events and verify each payload with an HMAC signature, no polling a status endpoint to know what happened.

Scoped tokens

Restrict a token to specific domains, IP addresses, and sender IDs, so a leaked credential can't be replayed from somewhere else or under a different identity.

Endpoints

A small, predictable surface

Everything you need to send, personalize, schedule, and track, nothing you don't.

POST
/api/v1/sms/send

Send a message to one or more recipients.

POST
/api/v1/sms/send-dynamic

Send a different, personalized message to each recipient in one request.

GET
/api/v1/sms/reports

Query delivery status per message, filterable by date and operator.

POST
/api/v1/campaigns

Create a scheduled or immediate campaign against a contact group.

DELETE
/api/v1/campaigns/:id

Cancel a scheduled campaign before it fires.

Every send response reports the exact segment count billed, matching the same math on the pricing page.

Ready to integrate?

Create an account and generate an API token from your dashboard in minutes.