---
title: "Get a job's status, progress, outputs, and result"
method: GET
path: "/api/v1/jobs/{id}"
tags: ["Jobs"]
---

# Get a job's status, progress, outputs, and result

`GET /api/v1/jobs/{id}`

## Request

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

## Path parameters

- `id` string, required

## Query parameters

- `wait` number

## Response `200`

OK

- object
  - `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

## 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)
