---
title: "List jobs, newest first"
method: GET
path: "/api/v1/jobs"
tags: ["Jobs"]
---

# List jobs, newest first

`GET /api/v1/jobs`

## Request

- Base URL: `https://audo.ai`
- URL: `https://audo.ai/api/v1/jobs`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Secure-audo.session_token`

## Query parameters

- `cursor` string
- `limit` integer
- `tool` 'remove_noise' | 'enhance_voice' | 'transcribe_audio' | 'align_script' | 'cut_audio' | 'remove_silence' | 'adjust_loudness' | 'convert_audio' | 'join_audio' | 'replace_audio' | 'analyze_audio' | 'remove_fillers' | 'level_speakers' | 'mix_tracks'

## Response `200`

OK

- object
  - `data` object[], required
    - `id` string, required
    - `tool` 'remove_noise' | 'enhance_voice' | 'transcribe_audio' | 'align_script' | 'cut_audio' | 'remove_silence' | 'adjust_loudness' | 'convert_audio' | 'join_audio' | 'replace_audio' | 'analyze_audio' | 'remove_fillers' | 'level_speakers' | 'mix_tracks', required
    - `status` 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'held', required
    - `progress` integer, required: How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start
    - `stage` 'queued' | 'preparing' | 'processing' | 'finishing' | 'succeeded' | 'failed' | 'cancelled' | 'held', required: Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)
    - `estimatedSecondsLeft` integer, nullable, required: About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended
    - `waitingForWorker` boolean, required: True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first
    - `inputFileIds` string[], required: The main input first
    - `outputFileIds` string[], required: The main output first, once the job succeeds
    - `free` boolean, required: A free job processes only the first part of its input, at no cost
    - `processedSeconds` number, required: How much of the input the job processes
    - `quotedCredits` integer, required
    - `chargedCredits` integer, nullable, required: Set when the job succeeds
    - `result` object, nullable, required: The tool's details, such as loudness before and after
    - `error` object, nullable, required
      - `code` string, required
      - `message` string, required
    - `createdAt` string, required: ISO 8601 time
    - `startedAt` string, nullable, required: ISO 8601 time
    - `finishedAt` string, nullable, required: ISO 8601 time
    - `finishUrl` string, nullable: A job held for payment: the page where the whole file can run, or null once its files are gone
  - `nextCursor` string, nullable, required

## Other responses

- `default`: An error, with what went wrong and what to do next

---

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