---
title: "List transcription jobs"
method: GET
path: "/v1/transcription/jobs"
tags: ["Transcription Jobs"]
---

# List transcription jobs

`GET /v1/transcription/jobs`

## Request

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

Cursor-paginated, newest first. Pass `limit` (1-100, default 20) and the `next_cursor` from the previous page as `cursor` to continue. `next_cursor` is null on the last page.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Jobs

- object
  - `object` string
  - `data` TranscriptionJob[]
    - `job_id` string, required
    - `status` 'queued' | 'running' | 'completed' | 'failed' | 'cancelled', required
    - `created_at` integer, required: Unix ms.
    - `updated_at` integer, required: Unix ms.
    - `result` TranscriptionJobResult: Completed async Hear result. The spoken language is auto-detected per call across the eight supported Hear languages and the transcript is returned in the detected language. This object does not currently return the detected language code.
      - `text` string, required: Complete transcript. Diarized results prefix segments with neutral speaker labels.
      - `speakers` integer, required: Number of distinct speaker labels in this result.
      - `audio_seconds` number, required: Decoded source duration in decimal seconds, including silence.
      - `segments` TranscriptionSegment[], required: Timestamped subtitle-ready spans. Segment boundaries may change when speaker assignment or the one-second readable-cue gap changes.
        - `id` integer, required: Zero-based segment index.
        - `start` number, required: Offset in decimal seconds from the start of the decoded source-media timeline. Silence is not removed or compacted; resampling and internal chunking do not shift later offsets.
        - `end` number, required: Offset in decimal seconds from the start of the decoded source-media timeline. Silence is not removed or compacted; resampling and internal chunking do not shift later offsets.
        - `text` string, required
        - `speaker` string: Neutral speaker label. With `channel: true`, `speaker_1` maps to channel 0 and `speaker_2` to channel 1; this is exact channel separation, not an inferred agent/customer role. With mono `diarize: true`, labels are model-derived and must not be treated as stable identities across separate jobs.
        - `channel` integer: Zero-based source channel. Present on `channel: true` results.
      - `words` TranscriptionWord[], required: Word-level timestamps when alignment is available. `smart_format` may attach case or punctuation without moving timestamps. Options that add or remove tokens (`dictation` and `drop_fillers`) clear this array when the rewritten words cannot be safely realigned.
        - `word` string, required: Recognized token. Punctuation may be attached when final-transcript formatting is enabled.
        - `start` number, required: Offset in decimal seconds from the start of the decoded source-media timeline. Silence is not removed or compacted; resampling and internal chunking do not shift later offsets.
        - `end` number, required: Offset in decimal seconds from the start of the decoded source-media timeline. Silence is not removed or compacted; resampling and internal chunking do not shift later offsets.
        - `confidence` number: Recognition confidence when supplied by the active Hear model. Omitted when unavailable.
        - `speaker` string: Neutral speaker label. With `channel: true`, `speaker_1` maps to channel 0 and `speaker_2` to channel 1; this is exact channel separation, not an inferred agent/customer role. With mono `diarize: true`, labels are model-derived and must not be treated as stable identities across separate jobs.
        - `channel` integer: Zero-based source channel. Present on `channel: true` results.
        - `entity` string: Normalized entity category when supplied, such as `phone_number`, `account_id`, or `date`.
      - `formats` object: Requested SRT/VTT format names mapped to short-lived signed GET URLs. JSON is the result object itself.
      - `trace` object: Present when the Trace add-on was requested.
        - `verdict` string
        - `n_pii` integer
        - `redacted` boolean
    - `result_url` string, uri: Signed GET URL for an offloaded large result.
    - `error` string: Human-readable normalized failure message on failed jobs. This field is not a stable machine-readable failure code.
  - `has_more` boolean: True if another page is available.
  - `next_cursor` string, nullable: Pass as `cursor` for the next page; null on the last page.

## 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/271a1539185b?raw)
