Requires messaging:read. Use a channel id as channelConfigId when sending.
The ZingaConnect messaging endpoints — send WhatsApp messages and manage delivery webhooks, using ZingaConnect as your messaging provider. Authenticate with a zk_ key carrying the messaging:* scopes (separate from data scopes). CRM resources (contacts, lists, campaigns, templates, teams, agents) use the data:read / data:write:* scopes.
The messaging channels (WhatsApp numbers, etc.) you can send from.
Requires messaging:read. Use a channel id as channelConfigId when sending.
Send WhatsApp messages and read their delivery status.
Requires messaging:send. Queued for delivery (202). type: text|template|media|interactive.
Requires messaging:read.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Message id |
Receive delivery + inbound events. Requires `messaging:webhooks`.
Events are signed X-Zinga-Signature: sha256=… when a secret is set.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Webhook id |
The shared contact spine (identity + per-channel marketing consent).
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Static or dynamic (filter-based) contact lists used as campaign audiences.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Campaign definitions (drip / calendar / broadcast). Build the shell here, wire steps, then activate (see Campaign steps & lifecycle). `status` is not writable here — use the activate/pause actions.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Wire the drip sequence (which template fires at which delay) and activate/pause the campaign. Steps are children of a campaign.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
channel = email|sms|whatsapp; give messageTemplateId (email/sms) or waTemplateId (whatsapp) + delayAmount / delayUnit.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
step_id | path | string | yes | Step id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
step_id | path | string | yes | Step id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
campaign_id | path | string | yes | Campaign id |
Reusable email/SMS content with {{merge_field}} tokens (resource key `message-templates`).
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Reusable HTML header blocks (masthead / logo / banner) an email template prepends via `headerId`.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
List templates + their Meta approval status, create a template (submits to Meta for review), edit it while it's still a LOCAL draft, and submit a draft. Once submitted to Meta a template is immutable.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Creates the template and, by default (submitNow: true), submits it to Meta for review. category = MARKETING | UTILITY | AUTHENTICATION; the name is normalized (lowercased, spaces to underscores). Provide sample values for the {{n}} variables in example.body (and example.header) — Meta requires a sample per variable; any you omit default to 'Sample'. The mapping is stored on the template.
Edit a template while it's still a LOCAL draft (not yet submitted). Returns 400 not_editable once it's been submitted to Meta. Pass submitNow: true to submit after editing.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Template id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Template id |
Sales/agent teams.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
Team members with CRM access (links a platform user to an access tier).
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip | |
q | query | string | Free-text search |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | yes | Row id |