Skip to main content

Calls API

Each masked call produces a call_records row. Use these endpoints to audit traffic, drive billing checks, and surface call history in your dashboards.

Endpoints​

MethodPathSummary
GET/v1/callsList calls across all sessions with filters
GET/v1/calls/:idFetch a single call record
GET/v1/sessions/:id/callsList calls scoped to one session

GET /v1/calls​

Auth: Bearer JWT (tenant).

QueryTypeRequiredDescription
statusstringnoSingle status: RINGING, ANSWERED, COMPLETED, MISSED, or FAILED
directionstringnoA_TO_B or B_TO_A
periodStartstring (ISO 8601)noInclusive lower bound on initiatedAt
periodEndstring (ISO 8601)noExclusive upper bound on initiatedAt
sessionIdstringnoRestrict to one session
limitintegernoDefault 50, max 200
afterstringnoCursor from the previous page's pagination.after

Request

curl "https://api.relavoi.com/v1/calls?status=COMPLETED&periodStart=2026-07-01T00:00:00Z&limit=20" \
-H "Authorization: Bearer $RELAVOI_JWT"

Response

{
"data": [
{
"id": "call_88ee2af1",
"sessionId": "5661962a-d7ad-4aea-88a0-210388e1285b",
"status": "COMPLETED",
"direction": "A_TO_B",
"durationSeconds": 142,
"initiatedAt": "2026-07-15T12:31:00.000Z",
"answeredAt": "2026-07-15T12:31:02.000Z",
"endedAt": "2026-07-15T12:33:24.000Z",
"recordingUrl": null
}
],
"pagination": {
"count": 1,
"after": null
}
}

pagination.after is a cursor (the id of the last row). It is null when there are no more pages.

Errors

StatusCodeWhen
400validationBad filter values
401unauthorizedMissing JWT

GET /v1/calls/:id​

Auth: Bearer JWT (tenant).

Fetch a single call record. The call must belong to a session owned by your tenant.

Path paramTypeRequiredDescription
idstringyesCall record UUID

Request

curl https://api.relavoi.com/v1/calls/call_88ee2af1 \
-H "Authorization: Bearer $RELAVOI_JWT"

Response

{
"id": "call_88ee2af1",
"sessionId": "5661962a-d7ad-4aea-88a0-210388e1285b",
"status": "COMPLETED",
"direction": "A_TO_B",
"durationSeconds": 142,
"initiatedAt": "2026-07-15T12:31:00.000Z",
"answeredAt": "2026-07-15T12:31:02.000Z",
"endedAt": "2026-07-15T12:33:24.000Z",
"recordingUrl": null
}

Errors

StatusCodeWhen
404not-foundNo call with that id under this tenant

The 404 body follows RFC 7807:

{
"type": "https://api.relavoi.com/errors/not-found",
"title": "Not Found",
"status": 404,
"detail": "Call not found."
}

GET /v1/sessions/:id/calls​

Auth: Bearer JWT (tenant).

List the call records belonging to a single session. This session-scoped variant additionally includes recordingConsentPlayed.

Path paramTypeRequiredDescription
idstringyesSession id
QueryTypeRequiredDescription
limitintegernoDefault 50, max 200
afterstringnoCursor from the previous page's pagination.after

Request

curl https://api.relavoi.com/v1/sessions/5661962a-d7ad-4aea-88a0-210388e1285b/calls \
-H "Authorization: Bearer $RELAVOI_JWT"

Response

{
"data": [
{
"id": "call_88ee2af1",
"sessionId": "5661962a-d7ad-4aea-88a0-210388e1285b",
"status": "COMPLETED",
"direction": "A_TO_B",
"durationSeconds": 142,
"recordingUrl": "https://recordings.relavoi.com/.../call_88ee2af1.mp3?sig=...",
"recordingConsentPlayed": true,
"initiatedAt": "2026-07-15T12:31:00.000Z",
"answeredAt": "2026-07-15T12:31:02.000Z",
"endedAt": "2026-07-15T12:33:24.000Z"
}
],
"pagination": {
"count": 1,
"after": null
}
}

Errors

StatusCodeWhen
404not-foundUnknown session