Build WhatsApp into your application.
Connect your application to WhatsApp Business API through a developer-focused platform for messaging, webhooks, events, and operational visibility.
API access is included with WA Console plans.
POST /messages HTTP/1.1Host: wa.draskenapis.comContent-Type: application/jsonx-access-key: ak_…x-secret-key: sk_… { "phoneNumberId": "123456789012345", "to": "919876543210", "type": "template", "templateName": "order_update", "templateLanguage": "en_US"}{ "statusCode": 200, "message": "Success", "data": { "id": 1842, "metaMessageId": "wamid.HBgLOTE5…", "phoneNumberId": "123456789012345", "to": "919876543210", "type": "template", "status": "sent", "templateName": "order_update", "createdAt": "2026-08-17T12:04:22.000Z" }}One API connection between your application and WhatsApp.
Your application talks to WA Console over the API. WA Console owns the WhatsApp infrastructure layer — sending through Meta, receiving every lifecycle event back, and keeping it queryable.
What an API key reaches
- POST/messages
- GET/messages
- GET/messages/:id
- GET/messages/analytics
Other routes — including the webhook event list — authenticate with your console session rather than an API key.
Send WhatsApp messages from your application.
Trigger WhatsApp messages from the systems your customers already use. One endpoint covers every message type the platform supports.
POST /messages HTTP/1.1Host: wa.draskenapis.comContent-Type: application/jsonx-access-key: ak_…x-secret-key: sk_… { "phoneNumberId": "123456789012345", "to": "919876543210", "type": "template", "templateName": "order_update", "templateLanguage": "en_US"}{ "statusCode": 200, "message": "Success", "data": { "id": 1842, "metaMessageId": "wamid.HBgLOTE5…", "phoneNumberId": "123456789012345", "to": "919876543210", "type": "template", "status": "sent", "templateName": "order_update", "createdAt": "2026-08-17T12:04:22.000Z" }}- Request received
- Sent to WhatsApp
- Accepted
- Message stored
Supported message types
Secure access to your WhatsApp infrastructure.
Requests carry a key pair issued by WA Console. Each key is scoped to a single WhatsApp Business Account, so a key can only ever act on the account it was created for.
Required headers
x-access-keyak_…Public half of the key pair
x-secret-keysk_…Secret half — server-side only
{ "statusCode": 401, "message": "API key headers missing"}Every WhatsApp event, verified and kept.
Meta delivers WhatsApp lifecycle events to WA Console, which verifies the signature, acknowledges immediately and processes asynchronously. Your application reads those events back per WABA.
GET /webhooks/events, which authenticates with your console session.{ "id": 90412, "eventType": "messages", "kind": "status_update", "title": "Message delivered", "status": "delivered", "recipient": "919876543210", "messageId": "wamid.HBgLOTE5…", "wabaId": "123456789012345", "processed": true, "createdAt": "2026-08-17T12:04:23.000Z"}GET /webhooks/events?wabaId=…&page=1&limit=20Verification
Incoming payloads must carry a valid X-Hub-Signature-256 HMAC. Anything without one is rejected, so what lands in your event list is what Meta actually sent.
Build around events, not guesswork.
Every stored event is classified into one of four kinds, with the delivery status, recipient and Meta message id attached — so your application can match an event back to the message it sent.
inbound_messageA customer sent you a message
status_updatesent · delivered · read · failed
template_statusMeta's decision on a template
account_updateAccount-level changes from Meta
When something fails, know why.
Every response uses the same envelope, so a failure is shaped like a success — a status code, a message, and an errors array where one applies. Validation failures name the exact field.
{ "statusCode": 422, "message": "Field Validation Failed", "errors": [ { "field": "to", "message": "to should not be empty" } ]}{ "statusCode": 401, "message": "API key headers missing"}{ "code": 131047, "title": "Re-engagement message", "detail": "More than 24 hours since the customer last replied."}From connection to production.
The path from an empty account to a message your customer receives, and the events that follow it.
- 01
Connect your WABA
Link the WhatsApp Business Account in the console.
- 02
Sync your phone number
Register the number you will send from.
- 03
Sync templates
Pull your approved templates from Meta.
- 04
Create an API key
Keys are issued per WABA and shown once.
- 05
Send your first message
POST /messages with both key headers.
- 06
Read the events
Poll GET /webhooks/events for the lifecycle.
- 07
Monitor in the console
Delivery, failures and analytics in one view.
Start with the tools you already use.
Send your first message over plain HTTP — no SDK required.
curl -X POST https://wa.draskenapis.com/messages \ -H "Content-Type: application/json" \ -H "x-access-key: $WA_ACCESS_KEY" \ -H "x-secret-key: $WA_SECRET_KEY" \ -d '{ "phoneNumberId": "123456789012345", "to": "919876543210", "type": "template", "templateName": "order_update", "templateLanguage": "en_US" }'Need the complete API reference?
WA Console publishes an OpenAPI reference covering every endpoint, its parameters, its responses and its authentication scheme.
It is served alongside the API at /swagger/docs on deployments that enable it. Ask us for the reference URL for your environment.
API reference
Endpoints, payloads and responses.
Webhooks
How events arrive and how to read them.
Event kinds
What each classification means.
Developer FAQ
How do I authenticate API requests?
+
Send both key headers on every request: x-access-key and x-secret-key. Keys are created in the console, issued as a pair (ak_… and sk_…), and each key is scoped to a single WhatsApp Business Account — the WABA it was created for is the account it can act on. A key without a WABA is rejected.
How do I send a WhatsApp message?
+
POST /messages with phoneNumberId, the recipient in E.164 digits, and a type. For a template message add templateName and templateLanguage. The response returns the stored message including metaMessageId, which is the wamid you can match later events against.
How do webhooks work?
+
Meta delivers events to WA Console, not to you: WA Console exposes a receiver that verifies Meta’s X-Hub-Signature-256 HMAC, acknowledges immediately and processes asynchronously. Your application reads those stored events from GET /webhooks/events for a WABA. WA Console does not currently forward events onward to your own server.
Which endpoints can an API key call?
+
The messaging routes: POST /messages, GET /messages, GET /messages/:id and GET /messages/analytics. Other routes, including the webhook events list, authenticate with the console session instead.
What happens when a request fails?
+
Every response uses the same envelope, so failures are shaped like successes: a statusCode, a message, and an errors array where relevant. Validation failures return 422 with per-field messages. Missing or invalid key headers return 401. When Meta rejects a send after it has been accepted, Meta’s own code, title and detail are recorded against the message.
Do Meta messaging charges come through the API?
+
No. Your WA Console subscription is the platform fee. Meta bills its WhatsApp messaging charges separately, based on your usage and Meta’s applicable pricing.
Start building with WA Console.
Connect your application to WhatsApp Business API and build on top of a managed WhatsApp infrastructure layer.
Starting at ₹499/WABA/month