VortSenderVortSender

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-Key header — 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_…"
}