Skip to main content
A working end-to-end integration in four steps. Everything here uses real endpoints — see the reference for full parameters.

1. Create a key

In the dashboard, go to API keys and create one with only the permissions this integration needs. For the example below that’s contacts:create and calls:create. Copy it immediately — the full key is shown once.
Keep this server-side. Never ship a key in frontend JavaScript or a mobile app — anything on a user’s device is readable by that user. Proxy through your own backend.

2. Confirm it works

A 200 with "success": true means you’re connected. A 401 means the key is wrong or truncated; a 403 means it’s valid but lacks the permission. See Errors. Every response uses the same envelope:
Branch on the HTTP status and success — never on the text of message.

3. Create a contact and call them

The common pattern: a lead arrives in your system, you push it to Recepta.ai and have an agent call it immediately.
fromNumber must be one of your own provisioned numbers, and outbound calling carries calling-hour, consent, and do-not-call obligations in the called party’s jurisdiction. See Recording & consent before you automate this.

4. Receive the result

Don’t poll for the outcome. Register a webhook endpoint and subscribe to call.ended, then read the result as it happens.
Compute the HMAC over the raw request body. Parsing and re-serializing the JSON changes whitespace and key order, and the signature will never match — this is the most common webhook integration bug.
See Webhooks for the full event list and Python/PHP verification.

Before you go to production

Read X-RateLimit-Remaining and back off before you hit the limit; honour Retry-After when you do. Add jitter so parallel workers don’t retry in lockstep. See Rate limits.
Key on the event id and ignore duplicates. Assume any event can arrive more than once and out of order.
One key per system, with minimum permissions. Then you can revoke one without breaking the rest — and rate limits are tracked per key, so they don’t compete.
Keys are credentials; transcripts contain customer personal data. See Security & privacy.

Let an assistant query your workspace instead

If you want analysis rather than automation, the MCP server exposes read-only tools to AI assistants with no integration code at all.