---
title: "Transcribe, free for the first 2 minutes"
method: POST
path: "/api/try/transcribe"
tags: ["Free API"]
---

# Transcribe, free for the first 2 minutes

`POST /api/try/transcribe`

## Request

- Base URL: `https://audo.ai`
- URL: `https://audo.ai/api/try/transcribe`
- Auth: one of:
  - none
  - HTTP bearer

Free for the first 2 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.02/min, 2 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. 

    curl -F file=@interview.mp3 -F format=srt https://audo.ai/api/try/transcribe -D response.headers -o response.body

## Query parameters

- `format` 'json' | 'srt' | 'vtt' | 'txt'

## Headers

- `Prefer` string
- `Idempotency-Key` string

## Request body

- union
  - object
    - `url` string, uri, required: A public HTTPS link that Audo fetches
    - `file_token` string: Or the fileToken of an upload from POST /api/try/uploads
    - `language` string: The spoken language, as a code such as en or ja. Default: detected.
    - `verbatim` boolean: Keeps filler words such as um and uh, so they can be cut later. Default true.
    - `speaker_labels` boolean: Labels who speaks when: Speaker 1, Speaker 2, and so on, in the order they first speak, up to 8 people. No names. Default true.
    - `max_credits` integer: With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.
    - `free` boolean: With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.
    - `format` 'json' | 'srt' | 'vtt' | 'txt': What to return: json, srt, vtt, txt. Also accepted in the query string
  - object
    - `url` string, uri: A public HTTPS link that Audo fetches
    - `file_token` string, required: Or the fileToken of an upload from POST /api/try/uploads
    - `language` string: The spoken language, as a code such as en or ja. Default: detected.
    - `verbatim` boolean: Keeps filler words such as um and uh, so they can be cut later. Default true.
    - `speaker_labels` boolean: Labels who speaks when: Speaker 1, Speaker 2, and so on, in the order they first speak, up to 8 people. No names. Default true.
    - `max_credits` integer: With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.
    - `free` boolean: With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.
    - `format` 'json' | 'srt' | 'vtt' | 'txt': What to return: json, srt, vtt, txt. Also accepted in the query string

## Response `200`

The transcript: JSON by default, or the format asked for

- object

## Other responses

- `202`: The job is still running. Check on it at the Location header's link
- `429`: Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid
- `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)
