ResourcesSessions

Sessions

Create, list, update, and end desktop sessions through the Talkturo API — manage real-time coaching sessions for the Close AI desktop app.

curl --request GET \
  --url "https://app.talkturo.com/api/sessions" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt" \
  --header "X-Talkturo-Account: acc_northstar_sales"
{
  "sessions": [
    {
      "id": "f9c5808d-e1da-4f1f-b1f0-d0b2f9923fc6",
      "user_id": "7f4f95a3-9f14-4f59-a9d4-e7b9250996de",
      "uid": "sess_8h1r2m4q",
      "account_id": "c2f8de7d-1f57-4388-b4f1-3102a5d34518",
      "title": "Discovery call with Greenline Solar",
      "session_type": "listen",
      "started_at": "2026-02-18T15:04:11.000Z",
      "ended_at": "2026-02-18T15:42:39.000Z",
      "status": "completed",
      "duration_seconds": 2308,
      "updated_at": "2026-02-18T15:43:05.000Z"
    },
    {
      "id": "3be8aaea-a2c8-466f-9984-b8780b3d6a50",
      "user_id": "7f4f95a3-9f14-4f59-a9d4-e7b9250996de",
      "uid": "sess_j7k2p9vn",
      "account_id": "c2f8de7d-1f57-4388-b4f1-3102a5d34518",
      "title": null,
      "session_type": "ask",
      "started_at": "2026-02-18T16:10:02.000Z",
      "ended_at": null,
      "status": "active",
      "duration_seconds": null,
      "updated_at": "2026-02-18T16:10:02.000Z"
    }
  ]
}
curl --request POST \
  --url "https://app.talkturo.com/api/sessions" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt" \
  --header "X-Talkturo-Account: acc_northstar_sales" \
  --header "Content-Type: application/json" \
  --data '{
    "mode": "create",
    "session_type": "listen"
  }'
{
  "id": "3be8aaea-a2c8-466f-9984-b8780b3d6a50"
}
curl --request GET \
  --url "https://app.talkturo.com/api/sessions/f9c5808d-e1da-4f1f-b1f0-d0b2f9923fc6" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt"
{
  "session": {
    "id": "f9c5808d-e1da-4f1f-b1f0-d0b2f9923fc6",
    "user_id": "7f4f95a3-9f14-4f59-a9d4-e7b9250996de",
    "uid": "sess_8h1r2m4q",
    "account_id": "c2f8de7d-1f57-4388-b4f1-3102a5d34518",
    "title": "Discovery call with Greenline Solar",
    "session_type": "listen",
    "status": "completed",
    "notes": "Strong discovery questions. Missed budget confirmation.",
    "voice_metrics": {
      "talk_share_pct": 46,
      "wpm": 132,
      "patience_pct": 82,
      "longest_monologue_seconds": 38
    },
    "started_at": "2026-02-18T15:04:11.000Z",
    "ended_at": "2026-02-18T15:42:39.000Z",
    "duration_seconds": 2308,
    "updated_at": "2026-02-18T15:43:05.000Z",
    "created_at": "2026-02-18T15:04:11.000Z"
  }
}
curl --request PATCH \
  --url "https://app.talkturo.com/api/sessions/f9c5808d-e1da-4f1f-b1f0-d0b2f9923fc6" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt" \
  --header "Content-Type: application/json" \
  --data '{
    "title": "Discovery call with Greenline Solar",
    "status": "completed",
    "notes": "Strong discovery questions. Missed budget confirmation.",
    "voice_metrics": {
      "talk_share_pct": 46,
      "wpm": 132,
      "patience_pct": 82,
      "longest_monologue_seconds": 38
    },
    "end": true
  }'
{
  "changes": 1
}
curl --request DELETE \
  --url "https://app.talkturo.com/api/sessions/f9c5808d-e1da-4f1f-b1f0-d0b2f9923fc6" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt"
{
  "deleted": true
}
curl --request POST \
  --url "https://app.talkturo.com/api/sessions/end-all" \
  --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.desktopjwt"
{
  "changes": 2
}

Endpoint summary

MethodPathPurposeAuth
GET/api/sessionsList desktop sessionsDesktop JWT
POST/api/sessionsCreate a sessionDesktop JWT
GET/api/sessions/{id}Get a session by IDDesktop JWT
PATCH/api/sessions/{id}Update or end a sessionDesktop JWT
DELETE/api/sessions/{id}Delete a sessionDesktop JWT
POST/api/sessions/end-allEnd all active sessionsDesktop JWT

Authenticate every request with a desktop JWT in the Authorization header. To scope requests to a specific workspace, add the optional X-Talkturo-Account header.

List sessions

Return the desktop sessions available to the authenticated user.

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

header
X-Talkturo-Accountstring

Workspace scope for the request. Omit this header to use the default workspace available to the authenticated desktop user.

Response fields

sessionsarray
Required

Array of session objects visible to the authenticated user.

sessions[].idstring
Required

Unique session UUID.

sessions[].user_idstring
Required

UUID of the user who owns the session.

sessions[].uidstring
Required

Client-facing session identifier used by the desktop app.

sessions[].account_idstring
Required

Workspace UUID associated with the session.

sessions[].titlestring|null
Required

Optional session title.

sessions[].session_typestring
Required

Session mode. Values are ask and listen.

sessions[].started_atstring
Required

Session start time in ISO 8601 format.

sessions[].ended_atstring|null
Required

Session end time in ISO 8601 format, or null while the session is still active.

sessions[].statusstring
Required

Current session status. Values are active and completed.

sessions[].duration_secondsnumber|null
Required

Computed session duration in seconds. Returns null until the session ends.

sessions[].updated_atstring
Required

Last update time in ISO 8601 format.

Errors

StatusMeaning
401Missing or invalid desktop JWT
500Server error

Create session

Create a new desktop session, or return the existing active session when you use getOrCreateActive.

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

header
X-Talkturo-Accountstring

Workspace scope for the new session.

Body parameters

body
modestring

Session creation mode. Defaults to create. Use getOrCreateActive to reuse an existing active session instead of creating a new one.

Allowed values:creategetOrCreateActive
body
session_typestring

Session type for the desktop app. Defaults to ask.

Allowed values:asklisten

Response fields

idstring
Required

UUID of the created session, or the active session returned by getOrCreateActive.

Errors

StatusMeaning
400Invalid request body
401Missing or invalid desktop JWT
500Server error

Get session

Return a single session by ID.

Path parameters

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

Response fields

sessionobject
Required

Session record for the requested ID.

session.idstring
Required

Unique session UUID.

session.user_idstring
Required

UUID of the user who owns the session.

session.uidstring
Required

Client-facing session identifier used by the desktop app.

session.account_idstring
Required

Workspace UUID associated with the session.

session.titlestring|null
Required

Optional session title.

session.session_typestring
Required

Session mode. Values are ask and listen.

session.statusstring
Required

Current session status. Values are active and completed.

session.notesstring|null
Required

Optional session notes saved on the record.

session.voice_metricsobject|null
Required

Aggregated voice coaching metrics for the session, if available.

session.voice_metrics.talk_share_pctnumber

Percentage of session talk time attributed to the user.

session.voice_metrics.wpmnumber

Estimated speaking rate in words per minute.

session.voice_metrics.patience_pctnumber

Patience score expressed as a percentage.

session.voice_metrics.longest_monologue_secondsnumber

Longest uninterrupted speaking segment in seconds.

session.started_atstring
Required

Session start time in ISO 8601 format.

session.ended_atstring|null
Required

Session end time in ISO 8601 format, or null if the session is active.

session.duration_secondsnumber|null
Required

Computed session duration in seconds.

session.updated_atstring
Required

Last update time in ISO 8601 format.

session.created_atstring
Required

Creation time in ISO 8601 format.

Errors

StatusMeaning
401Missing or invalid desktop JWT
404Session not found
500Server error

Update session

Update mutable fields on a session. Set end to true to complete the session, stamp ended_at, compute duration_seconds, and trigger background AI analysis.

Ending a session is a state change, not a soft preview. When you send end: true, the API marks the session as completed and starts post-session analysis in the background.

Path parameters

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

Body parameters

body
titlestring

Session title.

body
session_typestring

Session mode.

Allowed values:asklisten
body
statusstring

Session status.

Allowed values:activecompleted
body
notesstring

Free-form notes attached to the session.

body
voice_metricsobject

Voice coaching metrics to store on the session.

talk_share_pctnumber

Percentage of session talk time attributed to the user. Nested under voice_metrics.

wpmnumber

Estimated speaking rate in words per minute. Nested under voice_metrics.

patience_pctnumber

Patience score expressed as a percentage. Nested under voice_metrics.

longest_monologue_secondsnumber

Longest uninterrupted speaking segment in seconds. Nested under voice_metrics.

body
endboolean

When true, ends the session, sets ended_at, changes status to completed, computes duration_seconds, and triggers background AI analysis.

Response fields

changesnumber
Required

Number of rows updated.

Errors

StatusMeaning
400Invalid request body
401Missing or invalid desktop JWT
404Session not found
500Server error

Delete session

Delete a session by ID.

Path parameters

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

Response fields

deletedboolean
Required

Returns true when the session was deleted.

Errors

StatusMeaning
401Missing or invalid desktop JWT
500Server error

End all active sessions

Complete every active session available to the authenticated desktop user.

This endpoint ends all active sessions in scope for the authenticated user. Review your workspace scoping before calling it from automation or shutdown handlers.

Headers

header
Authorizationstring
Required

Bearer token containing a desktop JWT.

Response fields

changesnumber
Required

Number of active sessions that were ended.

Errors

StatusMeaning
401Missing or invalid desktop JWT
500Server error