Admin guide

Pricing by modality

Every rate card is per million tokens — here is how each kind of model actually bills, and what to type in.

One rate card, many billing models

Janus prices every request from its rate card in USD per million tokens, using the token counts the upstream reports. That is the native unit for chat and embeddings, but providers quote speech, transcription, image and realtime models in their own units — per minute, per character, per image tier. The tables below show each modality in the shape its provider publishes, with the per-1M-token figure to enter in Janus highlighted.

Figures are illustrative public list prices at the time of writing; check the provider’s pricing page before relying on attribution. A rate card with the wrong denominator is the most common cause of a bill that does not reconcile.

Chat and embeddings

Text models are the straightforward case: the provider bills the same units the rate card uses. Enter input, output and cached-input rates as published; leave cache-write rates empty unless the provider bills them (Anthropic does).

Text models USD per 1M tokens
ModelInputCached inputOutput
gpt-4o2.501.2510.00
gpt-4o-mini0.150.0750.60
claude-sonnet-43.000.3015.00
text-embedding-3-small0.02——

Voice (text-to-speech)

Speech models are quoted two ways. Token-native models (gpt-4o-mini-tts) bill text input and audio output per million tokens, which the provider also expresses as an approximate per-minute cost. Janus can meter them only when the caller streams with stream_format: sse, whose final event reports the tokens; a plain audio response carries no usage.

A speech response with no usage, which includes every response from character-billed models (tts-1, tts-1-hd), is recorded as not metered (unmetered_modality) with zero tokens and zero cost, so a rate card has no effect on it; attribution for those requests depends on the provider’s invoice.

Text-to-speech USD, in the unit the provider quotes; the last column is what to enter, per 1M tokens
ModelBilledProvider unitRateJanus rate card
gpt-4o-mini-tts TextText inputper 1M tokens0.600.60 in
AudioAudio outputper 1M tokens (≈ 0.015 / min)12.0012.00 out
tts-1 CharsInput textper 1M characters15.00not metered
tts-1-hd CharsInput textper 1M characters30.00not metered

Audio-token models: roughly 1 minute of speech ≈ 1,250 audio tokens, so a per-minute quote × 800 gives the per-1M-token rate.

Image generation

Image models bill several modalities on one request: text input (the prompt), image input (edits and references) and image output. The provider publishes each as its own per-1M-token rate, so a model appears as a block with one sub-row per modality. Batch pricing is a separate tier at half price — use the tab that matches how your callers submit work. A Janus rate card has one input rate, so text and image input are priced at the same rate: enter the image-input rate if most requests are edits, otherwise the text rate. Image output is priced as output tokens. When a provider reports the request cost directly, that figure is used instead (accounting method upstream_reported_cost).

An image response that reports neither token usage nor a cost is recorded as not metered (unmetered_modality); check the provider’s invoice for those requests.

Image generation USD per 1M tokens

Standard

Model / modalityInputCached inputOutput
gpt-image-1 Text5.001.25—
Image10.002.5040.00
gpt-image-1-mini Text2.000.20—
Image2.500.258.00

Batch

Model / modalityInputCached inputOutput
gpt-image-1 Text2.50——
Image5.00—20.00
gpt-image-1-mini Text1.00——
Image1.25—4.00

Per-image list prices (e.g. 0.04 for a 1024×1024 medium-quality image) are what these token rates work out to.

Transcription (speech-to-text)

Transcription is quoted per minute of audio. Token-native models (gpt-4o-transcribe) also publish per-1M-token rates for audio input and text output, which map directly onto a Janus rate card. Minute-billed models (whisper-1) report seconds of audio, which Janus records as one input unit per started second: enter the per-second price × 1,000,000 as the input rate (0.006 per minute = 100.00). Response formats that return plain text (text, srt, vtt) carry no usage, so Janus estimates output from the transcript’s length and records no input.

Speech-to-text USD; per-minute is the provider’s estimate, audio-in and text-out are per 1M tokens
ModelUse casePer minuteAudio inText out
gpt-4o-transcribeAccuracy0.0062.5010.00
gpt-4o-mini-transcribeCost0.0031.255.00
whisper-1Per second of audio0.006100.00—

Realtime (speech-to-speech)

Janus does not proxy Realtime sessions. They run over WebSocket or WebRTC, which the gateway does not carry, so realtime models cannot be used through Janus and their usage never reaches the request log. The provider’s rates are shown below for reference only.

Realtime API USD per 1M tokens
Model / modalityInputCached inputOutput
gpt-realtime Text4.000.4016.00
Audio32.000.4064.00
Image5.000.50—
gpt-realtime-mini Text0.600.062.40
Audio10.000.3020.00