Edwyz WA compatibility API
A JSON REST API for contacts, session and template messages, broadcasts and webhooks. Its paths and field names follow the common v3 convention (snake_case JSON, page_number and page_size, custom_params), so HTTP steps in Zapier, Make or n8n are easy to point at it. Recipes built for an older, differently shaped API need their paths and field names changed.
Base URL
https://wa.edwyz.com/api/ext/v3Conventions
- Requests and responses are JSON with snake_case field names. Send a Content-Type: application/json header on writes; bodies are limited to 64 KB.
- Every success response contains "ok": true. Every failure contains "ok": false and an error object with a code and a message.
- List endpoints take page_number (starting at 1) and page_size (1 to 100) and answer with the items under a named key plus page_number, page_size, total and has_more.
- A contact can be addressed in a path by phone number (digits with country code, plus sign optional), by contact id, or as external_id:<your id>.
- Contacts without a phone number are returned with phone_number set to null. They can be read, tagged and updated, but not messaged.
- Sending is idempotent when you pass local_message_id: repeating it for the same recipient within 24 hours returns the first result and sends nothing.
First request
curl "https://wa.edwyz.com/api/ext/v3/contacts?page_size=5" \
-H "Authorization: Bearer wak_your_token"The API offers 30 endpoints. The reference is generated from the same table the server uses to register them. For code generators and API clients, download the OpenAPI 3.1 document; it also describes the webhook events.
Messaging rules still apply
Free-form messages need an open 24-hour customer service window; outside it send an approved template. You are responsible for having the recipient's consent before sending marketing templates, and people who opted out cannot be messaged. A contact is addressed by phone number, or by the WhatsApp user id (bsuid) when they have messaged you through a username and no phone number is known. A contact with neither cannot be messaged. A send is accepted when we have queued it; delivery and read receipts follow as message.status events.