---
title: "List v2 conversations"
method: GET
path: "/v1/conversations"
tags: ["conversations"]
---

# List v2 conversations

`GET /v1/conversations`

## Query parameters

- `status` string, nullable
- `channel` string, nullable
- `end_user_id` string, uuid, nullable
- `assigned_agent_id` string, uuid, nullable
- `priority` string, nullable
- `started_after` string, date-time, nullable — Lower-bound (inclusive) on conversation ``started_at``.
- `started_before` string, date-time, nullable — Upper-bound (inclusive) on conversation ``started_at``.
- `q` string, nullable — Case-insensitive substring match on subject/summary.
- `eval_filter` 'has_evals' | 'no_evals' | 'all_passed' | 'any_failed', nullable
- `from_number` string, nullable — Originating phone number, matched as normalized E.164. On an inbound session this is the customer's caller ID; on an outbound one it is the platform number that dialed. Applies to voice and SMS.
- `to_number` string, nullable — Destination phone number, matched as normalized E.164. On an inbound session this is the platform number that was dialed; on an outbound one it is the customer's number. Applies to voice and SMS.
- `email` string, nullable — Sessions whose end user owns this email address (case-insensitive).
- `id` string, uuid, nullable — Exact-match lookup by session id.
- `external_session_id` string, nullable — Exact-match lookup by the caller-supplied external session id.
- `limit` integer
- `cursor` string, nullable

## Response `200`

Successful Response

- SrcSharedPaginationCursorPageSessionResponse1
  - `items` SrcConversationSchemasSessionResponse[], required
    - `id` string, uuid, required
    - `organization_id` string, uuid, required
    - `end_user_id` string, uuid, required
    - `channel` string, required
    - `surface` string, required
    - `external_session_id` string, nullable
    - `status` 'queued' | 'ringing' | 'active' | 'paused' | 'waiting_for_human' | 'transferred' | 'awaiting_approval' | 'pending_dispatch' | 'closed' | 'expired' | 'error' | 'superseded', required
    - `session_type` 'live' | 'test' | 'simulation'
    - `priority` 'low' | 'normal' | 'high' | 'urgent', required
    - `subject` string, nullable
    - `assigned_agent_id` string, uuid, nullable
    - `retention_policy_id` string, uuid, nullable
    - `summary` string, nullable
    - `metadata` object
    - `context_variables` object
    - `message_count` integer, required
    - `first_message_at` string, date-time, nullable
    - `last_message_at` string, date-time, nullable
    - `started_at` string, date-time, required
    - `ended_at` string, date-time, nullable
    - `closed_at` string, date-time, nullable
    - `ttl_expires_at` string, date-time, nullable
    - `retention_expires_at` string, date-time, nullable
    - `archived_at` string, date-time, nullable
    - `memory_sync_state` 'pending' | 'synced' | 'skipped' | 'suppressed'
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `duration_ms` integer, nullable
    - `summary_preview` string, nullable
    - `has_recording` boolean
    - `eval_summary` SessionEvalSummary — Rollup of eval runs that targeted a session. `succeeded` = runs where status='completed' AND every score has passed=true. `failed` = total - succeeded - pending (failed-status runs + completed-but-not-all-passed). `pending` = runs still queued or running. The `critical_*` counterparts restrict the same aggregation to runs whose binding was marked `is_critical=True` (snapshotted onto the run). They drive the session headline pill — non-critical evals still run and display but don't move the verdict. `eval_status` collapses the critical counts to a single headline label (`none` when no criticals are configured).
      - `total` integer
      - `succeeded` integer
      - `failed` integer
      - `pending` integer
      - `critical_total` integer
      - `critical_succeeded` integer
      - `critical_failed` integer
      - `critical_pending` integer
      - `eval_status` 'success' | 'partial' | 'failure' | 'pending' | 'none'
    - `test_features` TestSessionFeatures — Resolved, immutable snapshot persisted on a test conversation.
      - `version` 1
      - `identity_resolution` boolean, required
      - `memory` boolean, required
      - `summarization` boolean, required
      - `extraction` boolean, required
      - `evaluations` boolean, required
      - `knowledge_gap_analysis` boolean, required
    - `revision_id` string, uuid, nullable
    - `revision_name` string, nullable
    - `revision_version` integer, nullable
    - `team_revision_id` string, uuid, nullable
    - `team_revision_name` string, nullable
    - `from_number` string, nullable
    - `to_number` string, nullable
    - `email` string, nullable
  - `next_cursor` string, nullable
  - `has_more` boolean, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/5a5597ebb2d6/schema)
