Developers
The Answerling API
Everything a business’s tools receive from Answerling comes through one door: a call ends, the write-up is built, and it is posted to every address the business registered. This page documents that door. It is the same one the Zapier integration uses.
1. The address and the key
Every request is a POST to https://answerling.ai/api/zapier with a JSON body and two headers:
Content-Type: application/json
X-Answerling-Key: the key you were given (it starts with ans_)
The key identifies the business. Answerling issues one during setup, shows it once, and keeps only a hash of it; a revoked key stops working at once. There is nothing else to configure: no OAuth, no client secret, no scheduled rotation.
Every response is JSON. A request without a key, with an unknown key, or with a revoked key is answered with 401 and the body {"error":"unknown key"}, and nothing else about why.
2. The four actions
The body’s action field says what you want.
auth. Who does this key belong to? Answers200with{"business":"Your business","client_id":"a uuid"}. Use it to test a key or to label a connection.subscribe. Register an address to receive write-ups. Body:{"action":"subscribe","hookUrl":"https://hooks.zapier.com/hooks/standard/1/2/","event":"new_write_up"}. Answers201with{"id":"a uuid","hook_url":"the address"}. Registering the same address twice is harmless. An address must be onhooks.zapier.com; any other host answers400.unsubscribe. Body:{"action":"unsubscribe","hookUrl":"the address"}. Answers200with{"ok":true}, whether or not the address was registered.sample. Answers200with an array of the business’s three most recent write-ups, newest first, in the shape in section 4. An empty array when the business has had no analysed calls yet.
Any other action answers 400 with {"error":"unknown action"}.
3. The event: a new call write-up
After a call ends, once the recording has been transcribed and read, Answerling sends one POST to every address the business has registered. The body is the write-up as JSON, with the fields in section 4. A 2xx answer means delivered. An address that answers 410 Gone is removed. Delivery is once: if your address is down at that moment the write-up is not re-sent, and it stays in the business’s dashboard.
4. The write-up
Flat JSON, plain names: the caller’s details, the summary, the whole transcript and the call’s timings. A fact the caller did not give is null, except wants_callback (false) and best_number (the number they called from).
id, string. The call’s id, stable for ever.business, string. The business’s name as Answerling knows it.received_atandstarted_at, ISO 8601 timestamps. When the call ended and when it began.duration_seconds, integer.caller_numberandline_number, strings in E.164 form. The number that called, and the Answerling number the call reached.caller_name, string. The name the caller gave.best_number, string. The number the caller asked to be called back on, or the number they called from.about, string. What they need, in a line.location, string. Where, if they said.when_wanted, string. When they want it, in their words.outcome, string. How the call ended, as a one-word mark, which the dashboard shows as a word: Request taken (booked: the whole request, taken for the business to confirm; it is not an appointment), Message taken (message), Spam (spam) or Hung up (hangup).wants_callback, boolean.summary, string. A short paragraph.sentiment, string. Positive, Neutral, Negative or Unknown.transcript, string. The whole conversation, one turn per line, each line starting with who spoke.recording_url, string. A link to the audio.dashboard_url, string. The call in the business’s dashboard, sign-in required.
An example, with invented values:
{
"id": "call_example_0001",
"business": "Your business",
"received_at": "2026-09-21T18:43:10Z",
"started_at": "2026-09-21T18:40:52Z",
"duration_seconds": 134,
"caller_number": "+15555550123",
"line_number": "+15555550100",
"caller_name": "A caller",
"best_number": "+15555550123",
"about": "Tankless water heater service",
"location": null,
"when_wanted": null,
"outcome": "message",
"wants_callback": true,
"summary": "They asked whether you service tankless water heaters, and want a call back on the number they rang from.",
"sentiment": "Neutral",
"transcript": "Agent: Thanks for calling. This call is recorded. How can I help?",
"recording_url": "https://example.com/recording.wav",
"dashboard_url": "https://app.answerling.ai/#call/call_example_0001"
}
5. Limits and conduct
One key belongs to one business and reaches only that business’s calls. There is no published rate limit; a few requests a minute is the expected shape, since the event is pushed to your Zapier hook and there is nothing to poll. A write-up contains the caller’s personal data, so whatever receives it must handle it under the business’s own privacy obligations and our privacy policy and terms.
6. Errors
400. A bad request: an unknown action, or a missing or disallowedhookUrl. The body says which.401. No key, an unknown key, or a revoked key. It can also mean our side could not check the key at that moment: try again in a minute before asking for a new one.5xx. Our side. Try again in a minute; if it persists, write to us.
7. Getting a key, and Zapier
Keys are issued by Answerling for each business during setup: ask on your setup call, or write to info@answerling.ai. A key belongs to one business alone. It is stored only in scrambled form, and it stops the moment we revoke it. In Zapier there is no code to write. During setup we connect your Zapier account to Answerling and build the Zap with you on New Call Write-Up; the key goes in when Zapier asks you to sign in, and the four actions above happen behind the scenes.
Questions? Write to info@answerling.ai.