Sessions
List sessions
Lists practice-session summaries. Use the detail endpoint for transcript and evidence data.
GET
https://dash.trainertwin.com/api/v1
/
sessions
List sessions
curl --request GET \
--url https://dash.trainertwin.com/api/v1/sessions \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://dash.trainertwin.com/api/v1/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dash.trainertwin.com/api/v1/sessions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"sessions": [
{
"id": "session_123",
"personaSlug": "<string>",
"personaVersion": 123,
"agentSlug": "react-mock-interview",
"agentVersion": 123,
"domainSlug": "<string>",
"domainVersion": 123,
"status": "assigned",
"startedAt": "2023-11-07T05:31:56Z",
"userId": "user_123",
"mode": "chat",
"contextName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"total": 124
}
}{
"error": "Resource not found"
}{
"error": "Resource not found"
}{
"error": "Resource not found"
}Authorizations
Organization API key generated in Dashboard → account menu → Developer API (dash.trainertwin.com/developer).
Query Parameters
Available options:
assigned, activating, active, completed, abandoned, failed, revoked Filter by learner user ID.
Filter by published scenario slug.
Only include sessions started at or after this ISO 8601 timestamp.
Example:
"2026-09-01T00:00:00Z"
Only include sessions started at or before this ISO 8601 timestamp.
Example:
"2026-09-30T23:59:59Z"
Maximum number of records to return.
Required range:
1 <= x <= 100Number of records to skip.
Required range:
x >= 0⌘I
List sessions
curl --request GET \
--url https://dash.trainertwin.com/api/v1/sessions \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://dash.trainertwin.com/api/v1/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dash.trainertwin.com/api/v1/sessions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"sessions": [
{
"id": "session_123",
"personaSlug": "<string>",
"personaVersion": 123,
"agentSlug": "react-mock-interview",
"agentVersion": 123,
"domainSlug": "<string>",
"domainVersion": 123,
"status": "assigned",
"startedAt": "2023-11-07T05:31:56Z",
"userId": "user_123",
"mode": "chat",
"contextName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"total": 124
}
}{
"error": "Resource not found"
}{
"error": "Resource not found"
}{
"error": "Resource not found"
}