Free-trial access, per-second limits, and 403s that say what to do
- The API is open during the free trial. A trial organization gets every endpoint, on a smaller budget, so an integration can be built and tested before paying.
- Rate limits are now per second: 20 requests/second on Scale, 5 requests/second during the trial, shared across the organization’s keys. The
X-RateLimit-*headers are unchanged;Retry-Afteron a429is now always1. GET /v1/megainstrial(boolean) —truewhile the organization is on its free trial.plannow reports the real plan code rather than always"scale".- Clearer
403s.scale_plan_requirednow means only “a live plan below Scale — upgrade”. Two new details cover the rest:trial_expired(the trial ended without a payment method) andsubscription_required(canceled, or suspended for non-payment). See Authentication.
WhatsApp templates, sends, and broadcasts
The API can now send.
- WhatsApp templates — list, read, create, delete (
/v1/templates). Creating a template also submits it to Meta for approval in the same call, so it comes backPENDING; poll it until Meta flips it toAPPROVEDorREJECTED. GET /v1/templates/{id}/send-requirements— what a template needs filled before it can be sent: the variable tokens, which of them resolve from the contact on their own, catalog slots, dynamic URL buttons, media surfaces, and a reason when a template can never be sent at all. Read this before your first send rather than discovering it through 422s.POST /v1/templates/{id}/send— up to 100 recipients in one call, each addressed bycontact_idorphoneand carrying its ownvariables,url_suffixes,coupon_code,lto_expirationand media.recipientstakes a single object or an array — sending to one person needs no wrapping. Media headers take a public URL (header_media_url/card_media_urls), fetched server-side. Returns 202 and the broadcast it created.- A
phonethat matches no contact creates one, so a send can grow your CRM. - Send
Idempotency-Keyand a retry is safe: the same key returns the original broadcast for 24 hours instead of sending again. - The request is refused whole — nothing queued, nothing charged — if a variable is missing, a key is one the template does not use, a media URL cannot be fetched, or the batch exceeds what is left of WhatsApp’s rolling 24-hour messaging limit.
- A
- Broadcasts —
GET /v1/broadcastsandGET /v1/broadcasts/{id}for progress (sent/failed/pendingalways sum torequested),GET /v1/broadcasts/{id}/recipientsfor per-recipient outcomes, andPOST /v1/broadcasts/{id}/cancelto abandon the un-sent remainder. Messages already accepted by WhatsApp cannot be recalled. GET /v1/channels/whatsapp/phones— the connected numbers a send can go out from, sochannel_idis discoverable. Optional when your WhatsApp account has exactly one number; required when it has more.
v1 launch
The first public surface of the Ciarem API:
- Contacts — full CRUD (
/v1/contacts). - CRM metadata — properties and funnel stages, full CRUD (
/v1/properties,/v1/funnel-stages). - Conversations — read-only history (
/v1/conversations), each message carrying asenderofcontact,agent,ai, orsystem. /v1/me— organization identity, plan, timezone, and language.- Organization-bound
oak_API keys, 60 requests/minute per organization.