Build against the current EZWhatsApp Platform API.
This is the public implementation reference for customers, agencies, and developers using EZWhatsApp. It covers the line-token Channel API, logged-in Workspace API, webhook setup, inbox reads, campaigns, contacts, Kanban status updates, and the operating boundaries that must not be guessed.
Supported as SSE hints only. Refetch DB APIs for truth.
Target model
Target
Fields
Allowed on
Rules
Direct phone recipient
to on Channel API, recipientPhoneNumber or phoneNumber on Workspace API
Channel text, Channel URL media, Workspace send.
Use an explicit phone number. Do not derive a phone number from provider-only ids.
WhatsApp group
groupId, group_id, groupJid, or group_jid
Channel text and Channel URL media only.
Must be an exact WhatsApp group JID ending in @g.us. Not a Workspace send target.
Existing Platform conversation
conversationId or conversation_id
Channel text and Workspace send.
Use this for replies to an existing Platform conversation. Channel URL media does not accept conversationId.
Check channel health
Use this before sending and before diagnosing automation failures. wakeup=false makes the check read-only; wakeup=true may queue a wakeup when the line needs one.
curl -X GET 'https://app.ezw.solutions/api/v1/health?wakeup=false&channel_type=web' \
-H 'Authorization: Bearer {lineApiToken}'
Direct recipient phone number. Use exactly one of to or groupId.
groupId, group_id, groupJid, or group_jid
Conditional
Exact WhatsApp group JID ending @g.us.
type or mediaKind
Yes
One of image, video, audio, or document.
media.url, mediaUrl, or url
Yes
External HTTP/HTTPS media URL. Localhost, loopback, and private IP targets are rejected.
media.mime_type, mimeType, or contentType
Yes
MIME type such as image/jpeg or application/pdf.
media.filename or fileName
Required for documents
Preserved as the document filename sent through the provider.
caption or body
No
Caption for image, video, or document media. Audio captions are ignored by the provider.
Workspace send
Workspace sends act as a logged-in user and enforce organization scope, line visibility, line sendability, and membership permissions. Idempotency-Key is required.
Reply to an existing conversation
curl -X POST 'https://app.ezw.solutions/api/lines/{lineId}/send' \
-H 'Authorization: Bearer {idToken}' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: workspace-send-001' \
-d '{
"conversationId": "{conversationId}",
"bodyText": "Thanks, I am checking this now."
}'
Send to a direct phone number
curl -X POST 'https://app.ezw.solutions/api/lines/{lineId}/send' \
-H 'Authorization: Bearer {idToken}' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: workspace-direct-001' \
-d '{
"recipientPhoneNumber": "+972501234567",
"bodyText": "Thanks, I am checking this now."
}'
Use exactly one target: conversationId or recipientPhoneNumber. phoneNumber is accepted as an alias.
Send content must be one of bodyText, one image in media, or forwardedFromMessageId.
Forwarded sends preserve the selected message content and cannot include replacement text, media, or CTA content.
Workspace multipart upload accepts one image file up to 25 MB. Generic documents, PDFs, video, audio, and arbitrary files are not supported on this route.
There is no Workspace API group send route.
Webhooks
Webhooks let customer or agency systems receive durable event deliveries for the configured line. Configure by line token or workspace token.
Deliveries include X-EZW-Webhook-Event, X-EZW-Line-Id, X-EZW-Webhook-Id, and X-EZW-Delivery-Id headers. Return any 2xx status to accept a delivery. Store delivery ids to make receivers idempotent.
Use workspace tokens for inbox reads. Routes are organization-scoped and enforce line visibility. SSE events are hints only; clients must refetch durable DB-backed APIs.
Contacts are customer organization data. Owners and admins can list or import contacts. Imports remain auditable through source filename, batch, rows, invalid rows, and summary counts.
Accepted row aliases include phone for phoneNumber, name for displayName, external_id for externalId, and semicolon/comma-separated string tags. Imports must contain 1 to 5000 rows.
Campaigns
Campaigns are a scoped customer-admin workflow for owners and admins. They are separate from inbox replies and direct-send loops. Do not use this surface for scraped, purchased, unrelated, or cold outbound recipient lists.
Required draft fields: name, lineId, bodyText, and recipientsCsv.
Optional fields: sourceFilename, minDelaySeconds, maxDelaySeconds, hourlyCap, and image file field image.
Campaign images must be PNG, JPEG, WebP, or GIF and 25 MB or smaller.
maxDelaySeconds must be greater than or equal to minDelaySeconds. hourlyCap must be positive.
A campaign can launch only from draft status and only when valid recipients exist. Terminal campaigns cannot be cancelled.
Kanban and conversation status
Kanban fields and conversation status changes are durable workspace state. Use expectedVersion when moving conversations so stale clients do not overwrite newer state.