Delivery & Status
Track the real-time delivery status of WhatsApp messages — from sent through delivered to read — with detailed error diagnostics.
Real-time Tracking
Track message delivery in real time — from sent to delivered to read
Read Receipts
Know exactly when your message was read by the recipient
Error Diagnostics
Detailed error codes and resolution tips for every failure scenario
Webhook Integration
Receive automatic status callbacks instead of polling the API
Authentication Required
Use Basic Auth with your dashboard Base64 token in every request.
Avg Delivery
<3s
to delivered status
Delivery Rate
98.5%
global average
Read Rate
72%
of delivered msgs
Status Events
6
distinct states
GET
/v1/whatsapp/status/{messageId}
Read
Stable
Delivery Statuses
sent
Message dispatched to WhatsApp servers
delivered
Delivered to recipient's device
read
Opened and read by the recipient
failed
Delivery failed — check error code
pending
Queued, awaiting dispatch
deleted
Message deleted by recipient before reading
Response
JSON
{"success": true,"data": {"messageId": "exa_wa_123456789_abc123def","wamid": "wamid.HBgLMjMzNTU1MzM5NTIVAgARGBI2QzE5QUI3RjZENkI2QTU3NjQA","status": "delivered","to": "233244000000","type": "text","sentAt": "2024-01-15T10:30:00Z","deliveredAt": "2024-01-15T10:30:03Z","readAt": null,"cost": 1}}
Error Codes
| Code | Reason | Resolution |
|---|---|---|
| WA001 | Invalid phone number | Check E.164 format and try again |
| WA002 | User not on WhatsApp | Verify the number via the numbers API |
| WA003 | Window closed | Send a pre-approved template to re-engage |
| WA004 | Media download failed | Ensure media URL is publicly accessible |
| WA005 | Rate limit hit | Implement exponential backoff |
| WA006 | Account blocked | Contact support to review account status |
Try It Yourself
GET
https://api.sendexa.co/v1/whatsapp/status/exa_wa_123456789_abc123defCode Examples
Bash
curl -X GET 'https://api.sendexa.co/v1/whatsapp/status/exa_wa_123456789_abc123def' \-H 'Authorization: Basic YOUR_DASHBOARD_BASE64_TOKEN'
Rate Limits
Status lookup burst limit
200 requests per second
Sustained status polling limit
5000 requests per minute
HTTP Status Codes
| Code | Status | Description |
|---|---|---|
| 200 | OK | Status retrieved successfully |
| 401 | Unauthorized | Invalid or missing credentials |
| 404 | Not Found | Message ID not found |
| 429 | Too Many Requests | Rate limit exceeded |
Best Practices
- Use webhooks instead of polling for real-time status updates
- Store
wamidalongside yourmessageIdfor Meta-side debugging - Handle the
WA003(window closed) error gracefully by switching to template messages - Do not poll faster than once every 5 seconds per message