curl --request GET \
--url 'https://api.voice.stateset.com/api/v1/voice-sessions' \
--header "Authorization: Bearer $STATESET_VOICE_API_KEY"
{
"ok": true,
"tenant": "acme-outdoors",
"sessions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stream_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"call_sid": "string",
"org_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"customer_phone": "+15555555678",
"agent_name": "string",
"call_type": "inbound",
"status": "completed",
"summary": "Two-person tent, green — replacement for damaged pole set.",
"transcript": null,
"rating": 1,
"sentiment": "string",
"tags": [],
"turn_count": 1,
"started_at": "2026-08-31T14:22:05Z",
"ended_at": "2026-08-31T14:22:05Z",
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z",
"duration_ms": 8,
"function_call_count": 1,
"transcript_length": 1,
"metadata": {}
}
],
"count": 2,
"filtered_total": 49,
"overall_total": 49,
"status_counts": {},
"stats": {
"total": 102,
"average_duration_ms": 7.5,
"total_duration_ms": 8,
"average_rating": 1.5
},
"longest_session": {}
}
List persisted voice sessions
Returns a paginated list of voice sessions stored in the database. Use the status query parameter to filter by session status (active, completed).
GET
/
api
/
v1
/
voice-sessions
curl --request GET \
--url 'https://api.voice.stateset.com/api/v1/voice-sessions' \
--header "Authorization: Bearer $STATESET_VOICE_API_KEY"
{
"ok": true,
"tenant": "acme-outdoors",
"sessions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stream_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"call_sid": "string",
"org_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"customer_phone": "+15555555678",
"agent_name": "string",
"call_type": "inbound",
"status": "completed",
"summary": "Two-person tent, green — replacement for damaged pole set.",
"transcript": null,
"rating": 1,
"sentiment": "string",
"tags": [],
"turn_count": 1,
"started_at": "2026-08-31T14:22:05Z",
"ended_at": "2026-08-31T14:22:05Z",
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z",
"duration_ms": 8,
"function_call_count": 1,
"transcript_length": 1,
"metadata": {}
}
],
"count": 2,
"filtered_total": 49,
"overall_total": 49,
"status_counts": {},
"stats": {
"total": 102,
"average_duration_ms": 7.5,
"total_duration_ms": 8,
"average_rating": 1.5
},
"longest_session": {}
}
Returns a paginated list of voice sessions stored in the database.
Use the
status query parameter to filter by session status (active, completed).
Query parameters
string
Filter by status (active, completed, transferred, failed)
string
Case-insensitive search across phone, agent, summary, and transcript
string
Return only sessions started after the given RFC3339 timestamp
string
Sort by started_at asc or desc
integer (int64)
Maximum results (default 50, max 200)
integer (int64)
Pagination offset
Response
object
boolean
required
string
required
Tenant id the listing is scoped to
object[]
required
Show sessions
Show sessions
string (uuid)
required
string
required
Media stream id of the session
string,null
required
Twilio call SID, when the session came from a PSTN call
string,null
required
string,null
required
string,null
required
string,null
required
string
required
string,null
required
LLM-generated call summary
object
required
Transcript JSON as stored (typically an array of turn entries)
integer,null
required
Caller rating, when collected
string,null
required
string[]
required
integer
required
string (date-time)
required
string,null (date-time)
required
string (date-time)
required
string (date-time)
required
integer,null
required
Session duration in milliseconds
integer
required
Number of function calls made during the session
integer
required
Number of transcript entries
object
required
integer
required
Number of sessions in this page
integer
required
Total sessions matching the current filters
integer
required
Total sessions for the tenant, unfiltered
object
required
Session counts keyed by status (e.g. active, completed)
object
required
object,null
required
The longest session matching the current filters, in the same shape as
sessions[] entries; null when there are no sessionsStatus codes
| Code | Meaning |
|---|---|
200 | List of voice sessions with filtered/overall totals, per-status counts, and aggregate stats |
401 | Unauthorized - invalid or missing bearer token |
500 | Internal server error |
503 | Database not configured - set DATABASE_URL |
curl --request GET \
--url 'https://api.voice.stateset.com/api/v1/voice-sessions' \
--header "Authorization: Bearer $STATESET_VOICE_API_KEY"
{
"ok": true,
"tenant": "acme-outdoors",
"sessions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stream_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"call_sid": "string",
"org_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"customer_phone": "+15555555678",
"agent_name": "string",
"call_type": "inbound",
"status": "completed",
"summary": "Two-person tent, green — replacement for damaged pole set.",
"transcript": null,
"rating": 1,
"sentiment": "string",
"tags": [],
"turn_count": 1,
"started_at": "2026-08-31T14:22:05Z",
"ended_at": "2026-08-31T14:22:05Z",
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z",
"duration_ms": 8,
"function_call_count": 1,
"transcript_length": 1,
"metadata": {}
}
],
"count": 2,
"filtered_total": 49,
"overall_total": 49,
"status_counts": {},
"stats": {
"total": 102,
"average_duration_ms": 7.5,
"total_duration_ms": 8,
"average_rating": 1.5
},
"longest_session": {}
}
Last modified on August 31, 2026