Transcribe a recording with AI credits

Starts a speaker-labelled transcription of an audio or video file and bills the team's AI Credits. Answers 202 immediately and the work runs in the background; poll GET /api/partner/ai/transcribe/{id} for the result. A recording transcribes at roughly fifteen times faster than real time, so a two-hour demo is typically ready in under ten minutes.

mediaUrl must be an https URL the transcription provider can fetch directly, such as a presigned S3 / Cloudflare R2 link. Keep it valid for at least a few hours — a long recording can take a while — and keep the file under 2 GB. We never download the file ourselves.

Credits. Priced per whole audio minute. maxCredits from GET /api/partner/ai/credits is reserved when the job starts, and the job is settled against the duration the provider actually measures, so creditsCharged is usually lower than the credits reserved and is never higher. Both ends round up to a whole minute, but they round different numbers — the estimate rounds the durationSeconds you sent, the charge rounds the measured audio. Media often measures shorter than its container duration, so on a short clip the charge can come in a whole billable minute below the estimate. Show the estimate as an upper bound rather than a quote.

Send an accurate durationSeconds: the reservation is sized from it, but the charge is for the audio actually transcribed, so a materially understated duration is billed above what was reserved. A job that fails, or that never completes, charges nothing and returns the reservation. While a job is running, its reservation is excluded from the balance reported by GET /api/partner/ai/credits, so that figure is always what you can still spend.

Idempotency. An Idempotency-Key header is required (or idempotencyKey in the body). Retrying with the same key returns the same job instead of starting and charging for a second one. The key's identity ignores the media URL's query string, so re-signing the same object between retries is still the same request; pointing the same key at a different object is a 409.

Scope. Widget and OAuth tokens need use_ai. Manual API tokens with no scope list keep full partner access.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
uri
required

https URL of the audio or video to transcribe, fetchable by the provider without further credentials.

integer
required
1 to 21600

Duration of the media, used to size the credit reservation.

string | null

ISO-639 language code, e.g. "en". Detected automatically when omitted.

integer | null
1 to 32

Hint for how many speakers are present. Improves diarization when known.

string | null

Alternative to the Idempotency-Key header. The header wins if both are sent and they must agree.

Headers
string
required
length ≤ 255

Caller-chosen key identifying this transcription. Reusing it replays the original job.

Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json