Help · API
Read your contacts, conversations, automations and orders, send messages and pause automations from your own systems — across Instagram, WhatsApp, Messenger and Telegram. Version 1.0.0. Base path /api/v1; the machine-readable document is at /api/v1/openapi.json.
Create a key in Settings → API keys (API access must be part of your plan) and send it on every request:
curl https://zynqly.com/api/v1/me \ -H "Authorization: Bearer zk_live_…"
A key acts as the workspace it was created in and can only do what it was given. 120 requests per minute per key. Answers are JSON: { data, meta } on success, { error: { code, message } } otherwise.
contacts:readRead contacts — Leads on every channel, with tags, email and phoneconversations:readRead conversations and messages — Inbox threads and their message historymessages:writeSend messages — Reply in an open conversation, as your workspaceautomations:readRead automations — Every automation, its trigger, steps and countsautomations:writePause and resume automations — Switch an automation on or offorders:readRead orders — Orders and abandoned carts from every sourcecontacts:writeTag contacts — Add a tag to a contact — what a Zap does when a row is added elsewherehooks:writeSubscribe to events — Register and remove webhook subscriptions — how Zapier and Make listen for new leads, messages and orders/meGET — The workspace this key belongs to, its connected channels and the key's scopes. No scope needed.
/contactsGET — List contacts (leads) across channels, newest first. Scope contacts:read.
channel (query) — INSTAGRAM | WHATSAPP | MESSENGER | TELEGRAMstatus (query) — NEW | CONTACTED | QUALIFIED | CONVERTED | UNSUBSCRIBEDsearch (query) — matches username, name, email or phonepage (query) — 1-based pagelimit (query) — 1–100, default 50/contacts/{id}GET — One contact. Scope contacts:read.
id (path) — the contact id/conversationsGET — List inbox conversations, most recent first. Cursor-paged. Scope conversations:read.
channel (query) — INSTAGRAM | WHATSAPP | MESSENGER | TELEGRAMstatus (query) — OPEN | SNOOZED | CLOSEDcursor (query) — from a previous page's nextCursorlimit (query) — 1–100, default 25/conversations/{id}/messagesGET — A conversation's messages, oldest first within the page. Cursor pages older. Scope conversations:read.
id (path) — the conversation idcursor (query) — from a previous page's nextCursorlimit (query) — 1–100, default 30POST — Send a text reply in a conversation, as your workspace. Channel messaging-window rules apply. Scope messages:write.
id (path) — the conversation idBody: text — string, up to 4000 characters
/automationsGET — List automations across channels. Scope automations:read.
channel (query) — INSTAGRAM | WHATSAPP | MESSENGER | TELEGRAMstatus (query) — ACTIVE | PAUSED | DRAFT | ARCHIVED/automations/{id}GET — One automation with its trigger, steps and attributed revenue. Scope automations:read.
id (path) — the automation idPATCH — Pause or resume an automation. Scope automations:write.
id (path) — the automation idBody: status — ACTIVE | PAUSED
/ordersGET — Orders and abandoned carts from every source, with paid totals. Scope orders:read.
status (query) — pending | paid | fulfilled | cancelled | abandoned/contacts/{id}/tagsPOST — Add a tag to a contact. Idempotent — tagging twice is one tag. Scope contacts:write.
id (path) — the contact idBody: tag — string, up to 40 characters
/hooksGET — List this workspace's webhook subscriptions. Scope hooks:write.
POST — Subscribe an https URL to an event. The signing secret is returned once, on this response. Scope hooks:write.
Body: event — one of lead.created | tag.added | message.received | comment.received | conversation.assigned | order.created | order.paid | order.abandoned; target_url — the https URL to POST to (a Zapier catch hook, a Make webhook, your server)
/hooks/{id}DELETE — Unsubscribe. Nothing more is sent to that URL. Scope hooks:write.
id (path) — the subscription id/hooks/sampleGET — A sample delivery for an event, as a one-item list — what Zapier shows while a Zap is being built. Scope hooks:write.
event (query) — the event id, e.g. lead.created401 UNAUTHENTICATEDNo Authorization: Bearer header.401 INVALID_KEYThe key is unknown or has been revoked.402 PLAN_LIMIT_REACHEDThe workspace's plan does not include API access.403 INSUFFICIENT_SCOPEThe key was not given the scope this endpoint needs.404 NOT_FOUNDNo such record in this workspace (the same answer for "not yours").422 VALIDATION_ERRORA parameter or body field is missing or malformed.429 RATE_LIMITEDMore than 120 requests in a minute on one key. Retry after the Retry-After seconds.