# Chorus.ai (Chorus by ZoomInfo) > Chorus is a conversation intelligence platform that records, transcribes and analyzes > customer-facing calls, meetings and emails to surface deal insights and coach sales reps. > Chorus.ai was acquired by ZoomInfo in 2021 and is sold as "Chorus by ZoomInfo". generated: 2026-08-13 method: generated source: apis.yml + openapi/_original/chorus-ai-openapi.json + live probes of chorus.ai note: Chorus does not publish an llms.txt (https://chorus.ai/llms.txt returns 404). This file is generated by API Evangelist from the provider's own published contract and documentation. ## Important context for agents The chorus.ai **marketing site is retired** — https://www.chorus.ai/ returns HTTP 200 but the body is only a meta-refresh redirect to https://www.zoominfo.com/products/chorus. The **API and its documentation are still live** on the original domain. Do not conclude from the website that the API is gone. - API base URL: `https://chorus.ai` - OpenAPI 3.0.3: https://chorus.ai/api/openapi.json (HTTP 200, public, unauthenticated) - Swagger UI: https://chorus.ai/api-docs/index.html - Postman collection: https://api-docs.chorus.ai/ - `docs.chorus.ai` is **dead** — it fails the TLS handshake and serves nothing. ## API surface 81 operations across two concurrently-served, non-aligned path versions: - `/api/v1/*` — 60 operations, JSON:API shaped (`application/vnd.api+json`, `page[...]`, `filter[...]`, `fields[...]`) - `/v3/*` — 8 operations, older and flatter (`continuation_key` cursor, plain query params). This is the surface the official authentication example demonstrates. ### Core capabilities - **Conversations / engagements** — search, fetch, delete, export recorded calls and meetings; fetch a live in-progress conversation; upload a recording (3GPP, AU, AVI, FLV, HLS, MKV, MP3, MP4, Ogg, WAV, WebM); bulk process and validate. - **Emails** — list and fetch captured email engagements and email threads. - **Moments & playlists** — create/edit shareable clips of a conversation; assemble them into playlists and rule-driven smart playlists for coaching. - **Scorecards** — fetch and export coaching evaluations. - **Sales qualification** — retrieve AI framework analysis for a recording and write it back to CRM. - **Users & teams** — fetch users, teams, current user, and per-user settings. - **Engagement filters & saved searches** — manage saved filter definitions. - **Video conferences** — create and manage Chorus-hosted conferences addressed by `go_link`. - **Integrations** — OAuth connect flows for Google Calendar/Email/Meet, Office 365 Calendar/Email, Microsoft Teams, Webex, Zoom and a CRM connector. - **Webhooks** — register, list and delete callbacks. ## Authentication Per-user API token in the `Authorization` header. The published example sends the **raw token with no `Bearer` prefix**: ``` curl -H "Authorization:" https://chorus.ai/v3/engagements ``` The spec also declares `http/basic` and an `x-ziaccesstoken` apiKey header (a ZoomInfo access token) as alternatives. Tokens are generated per user from the Personal Settings page inside the Chorus application, and the user's role must permit API access. The published docs state that during the early access period a token must be obtained by contacting your Chorus customer success manager — **there is no self-serve API signup.** ### Data access rules (enforced server-side) - Recordings marked private are never returned through the API. - The token user's own data-access-control settings apply — to read all recordings, that user must have access to all recordings. - Roles & permissions that gate an action in the UI equally gate it through the API. ## Conventions - **Media type**: `application/vnd.api+json` (JSON:API) on `/api/v1`. - **Documents**: `data` / `attributes`; resource schemas are paired with a `*Doc` wrapper. - **Pagination**: `page[number]`, `page[size]`, `page[after]` on `/api/v1`; `continuation_key` on `/v3/engagements`. - **Sparse fieldsets**: `fields`, `fields[conversations]`, `fields[recordings]`. - **Filtering**: `filter[...]` family on `/api/v1`; flat named params on `/v3`. - **Non-CRUD verbs**: two idioms coexist — colon suffixes (`/conversations:bulk`, `/conversations:export`) and `/actions/` sub-paths (`/filters/actions/replace`). - **Async**: exports and bulk operations return 202 with a task handle; media and export downloads answer 302/307 redirects to signed storage URLs. ## Errors JSON:API error envelope, **not** RFC 9457 problem+json: ```json {"errors":[{"id":"...","code":"...","status":"404","title":"Not found","detail":"...", "source":{"pointer":"...","parameter":"..."}}]} ``` Only three error responses are declared across the whole contract: **400** Bad request (71 operations), **404** Not found (25), **409** Conflict (24). Note for agents: a **404 is not proof of absence** — a private or out-of-scope recording is simply not returned, so 404 can be an authorization outcome. ## What Chorus does NOT publish Be explicit about these rather than assuming defaults: - **No rate limits.** No 429 is declared on any operation; no `X-RateLimit-*`, `RateLimit-*` or `Retry-After` header is documented. - **No idempotency.** No `Idempotency-Key` support. Retrying a timed-out upload or bulk create risks a duplicate. - **No 401/403/5xx declared** anywhere in the contract, though the live API does return 401. - **No error-code registry.** `errors[].code` exists but is never enumerated. - **No SDKs.** No first-party client library in npm, PyPI or any other registry — generate from the OpenAPI or use the Postman collection. - **No changelog**, no versioning policy, no deprecation policy, no `Sunset`/`Deprecation` headers, and no guidance on `/api/v1` vs `/v3`. - **No MCP server** and **no A2A agent card**. - **No sandbox or test environment**, no test credentials, no CLI. - **No `/.well-known/` documents** on any Chorus host. - **No webhook payload schema** — the registration request is documented, but the body Chorus POSTs to your `hook_url` is not, and there is no signing/verification mechanism. ## Webhooks Register with `POST /v3/webhook`: ```json {"event": "recording_done", "hook_url": "https://your-endpoint.example.com/chorus"} ``` `recording_done` is the only event the contract enumerates. An optional `type` field selects presets (e.g. `zapier`). List with `GET /v3/webhook`; delete with `DELETE /v3/webhook`, keyed on the URL rather than an id. ## Commercial - Pricing: sales-gated. https://www.zoominfo.com/products/chorus/pricing is a demo-request funnel; no tiers, prices or API metering are published. - Terms of Use: https://www.zoominfo.com/legal/terms-of-use (the contract's own `info.termsOfService`, https://www.chorus.ai/terms, is a dead 404) - Privacy Policy: https://www.zoominfo.com/legal/privacy-policy - Security overview: https://www.zoominfo.com/legal/security-overview - Trust center: https://trust.zoominfo.com/ - Status: https://status.zoominfo.com/ (status.chorus.ai is a redirect shell, not a status page) - Support: https://www.zoominfo.com/about/help-center - Security contact: security@zoominfo.com ## Compliance Held at the ZoomInfo parent level: **SOC 2 Type II**, **ISO/IEC 27001**, **ISO/IEC 27701**, **TRUSTe**. Risk management follows ISO 31000. PCI DSS, HIPAA and CSA-STAR are named on ZoomInfo's security page only as requirements placed on its own service providers — they are **not** ZoomInfo or Chorus certifications. ## API Evangelist artifacts - openapi/chorus-ai-openapi.yml — refined copy of the live spec - openapi/_original/chorus-ai-openapi.json — verbatim as fetched - collections/chorus-ai.postman_collection.json — the provider's public Postman collection - authentication/chorus-ai-authentication.yml - conventions/chorus-ai-conventions.yml - errors/chorus-ai-problem-types.yml - data-model/chorus-ai-data-model.yml - asyncapi/chorus-ai-webhooks.yml - conformance/chorus-ai-conformance.yml - lifecycle/chorus-ai-lifecycle.yml - packages/chorus-ai-packages.yml - plans/chorus-ai-plans-pricing.yml - rate-limits/chorus-ai-rate-limits.yml - security/chorus-ai-domain-security.yml - security/chorus-ai-trust-center.yml - security/chorus-ai-vulnerability-disclosure.yml - well-known/chorus-ai-well-known.yml - skills/ — packaged agent skills grounded in real operationIds