Skip to main content
The Customer API gives your own systems the data you see in the Answering Agent dashboard. Use it to copy tasks into ClickUp or Zendesk, archive call transcripts and recordings, or feed weekly numbers into your own reporting.
The API reads conversations, transcripts, recordings, tasks, contacts, and reports. It can also change a task’s status or assignee and add a note to a task. To receive new tasks as they happen, use webhooks. To ask about the same data in Claude or ChatGPT without writing code, use the MCP server.

Quickstart

1

Create an API key

Sign in at answeringagent.com as a team owner or admin. Use a login that belongs to only the team you want to read. Go to Settings → API Keys, click New API Token, enter a name, and click Create. Copy the key. The dashboard shows it once.
2

Put the key in an environment variable

Every example in these docs reads the key from ANSWERING_AGENT_API_KEY. The JavaScript examples use fetch and need Node 18 or later.
3

Get your account

The response names the team the key reads and the role of the person who created it:
The full response has more fields. See Account.
If the call fails or reads the wrong team: Next, follow a guide:

Sync tasks to ClickUp or Zendesk

Create tickets from webhooks and write status changes back.

Export conversations

Archive transcripts and call recordings day by day.

Base URL

Every endpoint on these pages sits under this URL.

Authenticate

Send the key in the X-API-KEY header on every request.
A key looks like 123|AbCdEf0123456789...: a number, a |, and a secret. Send the whole string. Store it on your server, never in browser code. To revoke a key, click Revoke next to it in Settings → API Keys. Requests that use it get 401 from then on.
A key acts as the person who created it.
  • Team. The key reads the team that person has open in the dashboard right now. If they belong to more than one team and switch teams, the key switches with them.
  • Role. That person must be an owner, admin, or manager on the team. Other roles get 403. Only owners and admins can create keys.
  • Visibility. The key sees what that person sees. If their access is limited to some phone lines, so is the key’s.
  • Lifetime. Keys do not expire. A key stops working when you revoke it or when its creator is deactivated.
  • Permissions. Keys have no scopes. Every key can read all the data above, update tasks, and add task notes.
Recommended setup. Create a dedicated login for the integration, such as integrations@yourcompany.com. Add it to one team only, with the admin role, and create the key from that login. The key then keeps working when people leave or switch teams, and task changes and notes made through the API show that login in the task’s activity.
For hosting, data retention, AI training, and compliance status, see Security and data handling.

Names and IDs

Every endpoint, the MCP server, report filters and rows, and the webhook’s data object use the same names. A value you read from one endpoint works as an input to another. The examples on these pages follow conversation 184532, a call from Dana Ruiz who wants to cancel her membership. The webhook’s top-level fields, such as task.channel with phone_call, are older than these names and keep their original values. See Legacy fields.

Rate limit

Each user can make 120 requests per minute. All keys created by the same person share that limit. Over the limit, the API returns 429 with a Retry-After header that gives the seconds to wait.

Errors

Errors return a JSON body with an error message for people and a code for your code. Branch on code. The message text can change.
An invalid_request error also includes issues, one entry for each input that failed validation.
The API ignores query parameters it does not use, so a misspelled parameter such as chanel has no effect. A JSON body with a key the API does not know returns 400. A recording download can also return 416 with invalid_request, or 502 or 503 with internal. Any other 4xx status has invalid_request, and any other 5xx has internal.

Pages and time ranges

List endpoints take limit (1 to 50, default 10) and page (default 1). Each list response includes total_matching and next_page. next_page is null on the last page.
Tasks and contacts come newest first. Conversations come in order of latest activity, so a call with a new text reply moves to the top. Conversations and tasks also take range, which limits results to records created in that window. For a task, that is when its conversation started or its form was submitted. Every window uses your team’s timezone. Leave out range for all time. Search has no custom date window. Reports cover the same dates, but their 7d to 365d start at the current time of day rather than at midnight. Reports also take a month or a custom from and to.

Endpoints

Requests from the playground go to production. With a real key, Try it on PATCH /tasks/{task_id} changes a live task, and Try it on POST /tasks/{task_id}/notes adds a note to one. Links in responses, such as url, open the record in the dashboard.

The API and the MCP server

The API and the MCP server share the lookups for the account, conversations, tasks, contacts, and reports. They also share task updates and task notes. The same report returns the same numbers over both. They differ in what else they do:
  • Only the API downloads call recordings and lists the metric catalog.
  • Only the MCP server reads the AI’s settings, your support requests, and the help center.
  • Each has its own limit of 120 requests per minute per person.

Partner API

Resellers that provision accounts for their own customers use a different API under the same base URL. See the Partner API. A regular team’s key gets 401 on Partner API endpoints.