Skip to main content

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.

RuleURL job (Jobs API)Uploadx402Edge
Audio length6 seconds to 24 hours6 seconds to 24 hours6 seconds to 24 hours, and no longer than your payment coversNot checked
When length is checkedAfter the job is acceptedAfter the job is acceptedAfter the payment is acceptedNot applicable
File sizeNot checked when you create the job2 GiB per fileURL job: not checked. Upload: 2 GiB per fileNo limit set by Edge
File typeNot checked when you create the jobContent must be a supported typeURL job: not checked. Upload: content must be a supported typeNot checked
File nameNot applicableMust end in a supported extensionUpload: any nameAny 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 http or https URL 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 HEAD request and, if that returns a status other than 2xx, a GET request. Each request waits up to 10 seconds and follows redirects. If the HEAD request can't connect or times out, the API doesn't try GET. A URL that fails the check returns 400 Bad Request with Input 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 the HEAD check is rejected, the API tries GET, so a URL signed only for GET passes.
  • 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 with is_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-Type header. It accepts the MIME types listed on Supported File Types. Other content returns Unsupported 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, or audio, passes the content check and then fails with API 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.