Developers
API documentation
Authenticate with a workspace API key and send messages or create orders over /api/v1.
Authentication
- Header:
Authorization: Bearer <api_key> - Keys start with
vs_live_and are shown once when created - Create keys in the dashboard under Developers
Send a text message
Scope required: messages:send
POST /api/v1/messages
{
"to": "+233XXXXXXXXX",
"type": "text",
"text": { "body": "Hello from VortSender" }
}Send a template
POST /api/v1/messages
{
"to": "+233XXXXXXXXX",
"type": "template",
"template": {
"name": "hello_world",
"language": "en",
"bodyParams": ["Ada"]
}
}Send reply buttons
POST /api/v1/messages
{
"to": "+233XXXXXXXXX",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Choose an option" },
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "yes", "title": "Yes" } },
{ "type": "reply", "reply": { "id": "no", "title": "No" } }
]
}
}
}Orders
Scopes: orders:read / orders:write
GET /api/v1/orders
POST /api/v1/orders
{
"description": "Custom order",
"total": 5000,
"currency": "GHS",
"items": [{ "name": "Service", "quantity": 1, "unitPrice": 5000 }]
}Amounts use minor units (e.g. 5000 = 50.00 GHS).
Optional fields
connectionId— target a specific WhatsApp number (defaults to your first connected number)Idempotency-Keyheader — safe retries for the same send
Webhooks
Configure endpoints under Developers. Events are sent as signed JSON. Verify with X-VortSender-Signature: sha256=… using the signing secret shown once at creation.
Errors
{
"success": false,
"error": { "code": "UNAUTHORIZED", "message": "Invalid API key" },
"requestId": "req_…"
}