The Kanal API lets any e-commerce back office feed your WhatsApp automations, without a Shopify connection. If your store is custom-built, headless, or on a platform that Kanal does not integrate natively, this is the way to go.
The complete and always up-to-date technical reference is on developers.getkanal.com.
Kanal exposes two sets of endpoints, with different uses and prerequisites.
It is used to push your store data to Kanal: orders, abandoned checkouts, customers and shipments. This data then triggers your automations. It does not require an active subscription.
For a non-Shopify store, start by creating a custom store: it gives you your store_id and an ingestion key. See Connect a non-Shopify store (custom store).
It is used to send messages and manage your WhatsApp contacts: free-form messages, templates, triggering automations, renaming a contact and reading your account information. It requires an active subscription. Without one, every call returns a 403 error.
https://api.getkanal.comEvery path starts with /api/v1/, for example https://api.getkanal.com/api/v1/templates.
Every request carries the Authorization: Bearer <your API key> header, plus Content-Type: application/json for requests with a JSON body. See API authentication and keys.
Commerce endpoints are attached to a store through a numeric store_id:
/api/v1/stores/{store_id}/orders
/api/v1/stores/{store_id}/checkouts
/api/v1/stores/{store_id}/customers
/api/v1/stores/{store_id}/shipmentsMessaging endpoints do not take a store_id: the API key, attached to a WhatsApp number, determines the number used for sending.
Paths relative to /api/v1/stores/{store_id}.
Method | Path | Purpose |
|---|---|---|
|
| Create or update an order |
|
| Update an order's status |
|
| Create or update a checkout |
|
| Update a checkout's status |
|
| Create or update a customer |
|
| Delete a customer (GDPR) |
|
| Create or update a shipment |
Details: Commerce API: send your store data to Kanal.
Method | Path | Purpose |
|---|---|---|
|
| Send a free-form message |
|
| Send a template |
|
| List your approved templates |
|
| Trigger an automation |
|
| Rename a contact ( |
|
| Account information |
Details: Messaging API: send messages and trigger automations and Send a WhatsApp template via the API.
To receive incoming messages on your server, see Receive WhatsApp messages via Kanal webhooks.
POST /api/v1/templates: 60 requests per minute per API key. It is the only endpoint subject to this limit.
Commerce API: 500 requests per minute per store, shared across all the store's endpoints.
Other Messaging endpoints: only the global API limit applies, which is 3,000 requests per minute per IP address.
If you exceed a limit, the API returns a 429 error. Wait before replaying the request, ideally with exponential backoff.
Creating an order, which will trigger your post-purchase automations:
curl -X POST https://api.getkanal.com/api/v1/stores/123/orders \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "ORDER-1001",
"placed_at": "2026-05-18T10:00:00Z",
"total_price": 49.90,
"currency": "EUR",
"customer": { "phone": "+33612345678", "first_name": "Marie" }
}'The Commerce API is write-only. There is no read or pagination endpoint for orders, checkouts, customers or shipments: you push data, you do not read it back. Your system remains the source of truth. To correct a record, send it again with the same external_id.
An order sent without a customer phone number is saved, but it does not trigger any automation.