Skip to main content
POST
Estimate the price of a transcription request
Estimate the cost of an audio/video transcription job before submitting it. Quote from one of three inputs: source_url, source_file, or a bare duration_seconds.
Pass the same flags you will pass to the job. ts_level: "word", diarize (which implies include_ts) and include_metadata can all raise the price. A quote that omits them comes in under what you are actually charged. include_ts on its own does not: segment-level timing is included in the base price.

Quoting from duration_seconds

This mode never fetches the source, so it cannot see which platform the media comes from. On models that price per platform — and on TikTok, which is priced from a fixed length-band card rather than by the hour — pass platform alongside the duration:
Without platform, the quote uses the model base rate with no duration-band rounding.
platform: "tiktok" is only valid with model: "WhisperLargeV3Ct2" — that is the only model that transcribes TikTok. Paired with any other model it is rejected with 422, the same way the job itself would be. See Audio/Video Transcription.

What WhisperLargeV3Ct2 costs

The quote is built in three steps, in this order:
  1. Base amount — the TikTok length band for TikTok sources, otherwise the duration rate.
  2. Timestamps — segment-level timing is included in the base amount, so include_ts: true with the default ts_level: "segment" does not change the quote. The base amount is multiplied by 1.5 only when ts_level is word, or when diarize is set — diarization carries the surcharge at any granularity, segment included.
  3. Metadata — if include_metadata is set on a source that can return it, a flat 0.005 is added after the multiplication.

Authorizations

Authorization
string
header
required

Sanctum personal access token, sent as Authorization: Bearer <token>. The token is opaque — it carries no claims and no embedded expiry, so do not attempt to decode it. Issue and revoke tokens from your account dashboard.

Headers

Accept
enum<string>
default:application/json
required
Available options:
application/json

Body

multipart/form-data

Transcription price calculation parameters

Exactly ONE input source per request — source_url, source_file or duration_seconds — hence the three variants below. They are mutually exclusive, not a menu of optional fields: sending two of them is a 422. platform belongs to the duration_seconds variant alone; with a URL or an upload the platform is derived from the source itself and passing it is rejected. Everything else (include_ts, ts_level, include_metadata, diarize, lang, model) applies to all three.

source_url
string
required

URL of video/audio to estimate price for. Mutually exclusive with source_file and duration_seconds; platform must NOT be sent with it, as it is derived from the URL.

Example:

"https://www.youtube.com/watch?v=jNQXAC9IVRw"

model
string
required

The model to use for transcription.

Example:

"WhisperLargeV3"

include_ts
boolean | null
default:false

Should transcription include timestamps. Implied when diarize is true. Whether it raises the quote depends on ts_level — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.

Example:

false

ts_level
enum<string> | null
default:segment

Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: segment is included in the base price, while word and char carry a surcharge.

Available options:
segment,
word,
char,
null
Example:

"word"

include_metadata
boolean | null
default:false

Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.

Example:

false

diarize
boolean | null
default:false

Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies include_ts and carries the timestamp surcharge at ANY granularity, including segment.

Example:

false

lang
string | null

Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published info.limits.languages is rejected.

Maximum string length: 16
Example:

"en"

Response

Calculated price for transcription.

data
object