WhatsApp calling is live — answer customer calls right inside your inbox.

/

Developers

API & integrations

Create contacts and send messages from your own systems, and get notified the moment something happens in Instant.

API keys

Generate a key under Settings → API Access (requires the integrations feature on your plan). Send it on every request as a header:

Header
x-api-key: wak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

A new key can read templates and send messages by default. Keep it secret — anyone holding it can send messages as your account.

REST API

Create or find a contact

POST /api/v1/contacts
{
  "phone": "+91XXXXXXXXXX",
  "name": "Optional name"
}

Safe to call repeatedly with the same phone number — it finds and returns the existing contact instead of creating a duplicate.

Send a template message

POST /api/v1/messages
{
  "to": "+91XXXXXXXXXX",
  "template": { "name": "order_update", "language": "en_US" },
  "params": ["12345", "Tomorrow"]
}

params fill the template’s {{1}}, {{2}}… placeholders in order — see Message templates. A message sent this way also appears in your shared inbox, exactly as if it had been sent from inside the app.

Only approved templates can be sent — the same rule as sending from the inbox or a campaign. There’s no endpoint to list contacts or messages yet; these two routes are for creating contacts and sending, not for reading data back out.

Outbound webhooks

Register a public HTTPS URL under Settings → Integrations and choose which events to receive:

EventFires when
message.receivedA customer sends an inbound WhatsApp message.
contact.createdA new contact is created.
conversation.assignedA conversation is assigned to a teammate.
deal.stage_changedA deal moves to a different pipeline stage.

Each delivery is a signed POSTwith the event payload as JSON. A signing secret is shown once, at creation time — use it to verify the request really came from Instant rather than trusting the payload blindly. If your endpoint doesn’t respond successfully, delivery is retried several times with a growing delay before it’s given up on.

Zoho CRM

Let Zoho events — a new lead, a deal stage change, an overdue invoice — send WhatsApp messages through Instant. It works in two halves: connect the account once, then point a Zoho Workflow Rule at Instant so it delivers the event.

1. Connect Zoho in Instant

Go to Settings → Integrations → Zoho CRM → Connect and approve read access. After connecting, open Manage on the same card — it shows a webhook URL ending in /api/integrations/zoho/webhook/…. Copy it; you’ll paste it into Zoho in the next step.

2. Create the Workflow Rule in Zoho

In Zoho CRM, go to Setup → Automation → Workflow Rules → Create Rule. Pick the module (Leads, Contacts, Deals…) and when it should fire (record created, edited, a field changes). Then, under Instant Actions → Webhooks, create a new webhook and fill it in:

FieldWhat to enter
MethodPOST
URL to NotifyThe webhook URL copied from Instant (the Manage view).
Authorization TypeGeneral
Body → TypeRaw → JSON. This is where the record fields must go — see below.
Send the fields in the Body, not as Module or Custom Parameters. With Body set to None, a POST webhook delivers an empty request and nothing reaches Instant — the event arrives with no phone and no message goes out.

Set Body → Type to Raw, choose JSON, and build this — the field values must be inserted with Zoho’s merge-field picker (the insert-field button in the body editor), not typed by hand:

Body (Raw · JSON)
{
  "name": "${Leads.First_Name}",
  "phone": "${Leads.Phone}",
  "email": "${Leads.Email}"
}

phone is the only required field — Instant matches the contact on it. name and email are optional. Use whichever module you chose (e.g. ${Deals.…} for a Deals rule) and add any other fields you want to reference in the message. Save the webhook, associate it with the Workflow Rule, and save the rule.

Insert fields from the picker rather than typing them — a field that doesn’t exist on the module (for example Full_Name on Leads, which only has First/Last name) is rejected as “unsupported” and the webhook won’t save. The phone needs its country code — a bare 10-digit Indian number is auto-prefixed with 91.

3. Build the automation in Instant

Create an Automation with the trigger Zoho CRM Event. Every field you put in the JSON body is available as {{vars.field_name}} (lowercased, spaces → underscores) — so the body above gives you {{vars.name}}, {{vars.phone}} and {{vars.email}}. Three are always present whatever the rule sent: {{vars.zoho_module}}, {{vars.zoho_record_id}} and {{vars.zoho_event}}. Because a new lead has never messaged you, use a Send Templateaction (an approved template) — free-form text can’t open a fresh conversation.

Zapier, Make, n8n

There’s no dedicated app in any of these marketplaces yet — connect them the same way any custom system would: outbound webhooks as the trigger into your automation tool, and the REST API (with an API key) as the action it calls back into Instant.