Retrieving results
Once a call is submitted, its transcript and analytics are read through the call endpoints. This page describes what each endpoint returns, how to filter lists, and how transcript search works.
| Endpoint | Returns |
|---|---|
GET /api/v1/calls/{id}/status | One call, with its complete transcript, translation and analytics. |
GET /api/v1/calls | Calls matching a filter, newest first. |
GET /api/v1/favorites | The account's favorite calls, with the same filters and shape as /calls. |
POST /api/v1/favorites/{callId}, DELETE /api/v1/favorites/{callId} | Mark or unmark a call as a favorite. |
GET /api/v1/analytics | Audio and score analytics for a date range. |
GET /api/v1/topics, GET /api/v1/sentiments | Topic and sentiment distributions across the account's calls. |
GET /api/v1/intelligence | Agent-level analytics. See Intelligence. |
All endpoints are scoped to the token's account. A sub-account also sees its parent account's calls. A call outside your account is reported as not found.
A single call
curl "https://api.example.com/api/v1/calls/12345/status" \
--header "Authorization: Bearer $SPEECHLYTICS_TOKEN"
The response is the most complete representation of a call:
| Field | Content |
|---|---|
id, name, created, modified, duration | Identity and timing. Duration is in seconds. |
status, statusDescription, error | Processing state (0 Queued, 1 InProgress, 2 Processed, 3 Failed, 4 QuotaLimit, 5 NotFound, 8 Live) and any error. |
audioType | 0 Mono or 1 Stereo. |
transcription | language plus leftChannel (agent), rightChannel (customer) and bothChannels (mono) segments. Each segment has start, end, duration, content, language and channel. |
translation | Translated segments in the same shape, when translation is enabled. |
keywords | Matched keywords with score, channel, exclusive and out-of-scope flags, and tag frequencies. |
score, analyticsScore, inScope | Keyword score, AI analytics score (0–100) and scope. See Scoring model. |
topics, sentiments | Classification results. |
callSummary, callAnalysis | The summary and structured analysis. See Summarization. |
customQuestions | Custom question results, or null when the call was not evaluated. |
| Silence, music, noise and laughter per channel | Audio content measurements. |
wordFrequencyLeft, wordFrequencyRight, wordFrequencyBoth, speakerFrequencyPercentage | Frequent words and talk share. |
agent, customer, externalId | Attribution from metadata or the integration. |
Sections appear only when the feature is enabled for the account and the audio supports it. Treat every analytics field as optional.
Listing calls
curl "https://api.example.com/api/v1/calls?Page=1&Rows=50&DateFrom=2026-09-01&DateTo=2026-09-30&Topic=billing" \
--header "Authorization: Bearer $SPEECHLYTICS_TOKEN"
| Parameter | Meaning |
|---|---|
Page, Rows | Paging. Rows is 1–100 (default 10). |
DateFrom, DateTo | Period, for example 2026-09-01 or 2026-09-01 08:00:00. Defaults to the last month. |
FileName | Part of the call name. |
Topic, Sentiment | One or more space-separated values; a call matches any of them. |
Tag | One or more space-separated keyword tags. |
Content | Text to find in the transcript (see below). |
Cluster | Processing cluster, for multi-cluster deployments. |
The response is an array of call objects, newest first, without a total count: request the next page until fewer than Rows items come back.
List results include the stereo leftChannel and rightChannel segments but not bothChannels or translation. Use /calls/{id}/status for mono transcripts and translations.
Transcript search
The Content parameter of /calls and /favorites finds calls by their transcript:
- Exact search (always available): calls whose transcript contains the text.
- Semantic search (when enabled on your Speechlytics deployment): calls that express the same idea in other words or in another language, combined with an exact word search so identifiers such as order numbers and names are still found. Quoted phrases are matched exactly. Matches are limited to the 500 most relevant calls in the date range; results are still returned newest first.
Semantic search covers the original-language transcript after masking and polishing, and never returns deleted calls. Calls processed before it was enabled are included after a one-time catch-up run. If the search service is temporarily unavailable, Content falls back to exact search without an error. GET /api/v1/health reports searchIndexHealthy.
Favorites
Favorites are a per-account shortlist of calls, useful for review queues.
| Endpoint | Behavior |
|---|---|
GET /api/v1/favorites | The token's favorite calls; same parameters and shape as GET /api/v1/calls. |
POST /api/v1/favorites/{callId} | Mark the call. Repeating the request is harmless. Returns { "favorite": true }. |
DELETE /api/v1/favorites/{callId} | Unmark the call. Repeating the request is harmless. Returns { "favorite": false }. |
A favorite belongs to the account that marked it; a sub-account's favorites are its own. Both write endpoints return 404 when the call does not exist or is not visible to the account.
Aggregates
| Endpoint | Returns |
|---|---|
GET /api/v1/analytics?Page=&Rows=&DateFrom=&DateTo= | Per-call audio measurements and scores for the period, with the account's target and silence scores and a total. |
GET /api/v1/topics | { "topics": [{ "name", "usage" }] }: the share of calls per topic. |
GET /api/v1/sentiments | { "sentiments": [{ "name", "usage" }] }: the share of calls per sentiment. |
Caching and polling
Call responses may be cached for up to 30 seconds, and topic and sentiment aggregates for up to 10 minutes. For new results, prefer webhooks and call events to frequent polling, and stay within the rate limits.
See the API reference for every field.