---
title: "List Agent Sessions"
method: GET
path: "/v1/agent/sessions"
tags: ["Agent Sessions"]
---

# List Agent Sessions

`GET /v1/agent/sessions`

## Request

- Base URL: `https://api.fish.audio`
- URL: `https://api.fish.audio/v1/agent/sessions`
- Auth: HTTP bearer

List your team's sessions, newest first. Filter by agent, status, end
reason, caller number, SIP Call-ID, end user ID, call_sid, or creation
time. Paginate with `cursor` (recommended; follow `next_cursor` while
`has_more` is true) or with `page` for offset pagination with a `total`
count. The two are mutually exclusive.

## Query parameters

- `agent_id` string, nullable
- `status` string, nullable
- `end_reason` string, nullable
- `direction` string, nullable
- `caller_number` string, nullable
- `sip_call_id` string, nullable
- `end_user_id` string, nullable
- `call_sid` string, nullable
- `created_after` string, nullable
- `created_before` string, nullable
- `cursor` string, nullable
- `page` integer, nullable
- `include_total` boolean
- `page_size` integer

## Response `200`

Request fulfilled, document follows

- object
  - `sessions` AgentSessionSummary[], required
    - `session_id` string, required
    - `agent_id` string, required
    - `agent_name` string, required
    - `name` string, nullable
    - `end_user_id` string, nullable
    - `status` 'pending' | 'active' | 'completed' | 'failed' | 'unknown', required
    - `end_reason` 'user_hangup' | 'agent_hangup' | 'escalated' | 'conversation_timeout' | 'heartbeat_timeout' | 'agent_join_timeout' | 'internal_error' | 'llm_endpoint_failure' | 'room_join_timeout' | 'cancelled' | 'dial_failed', nullable
    - `source` 'api_key' | 'dashboard' | 'public' | 'phone' | 'whatsapp', required
    - `direction` 'inbound' | 'outbound'
    - `dial_status` 'answered' | 'busy' | 'no_answer' | 'failed', nullable
    - `answered_by` 'human' | 'voicemail' | 'unknown', nullable
    - `caller_number` string, nullable
    - `dialed_number` string, nullable
    - `sip_call_id` string, nullable
    - `call_sid` string, nullable
    - `timezone` string, nullable
    - `created_at` string, required
    - `started_at` string, nullable
    - `ended_at` string, nullable
    - `duration_seconds` integer, nullable
    - `participant_identity` string, nullable
    - `agent_participant_identity` string, nullable
    - `agent_joined_at` string, nullable
    - `metadata` object
    - `content_purged_at` string, nullable
    - `keypad_menu` AgentSessionKeypadMenu: How the keypad menu of an inbound phone call ended. `outcome` is `selected` when the caller chose an option, `no_input` or `no_match` when no attempt got a valid choice (the last one had no input, or input matching no option), and `skipped` when the menu could not run (a resumed conversation or no SIP caller). `value` is what the menu variable received: the chosen option's value, or the fallback value when the caller never made a valid choice.
      - `outcome` 'selected' | 'no_input' | 'no_match' | 'skipped', required
      - `variable` string, required
      - `value` string, required
      - `key` string, nullable
      - `input` 'dtmf' | 'speech', nullable
      - `attempts` integer
      - `completed_at` string, date-time, nullable
  - `has_more` boolean, required
  - `next_cursor` string, nullable
  - `total` integer, nullable

## Other responses

- `400`: Bad request syntax or unsupported method
- `401`: No permission -- see authorization schemes
- `503`: The server cannot process the request due to a high load

## Changes

- **2026-11-03** `42ac421f7a12`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fish/apis/fishaudio-openapi/changes/v1/agent/sessions/get.md)

---

[API](https://skmtc.dev/fish/apis/fishaudio-openapi.md) - [All operations](https://skmtc.dev/fish/apis/fishaudio-openapi/llms.txt) - [OpenAPI document](https://skmtc.dev/fish/apis/fishaudio-openapi/revisions/42ac421f7a12?raw)
