Quickstart
Make your first request
Store your key
Keep it in a server-side secret store or environment variable.
Send a request
Pass the key in the X-API-Key header over HTTPS.
Read JSON
Responses use JSON and are scoped to your organization.
export ANVO_API_KEY="anvo_live_YOUR_KEY"
curl "https://anvo-backend-415394117760.us-central1.run.app/api/v1/me" \
-H "X-API-Key: $ANVO_API_KEY"Common workflow
Pull transcripts for a subset of calls
curl --get "https://anvo-backend-415394117760.us-central1.run.app/api/v1/me/results" \
-H "X-API-Key: $ANVO_API_KEY" \
--data-urlencode "filter_agent=Example Agent" \
--data-urlencode "include_transcript=true" \
--data-urlencode "limit=50" \
--data-urlencode "offset=0"Replace agent and Example Agent with your account's actual metadata field and value. REST date_from/date_to filter analysis-item creation time. Reanalyses can repeat a recording; use synced_file_id when deduplicating exports.
Search through MCP
- Call describe_call_data to discover the account's field values, date coverage, and analysis criteria.
- Call search_calls with the desired dates, coaches, partners, campaigns, outcomes, duration, transcript terms, or criterion filters. These dates use configured call metadata, then source modification time, then analysis time.
- Pass each returned item_id to get_call_analysis to retrieve its full available transcripts. Continue search_calls pagination using offset and has_more.
search_calls uses the latest completed analysis per synced recording. It returns matching excerpts, not full transcripts. All five MCP tools are read-only and scoped to the API key's account.
Authentication
One key, one organization
X-API-Key header. Keys are scoped to a single Anvo organization and may be issued as read-only credentials. REST also accepts a dashboard session JWT as Authorization: Bearer. A REST Bearer token is a session token, not an API key. Read-only keys can read results but cannot change tenant resources.X-API-Key: anvo_live_YOUR_KEYTreat an API key like a password. Never place it in browser code, public repositories, shared screenshots, or URLs. Contact Anvo to revoke or rotate a credential.
Reference
Explore the customer API
Endpoint
Identify the authenticated account
/mecurl "https://anvo-backend-415394117760.us-central1.run.app/api/v1/me" \
-H "X-API-Key: $ANVO_API_KEY"
# Response
{
"client_id": "2d96c4bf-7c9c-4fc1-8cf4-000000000000"
}Endpoint
List analysis results
/me/resultscurl --get "https://anvo-backend-415394117760.us-central1.run.app/api/v1/me/results" \
-H "X-API-Key: $ANVO_API_KEY" \
--data-urlencode "date_from=2026-08-01" \
--data-urlencode "date_to=2026-08-31" \
--data-urlencode "limit=25" \
--data-urlencode "offset=0"Query parameters
| Parameter | Type | Description |
|---|---|---|
| offset | integer | Results to skip. Defaults to 0. |
| limit | integer | Page size from 1–200. Defaults to 50. |
| search | string | Case-insensitive filename search only. Use filter_<field> for metadata. |
| date_from | ISO date/datetime | Inclusive lower bound on analysis-item creation time, not the recording date. |
| date_to | ISO date/datetime | Inclusive upper bound on analysis-item creation time. Midnight is expanded to 23:59:59. |
| schema_id | UUID | Select items with a result for this schema. Matching items can include other schema results. |
| data_source_id | UUID | Return results from one data source. |
| sort_by | string | date (default), filename, violations, score, or a parsed-metadata key. Score/violation sorts consider at most 5,000 matching items. |
| sort_order | asc | desc | asc or desc. Defaults to desc; unrecognized values also use desc. |
| min_length_ms | integer | Minimum parsed length_ms metadata value, in milliseconds. |
| include_transcript | boolean | Defaults to false, which returns transcript: null. Set true to include available text. |
| violation_filter | JSON string | Map criterion keys to pass, fail, or na, e.g. {"greeting":"fail"}. URL-encode the JSON. |
| filter_<field> | string | Filter parsed metadata. Separate values with |||. Different fields are combined with AND; values within a field with OR. |
Response shape
Example with one matching item. raw_output follows your analysis schema; overall_score below is illustrative. Advance offset by the number of returned items while has_more is true; stop on an empty page. has_processing describes pending or processing runs across your account, regardless of the current filters.
{
"items": [
{
"item_id": "8c3181c6-0000-0000-0000-000000000000",
"synced_file_id": "f2560a21-0000-0000-0000-000000000000",
"filename": "sample-call.mp3",
"status": "completed",
"error_message": null,
"notes": null,
"run_id": "0a42e54b-0000-0000-0000-000000000000",
"run_name": "August review",
"run_created_at": "2026-08-12T14:30:00Z",
"run_status": "completed",
"parsed_metadata": {
"agent": "Example Agent"
},
"results": [
{
"schema_id": "9f2004c2-0000-0000-0000-000000000000",
"schema_name": "Compliance review",
"schema_slug": "compliance-review",
"raw_output": {
"overall_score": 92
},
"transcript": null,
"processing_time_ms": 1240,
"model_used": null,
"created_at": "2026-08-12T14:30:10Z",
"exposure": null
}
],
"violation_count": 0
}
],
"total": 1,
"offset": 0,
"limit": 25,
"has_more": false,
"has_processing": false
}Endpoint
Get one result and transcript
item_id returned by the list endpoint. The response includes the complete structured analysis and the verbatim transcript when one is available./me/results/{item_id}curl "https://anvo-backend-415394117760.us-central1.run.app/api/v1/me/results/ITEM_ID" \
-H "X-API-Key: $ANVO_API_KEY"
# Response
{
"item_id": "8c3181c6-0000-0000-0000-000000000000",
"synced_file_id": "f2560a21-0000-0000-0000-000000000000",
"filename": "sample-call.mp3",
"status": "completed",
"error_message": null,
"notes": null,
"results": [
{
"schema_id": "9f2004c2-0000-0000-0000-000000000000",
"schema_name": "Compliance review",
"schema_slug": "compliance-review",
"raw_output": {
"overall_score": 92
},
"transcript": "Agent: Thank you for calling…",
"processing_time_ms": 1240,
"model_used": null,
"created_at": "2026-08-12T14:30:10Z",
"exposure": null
}
]
}Claude Code
Connect Anvo through MCP
claude mcp add --transport http anvo \
https://anvo-backend-415394117760.us-central1.run.app/mcp \
--header "Authorization: Bearer anvo_live_YOUR_KEY"list_call_analysesLegacy analysis browser. List analyzed calls for your account, newest first. Returns each call's metadata and structured analysis findings, but NOT the full transcript (transcripts are large — fetch one on demand with get_call_analysis). Its search argument matches filenames only. For transcript, partner, coach, or outcome filtering, use search_calls. Paginated.
describe_call_dataDiscover the authenticated account's available partners, campaigns, coaches, outcomes, raw metadata fields, analysis criteria, date range, coverage, aliases, and supported query options. Call this before guessing a dimension value or analysis criterion.
search_callsSearch unique calls using canonical partner/campaign/coach/outcome filters, actual call dates, duration, transcript contents, speaker role, and analysis pass/fail criteria. Returns total count, compact call metadata, timestamped transcript evidence, and item_id values for get_call_analysis. Reanalyses are deduplicated.
aggregate_callsCount and summarize unique calls using the same filters as search_calls. Group by one or two dimensions: day, week, month, partner, campaign, coach, or outcome. Optionally calculate pass/fail rates for an analysis criterion.
get_call_analysisGet the full analysis and verbatim, speaker-diarized transcript for a single call, identified by the item_id returned in search_calls or list_call_analyses.
Try asking Claude
- “List my five most recent call analyses.”
- “Find calls with sample-call in the filename.”
- “Summarize the transcript and findings for this call.”
MCP accepts the API key as a Bearer token or in X-API-Key. Its tools are read-only, including when the key has write access to REST. Anvo does not provide OAuth discovery or authorization for MCP clients that require it. See the Claude Code MCP setup guide.
Errors
Standard HTTP responses
detail value. This is usually a string; validation errors (422) return an array of field errors. Unexpected server errors use detail and error fields. Do not use error text as a stable programmatic identifier.Success
The request completed successfully.
Bad request
A parameter or credential scope is invalid.
Unauthorized
The API key is missing, invalid, expired, or revoked.
Forbidden
The tenant, role, or read-only key does not permit this action.
Not found
The requested item does not exist in your organization.
Validation error
A UUID, limit, offset, or other typed field is invalid.
Server error
An unexpected failure occurred. Contact Anvo with request details; never include your key.
Security
Designed for tenant-safe access
- HTTPS required for every request
- Keys scoped to one organization
- Read-only credentials supported
- Full keys shown only when created or rotated
- /me/results returns null transcripts by default
- Keys can be revoked or rotated by Anvo
Need help?
Talk to the Anvo team.
We can issue or rotate credentials, help with filters, and review your integration before it goes live.
team@anvo.ai