Input Requirements
Your audio has to meet a few rules before a job can transcribe it. Most rules are the same for every API. The table shows where they differ. File types are on Supported File Types, language codes on Supported Languages, and error messages on Errors.
In the table, "URL job" is a Jobs API job created from an input_url, and "Upload" is a Jobs API job created from an uploaded file. "x402" covers both kinds of x402 job. "Edge" is the Edge API.
| Rule | URL job (Jobs API) | Upload | x402 | Edge |
|---|---|---|---|---|
| Audio length | 6 seconds to 24 hours | 6 seconds to 24 hours | 6 seconds to 24 hours, and no longer than your payment covers | Not checked |
| When length is checked | After the job is accepted | After the job is accepted | After the payment is accepted | Not applicable |
| File size | Not checked when you create the job | 2 GiB per file | URL job: not checked. Upload: 2 GiB per file | No limit set by Edge |
| File type | Not checked when you create the job | Content must be a supported type | URL job: not checked. Upload: content must be a supported type | Not checked |
| File name | Not applicable | Must end in a supported extension | Upload: any name | Any name |
Audio Length
The Jobs API and the x402 API need audio between 6 seconds and 24 hours long. They measure the audio after they accept the request, so a file outside that range doesn't return an error when you send it. The job fails instead. A failed job isn't billed, and an x402 payment is refunded. See Failures After a Job Is Accepted for the messages.
An x402 quote request must include input_duration, the length in seconds as a JSON number from 6 to 86400. A job fails if its audio is longer than the duration your payment covers, which is at least input_duration. See Payments and Refunds.
File Size
An upload can be up to 2 GiB. The limit applies to the file, not to the whole request. An upload request can stay open for up to one hour. An x402 upload over the limit fails and the payment is refunded. The API-key upload endpoint doesn't reject a larger file: it keeps the first 2 GiB and transcribes only that part, so split or compress files over the limit before you upload them. See Uploaded file exceeds the size limit..
URL jobs have no size check when you create the job. The Edge API sets no limit, but it reads the whole file into memory, so use the Jobs API for large files.
URLs
These rules apply to jobs that take an input_url: Jobs API URL jobs and x402 URL jobs.
- Use a public
httporhttpsURL that downloads without a login. x402 also rejects a URL that contains credentials. - The file is downloaded when the job runs, not when you create it. Keep the URL valid until the job completes.
- The Jobs API checks the URL when you create the job. It sends a
HEADrequest and, if that returns a status other than 2xx, aGETrequest. Each request waits up to 10 seconds and follows redirects. If theHEADrequest can't connect or times out, the API doesn't tryGET. A URL that fails the check returns400 Bad RequestwithInput URL is not reachable. - x402 checks the URL after it accepts your payment instead. A URL that fails the check ends the purchase, and the payment is refunded. See
Input media could not be reached.
To send a local file instead, use an upload (Jobs API or x402). The API doesn't issue upload URLs.
Pre-Signed URLs
You can use a pre-signed URL from your storage provider as the input_url:
- Sign it for
GET. If theHEADcheck is rejected, the API triesGET, so a URL signed only forGETpasses. - Give it a lifetime that covers the whole job, not just the create request.
- The completed job includes the URL in
output.request.input_url, and anyone with the job ID can read it. To keep a signed URL out of the result, create the job withis_private, which also deletes the transcript after 12 hours. Otherwise, use a URL that expires soon after the job completes.
Uploads
These rules apply to the upload endpoints of the Jobs API (Upload a File) and the x402 API (Upload a File).
- The upload endpoint reads the file's content, not its extension or its
Content-Typeheader. It accepts the MIME types listed on Supported File Types. Other content returnsUnsupported file type detected. - Name the file with a supported extension:
.mp3,.wav,.m4a,.flac,.ogg,.opus,.webm, or.mp4, in any letter case. The Jobs API upload keeps the extension from your file name, and the service can serve only files with these extensions to the transcriber. A file with another extension, or none, such as.m4b,.mpeg, oraudio, passes the content check and then fails withAPI call failed: 400 - Input URL is not reachable. x402 uploads aren't affected, because the service names the file from its detected type. - The service deletes uploaded files after about an hour.