WiozenAPI

How much does a speech-to-text API cost, and how is it billed per minute?

In short: Transcription on the Wiozen API is billed per minute of audio. As of November 2, 2026, the whisper-large-v3 model costs $0.003 a minute, so an hour of audio comes to $0.18. The duration is rounded up to the next second and multiplied by the per-minute price; no tokens are counted. Current prices are on the Models page.

How is the price calculated?

Chat models are priced per token. Transcription counts the length of the audio instead. The formula: take the duration in seconds, round it up to a whole number, divide by 60 and multiply by the per-minute price. The length of the resulting text, the language and how fast people talk don't change the amount.

Audio lengthBilled durationCost ($0.003/min)
12.3 seconds13 seconds$0.00065
45 seconds45 seconds$0.00225
10 minutes 30 seconds630 seconds$0.0315
1 hour3,600 seconds$0.18

Rounding is to the second, not the minute. A 61-second recording isn't billed as two minutes; it's billed as 61 seconds. So sending many short files costs almost the same in total, with at most one second of difference per file.

Where does the duration come from?

The duration is read from the file's own header before the file is processed. Supported formats are wav, mp3, m4a, mp4, ogg, flac and webm. If no duration can be read from the header, the request is rejected with 400 Could not determine audio duration and isn't charged. If you get that error, convert the file to one of the formats above (mp3, for example) and send it again.

When the transcription service also reports a duration at the end, it's compared with the header value and the larger one is billed. For a normal file the two are the same. The difference only shows up with files whose header understates the length.

How do I send a request?

The endpoint is POST /v1/audio/transcriptions. The body must be multipart/form-data with two required fields: file (the audio) and model. A request with a JSON body gets 400.

terminal
curl https://api.wiozen.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $API_KEY" \
  -F model=whisper-large-v3 \
  -F [email protected]

By default the response is a JSON object with just a text field: {"text": "..."}. If you use an OpenAI-compatible client library, set the base URL to https://api.wiozen.com/v1 and its transcription call goes to the same endpoint. The setup is in the OpenAI-compatible API guide.

Working out the cost before you send

Because the formula is simple, you can work out the amount on your side before sending the file. Get the duration from an audio library or ffprobe and pass it to this function:

Python
import math

PRICE_PER_MINUTE = 0.003  # per-minute price from the Models page

def transcription_cost(seconds: float) -> float:
    # Duration is rounded up to the second, then multiplied by the per-minute price.
    return round(math.ceil(seconds) * PRICE_PER_MINUTE / 60, 6)

print(transcription_cost(12.3))   # 0.00065
print(transcription_cost(630))    # 0.0315
print(transcription_cost(3600))   # 0.18

The amount actually charged shows up on the Usage page of the dashboard, one row per transcription. How to read those rows is covered in the guide to tracking spending per request.

What happens with low balance and errors?

How can I lower the bill?

You pay for the length of the audio, so the only lever is sending less of it. Cutting silence at the start and end, long pauses or music sections before you send lowers the cost directly. Lowering the bitrate or quality doesn't change the price, because the duration stays the same; it only makes the upload smaller.

Having a chat model summarise or translate the transcript afterwards is a separate request, billed per token. That part is covered in the API cost guide.

Frequently asked questions

How much does an hour of audio cost?

$0.18 at the November 2, 2026 price ($0.003/min). Current prices are on the Models page.

Is the duration rounded to the minute?

No, to the second. A 12.3-second recording is billed as 13 seconds.

Which file formats can I send?

wav, mp3, m4a, mp4, ogg, flac and webm. A file whose duration can't be read gets 400 and isn't charged.

Do I pay for a failed transcription?

No. The amount set aside when the request starts is released if the transcription fails.

Does the length of the text affect the price?

No. Only the audio duration counts; the cost is the same whether the transcript is short or long.

To try it with a short recording, create an account and make a key on the Keys page. The trial balance on new accounts covers several minutes of transcription with plenty to spare.

Create your account

More guides: How can you use an AI API from Turkey without a credit card? · How do you connect an OpenAI-compatible API to a tool you already use? · How do you calculate the cost of an AI API? · What should I do if my AI API key has leaked? · How do you generate images with an AI API, and what does one image cost? · Why does my AI API return a 429 error, and how do I fix it? · Why do long AI API requests time out: streaming or non-streaming? · Anthropic Messages API or OpenAI Chat Completions: which one should I use? · What is a context window, and what is a 1 million token context good for? · Which AI model should I choose: deciding by price, context and quality · Why does a reasoning model return an empty answer, and why are thinking tokens charged? · Why is my API balance running out faster than expected? Tracking spend request by request · How do you convert a web page to Markdown to feed it to an AI model? · How do you get AI to write and publish articles in WordPress automatically? · How do you find blog topics from RSS feeds and Google Trends? · Does AI-written content show up on Google and in AI answers? · How do you get internal links into AI-written WordPress articles? · How do you get AI to generate a different featured image for every WordPress post? · How do you write a content brief when an AI writes your blog posts? · What should you watch for when an AI writes recipes for your food blog? · How do you fix errors when connecting a WordPress plugin to your AI API account? · Why does my AI article bot stop halfway in WordPress? "Run is stuck" and LiteSpeed · Why are my scheduled WordPress posts late? WP-Cron and a real server cron · How do I get an AI article bot to write blog posts in English or another language? · What does "Content Bot cannot generate articles" mean? Reading the bot's log · If I delete the WordPress AI article plugin, are the articles it wrote deleted? · How do you do function calling (tool use) with an AI API? · How do I check my AI API balance from code and get a low-balance alert?