Reach a contact on WhatsApp
Delivers something to the contact on WhatsApp without the caller having to know whether WhatsApp’s 24-hour window is open. Built for AI agents and automations.
- Window open (the contact wrote to your line in the last 24 hours):
messageis sent as written.formisfreeform. - Window closed: the workspace’s newest approved template in
languageis sent instead, with no variables. It opens the thread but does not carrymessage.formistemplate, andnotesays the content still has to be sent once the person replies. If there is no approved template in that language, the call fails with422 NO_TEMPLATE_AVAILABLEand nothing is sent.
note is written for an AI agent to relay honestly. Show or speak what it says, and never
claim the material was delivered when form is template. All the guards of
POST /api/whatsapp/send apply (compliance, opt-out, daily cap, sender). The message is not
added to a conversation thread.
Side effects. Sends a real WhatsApp message, either freeform or a business-initiated template that WhatsApp bills. Consumes one unit of the daily WhatsApp send cap, refunded if the telephony carrier rejects it. Does not draw on the AI-message allowance. Writes an audit entry.
Idempotency. Not idempotent. A retry sends again. After a template fallback, a retry sends the template a second time.
Webhook events. audit.log_recorded for subscribers that selected it explicitly. See Webhooks.
Access
- Required scope:
write. - Rate limit: Outbound — 20 requests/min per workspace, fail-closed and the configuration-mutations limiter — 10 requests/min per workspace, shared. See Rate limits.
- Plan: Available on every plan. Requires a WhatsApp sender in
ONLINEstatus, and an approved template inlanguageto reach contacts outside the window.
Authentication
Workspace API key: jl_ followed by 64 lowercase hex characters, created by the workspace owner in the
dashboard (Settings → API Keys) and sent as Authorization: Bearer jl_.... The plaintext is shown once,
at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys.
Operations restricted to admins or owners reject keys without the full scope with 403, and say so in
their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret —
that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds.
See Authentication.
Request
Contact to reach. Must belong to the workspace and have a whatsapp_number.
Language code of the fallback template, matched exactly against the template’s language (e.g. es, en, pt_BR).
Response
A message was sent. form says which kind.

