List call sessions
GET/v1/detect/sessions
Product: Noesis (call intelligence). URL: https://api.noesis.detectif.ai/v1/detect/sessions.
Lists your calls and file analyses, newest first. Filter with call_id to find the session of a provider call (Twilio callSid, Plivo callUuid, taken from the start message) or of your own call id. Page with limit and cursor. Requires scope noesis:read.
Authentication
Send your API key as Authorization: Bearer <your API key>.
Headers
| Name | Type | Details |
|---|---|---|
Authorizationrequired | string |
|
Query parameters
| Name | Type | Details |
|---|---|---|
call_idoptional | string or null | Only sessions of this call id (yours, or Twilio's callSid / Plivo's callUuid). at most 200 characters |
limitoptional | integer | How many sessions to return (1-100). 1 to 100default |
cursoroptional | string or null |
at most 256 characters |
Response
200 Success.
request_idstringrequiredobjectstringrequiredalways
"list"dataarray of objectrequired30 fields in
datarequest_idstring or nulltypestringdefault
"session"always"session"objectstringdefault
"noesis.session"always"noesis.session"session_idstringrequiredstream_session_idstring or nullThe session id in the socket's ready event (the id the analysis gave the call). session_id is the call's id in your account (the one a stream token returns and the usage event carries). Both work for lookups.
operation_idstring or nullstatusstringrequiredwaiting: the stream token was created but not used yet; active: the call is running; completed / interrupted / failed: the call ended.
One of:
waiting,expired,active,completed,interrupted,failedclosedbooleanrequiredcall_idstring or nullYour call id, or the provider's (Twilio callSid, Plivo callUuid).
transportstring or nullOne of:
websocket,fileorchestrationstring or nullbinary, json, twilio, plivo or file.
encodingstring or nullsample_rateinteger or nullchannelsinteger or nullrecordbooleanrequiredstarted_atstring or nullready_atstring or nullended_atstring or nullend_reasonstring or nullaudio_secondsnumberrequiredSeconds of the called person's audio received so far.
billed_secondsnumber or nullcredits_chargedinteger or nulllatestobject or nullThe latest classification event (live during the call).
eventsarray of objectClassification events, oldest first.
errorstring or nulllabelstring or nullThe answer: the final one after the call, the latest during it.
categorystring or nullconfidencenumber or nulldecidedboolean or nulltimelinearray of object or null
has_morebooleanrequirednext_cursorstring or nullrequired
Example response
{
"request_id": "req_8f14e45fceea167a5a36dedd",
"object": "list",
"data": [
{
"type": "session",
"object": "noesis.session",
"session_id": "5b2f0c9e8d7a4b6c9e1f2a3b4c5d6e7f",
"stream_session_id": "5b2f0c9e8d7a4b6c9e1f2a3b4c5d6e7f",
"operation_id": "op_6f1ed002ab5595859014ebf0951522d9",
"status": "completed",
"closed": true,
"call_id": "CA0123456789abcdef0123456789abcdef",
"transport": "websocket",
"orchestration": "twilio",
"encoding": "mulaw",
"sample_rate": 8000,
"channels": 1,
"record": true,
"started_at": "2026-10-19T09:30:00Z",
"ready_at": "2026-10-19T09:30:00Z",
"ended_at": "2026-10-19T09:31:12Z",
"end_reason": "client_end",
"audio_seconds": 71.4,
"billed_seconds": 71.4,
"latest": {
"type": "classification",
"seq": 1,
"version": 1,
"t": 4.2,
"label": "human",
"category": "human",
"confidence": 0.93,
"change": "initial",
"trigger": "speech",
"reason": "A person answered and greeted the caller."
},
"events": [
{
"type": "classification",
"seq": 1,
"version": 1,
"t": 4.2,
"label": "human",
"category": "human",
"confidence": 0.93,
"change": "initial",
"trigger": "speech",
"reason": "A person answered and greeted the caller."
}
],
"label": "human",
"category": "human",
"confidence": 0.93
}
],
"has_more": false
}Errors
| Status | Meaning |
|---|---|
| 400 | The request is invalid, for example an API key in the URL or an unsupported parameter. |
| 401 | The API key is missing, invalid or revoked. |
| 403 | The key lacks the required scope, the e-mail address is not verified, or the account is suspended. |
| 429 | Too many requests, or too many calls and file analyses at the same time. Wait for Retry-After seconds. |
| 500 | Something went wrong on our side. |
Error bodies share one shape with a stable error.code; see Errors for every code and how to fix it.
Code samples
curl "https://api.noesis.detectif.ai/v1/detect/sessions" \
-H "Authorization: Bearer $DETECTIF_API_KEY"import os
import requests
resp = requests.get(
"https://api.noesis.detectif.ai/v1/detect/sessions",
headers={"Authorization": f"Bearer {os.environ['DETECTIF_API_KEY']}"},
timeout=30,
)
print(resp.status_code, resp.json())const res = await fetch("https://api.noesis.detectif.ai/v1/detect/sessions", {
headers: {
Authorization: `Bearer ${process.env.DETECTIF_API_KEY}`,
},
});
console.log(res.status, await res.json());