Pilot Status API Overview
Pilot Status is a platform for sending WhatsApp messages (transactional and marketing/bulk) with template control, versioning, and operational visibility via dashboard, API, and webhooks.Base URL
Authentication
Every request requires an API key sent in thex-api-key header (or x-api-key-id with the key ID). Keys use the ps_ prefix.
Key scopes
| Scope | Bound to | Can call |
|---|---|---|
| Number-scoped (default) | One WhatsApp number | All action/data endpoints for that number: POST /v1/messages/send, message status, cancel, groups, newsletters, templates, analytics, media |
| Tenant-scoped (singleton) | The tenant (no number) | Only number lifecycle management: /v1/numbers/* and /v1/remote-pairing/* |
Core concepts
- Template: a versioned message model referenced by
templateIdon API sends. For Meta numbers, templates are submitted to Meta for approval; for non-official WhatsApp API (Evolution) numbers, they are created locally without an approval step. - Message: a send attempt created by
POST /v1/messages/send. - Webhooks: delivery events (sent/delivered/read/failed) and inbound messages (reply/received/group).
- Read receipts:
READstatus,readAt, and themessage.readwebhook only occur when the recipient contact has WhatsApp read receipts enabled.
Typical integration flow
Send messages
Send messages with
POST /v1/messages/send.Track delivery
Query status with
GET /v1/messages/{messageId} and/or consume events via webhooks.Common HTTP errors
| Status | Meaning |
|---|---|
400 | Invalid payload (e.g., phone not in E.164, missing required fields) |
401 | Missing or invalid x-api-key / x-api-key-id header |
402 | Paid subscription required (e.g., SUBSCRIPTION_REQUIRED_FOR_MEDIA) |
403 | Valid key, but operation blocked (e.g., wrong key scope) |
404 | Resource not found within the key’s scope |
429 | Rate limit exceeded |