Skip to main content
The ChatSyncs Developer API lets you send WhatsApp messages, manage subscribers, labels, and catalogs, and trigger bot flows directly from your own server — everything you can do by hand in ChatSyncs, also available over HTTP.
New here? Jump to the Quickstart below for a copy-paste walkthrough of your first API call, step by step.

Get your API key

Every request needs an API key. Open the API Developer Console in ChatSyncs — your key is shown at the top of that page as Your API key.
Treat your API key like a password. Anyone with it can send messages and read subscriber data on your account. Never commit it to a public repository or share it in a support ticket — if you think it’s leaked, regenerate it from the same Developer page.

Base URL

Every endpoint path in this reference is relative to this base URL, e.g. /whatsapp/send means https://platform.chatsyncs.com/api/v1/whatsapp/send.

Authentication

Pass your API key as the apiToken parameter on every request — either as a query parameter (GET) or a form field (POST):
Every endpoint except Custom Fields List also accepts it as a Bearer token instead (Custom Fields List needs the apiToken parameter, and answers a Bearer header alone with The api token field is required.):
A wrong key is answered with HTTP 401 and {"status":"0","message":"Unauthenticated."}. With no key at all, the API redirects to the ChatSyncs login page (HTTP 302, an HTML page) instead of returning JSON — if you get HTML back, your key is missing.

Making requests

Every endpoint accepts both GET and POST with the same parameters — a query string on GET, or form fields (-d with curl) on POST — except Upload Media, which is POST-only. Use POST for anything that changes data, so values stay out of URLs and server logs.
For GET requests, URL-encode any parameter that contains spaces or special characters (e.g. a text message).
There’s no official ChatSyncs SDK package yet. The code samples on each endpoint page (cURL, Node.js, Python, PHP) are plain HTTP calls using each language’s standard library — fetch, requests, and curl/file_get_contents — not calls into a published package.

Quickstart

Almost every endpoint also requires a phone_number_id — this identifies which of your connected WhatsApp numbers (bots) the request acts on. Find it under Chatbot Manager → (your bot) → Change Settings, or call Get My Info: its whatsapp_bots_details lists every connected number with its phone_number_id.

Request flow

Reading the response

Every response is JSON with a status field:
  • "status": "1" (or true on a few endpoints) — the request succeeded. A message field usually confirms what happened, or is the requested data: endpoints that return rows (Subscriber List, Get Conversation, Label List, Bot Template Get…) put them in message as a list. There is no data field, except on Custom Fields List.
  • "status": "0" (or false) — the request failed. message explains why, e.g. "WhatsApp account not found." or "The phone number id field is required." Several missing fields are listed together, separated by commas.
Always check status before trusting the response — failures nearly always return HTTP 200, so a successful HTTP request doesn’t guarantee the action succeeded.
“Not found” is not always a failure. Subscriber Get, Delete Subscriber and Catalog Sync answer an unknown id with "status":"1" and "message":"Subscriber not found" (or Catalog not found), where a list was expected. Check that message is a list before reading it. Other endpoints return "status":"0" for the same case.
A few endpoints do not validate ids and report success anyway: Trigger Bot Flow with an unknown flow, Assign Sequences with an unknown sequence, and Assign Custom Fields with an unknown field name. Get ids from the matching list endpoint first.

Pagination

List endpoints (Subscriber List, Get Conversation) accept limit (the page size) and offset (the page number, starting at 1 — not a count of rows to skip) to page through results. The response carries nextOffset, the value to send next, and null on the last page. See the worked example on Subscriber List.

Frequently asked

Open the API Developer Console in ChatSyncs — your key is shown at the top of that page. Use the key already shown: generating a new one replaces the old.
Either works on every endpoint: the apiToken parameter (query string on GET, form field on POST), or Authorization: Bearer YOUR_API_KEY.
Check the status field in the JSON response — "1" (or true) means success, "0" (or false) means failure, with a message explaining what went wrong.
It identifies which connected WhatsApp number/bot the request applies to. You’ll find it in Chatbot Manager for that bot.