REST API

WaDesk ships a public, versioned REST API at /api/v1 so your own apps, CRMs, and automations can drive a workspace programmatically — send messages, run broadcasts and campaigns, schedule sends, and manage contacts, deals, flows, templates, and devices.

Plan feature. API access is a paid feature. The API key console appears under More → Developers, and a live, always-up-to-date reference is served at /developers/docs.

Authentication

Every request is authenticated with a workspace API key. Generate one under More → Developers (the full key is shown only once at creation — copy it then; only its hash is stored, and it can be revoked at any time).

Send it as a Bearer token:

Authorization: Bearer wsk_your_api_key_here

… or in an X-Api-Key header. Keys are scoped to a single workspace, so a key only ever sees and acts on that workspace's data.

How it works under the hood

The API is a thin, safe layer over the same code the dashboard uses. Each endpoint validates your request and then routes it through the identical controllers and sending pipeline as the UI — so an API send behaves exactly like a send from the dashboard, including engine routing, pacing, retry, and per-recipient tracking. There is no separate, divergent send path to go out of sync.

What you can do

AreaEndpoints
MessagesPOST /messages (send text/location), GET /messages, GET /messages/{id} (delivery status)
BroadcastsGET/POST /broadcasts, GET /broadcasts/{id}, /recipients, /stop
CampaignsGET/POST /campaigns, /statistics, GET /campaigns/{id}, /stop, delete
ScheduledPOST /scheduled
Contacts & GroupsGET/POST /contacts, GET/PUT/DELETE /contacts/{id}, GET/POST /contact-groups
DealsGET/POST /deals, GET/PUT/DELETE /deals/{id} (advance stage by updating stage_id)
FlowsGET /flows, GET /flows/{id}, POST /flows/{id}/enroll, /subscribers
Templates & Auto-repliesGET/POST /templates, GET/POST /auto-replies (and per-id read/update/delete)
Devices & AccountGET /devices, GET /devices/{id}, GET /me
WebhooksRegister event webhooks to receive inbound & delivery events — see Webhooks

Example: send a message

curl -X POST https://your-domain.com/api/v1/messages \
  -H "Authorization: Bearer wsk_your_api_key_here" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"to":"15551234567","type":"text","text":"Hello from the API"}'

Responses are JSON in a { data, meta } envelope; validation errors return 422 with a clear message, and a missing/expired key returns 401.

Live reference

The complete, interactive endpoint reference — with every request body and response — is generated from the code and served in your app at /developers/docs (OpenAPI). Because it is generated, it always matches the running version.

WaDesk Documentation