---
title: "List Omni call records"
method: GET
path: "/v1/omni/calls"
tags: ["Omni"]
---

# List Omni call records

`GET /v1/omni/calls`

## Request

- Base URL: `https://api.pyai.com`
- URL: `https://api.pyai.com/v1/omni/calls`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Recent Omni realtime sessions for this org, newest first. Each record has one stable, opaque PyAI call identifier plus recording and summary availability. Use that same `call_id` for detail, recording, transcript, and summary reads. Requires the `omni:read` scope. Filter by `session_label` (the opaque tag you passed on the connect URL).

## Query parameters

- `limit` integer
- `cursor` string
- `session_label` string

## Response `200`

Paginated Omni call list

- OmniCallList
  - `object` string
  - `data` OmniCallListItem[]
    - `object` string
    - `call_id` string: Stable opaque PyAI-owned call identifier. Use it unchanged across every Omni call sub-resource.
    - `session_label` string, nullable: The opaque tag passed on the connect URL, if any.
    - `external_id` string, nullable: Customer-supplied correlation id echoed from the call's `meta` (the engine carries `configure.meta` into the ingest). Use it to join a call to your own record; null when none was set.
    - `status` 'completed' | 'failed'
    - `duration_s` number, nullable
    - `language` 'en' | 'fr' | 'es' | 'de' | 'hi' | 'zh' | 'it' | 'pt' | 'ja' | 'ko': Language the session was served in. Call history also retains languages used in private qualification; record recognition does not enable those languages for public agent configuration. Older records render the default, `en`.
    - `voice_tier` 'standard' | 'natural': Voice tier served for the session. English `en1` sessions report `natural` while that tier is active; Standard voices report `standard`. Both are included in the Omni base rate with no voice-tier add-on. Inspect the configured acknowledgement and call record rather than inferring the served tier from the requested alias.
    - `has_recording` boolean
    - `has_summary` boolean
    - `started_at` integer, nullable: Unix ms when the session started.
    - `created_at` integer: Unix ms when the record was written.
  - `has_more` boolean
  - `next_cursor` string, nullable

## Other responses

- `401`: Missing or invalid API key (`code: unauthorized`)

---

[API](https://skmtc.dev/pyai/apis/pyai-api.md) · [All operations](https://skmtc.dev/pyai/apis/pyai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pyai/apis/pyai-api/revisions/819d8e7c4d09?raw)
