Get started
Oxtro API documentation
A REST API for sending WhatsApp messages and one-time codes from a number you linked by QR code, with signed webhooks for replies and delivery status.
The basics
- Base URL:
https://api.getoxtro.com. Every endpoint is under/v1. - Authentication: send your API key as
Authorization: Bearer <key>. TheX-API-Keyheader works too. - Format: JSON request and response bodies, with
snake_casefield names. - Phone numbers: international format, such as
+213555123456. Responses return E.164 with the leading plus. - Sending is asynchronous: a send returns
202 Acceptedwithstatus: "queued". Delivery progress comes from the message lookup or from webhooks.
Oxtro is not the official WhatsApp Business Platform and is not affiliated with WhatsApp or Meta. It sends through a linked-device session on your own number, so WhatsApp terms apply to that number. Read Keep your number safe before sending at volume.
Endpoints
| Endpoint | What it does | Scope |
|---|---|---|
POST /v1/messages | Send a text, media or template message | messages:send |
GET /v1/messages/{id} | Look up delivery status | messages:read |
POST /v1/otp/send | Generate and send a one-time code | otp:send |
POST /v1/otp/verify | Check the code a user typed | otp:verify |
GET /v1/connections | List your connected numbers and their IDs | messages:send or otp:send |
POST /v1/webhooks | Register a webhook endpoint | webhooks:manage |
GET /v1/webhooks | List webhook endpoints | webhooks:manage |
GET /v1/webhooks/{id} | Get one webhook endpoint | webhooks:manage |
DELETE /v1/webhooks/{id} | Remove a webhook endpoint | webhooks:manage |
The same reference is available as an OpenAPI 3.1 document at https://api.getoxtro.com/openapi.json.
Rate limit
Each API key can make 600 requests per minute. Responses carry X-RateLimit-Limit and X-RateLimit-Remaining. Past the limit the API answers 429 with the code RATE_LIMITED. Plan limits on monthly messages and OTP requests are separate and return QUOTA_EXCEEDED.