IronStratum

Specialty-API unit economics: embeddings, rerank, OCR

Specialty APIs do not share a billing unit. Embeddings bill by the million tokens. Rerank bills by the search. OCR and classification bill by the page. Speech bills by the second, voices by the character, image routes by the image. A rate means nothing until you know the meter behind it. The pages ranking today compare rates inside one lane. None compares the meters across lanes. This page maps every unit this platform's specialty routes meter. It converts each shape into the others. It prints every competitor rate as a dated relation against the fenced rates below, never as a bare figure. Every read happened on 28 October 2026.

Each fact below carries its owner and its date. OCR rows: AWS Textract, Google Document AI, Azure Document Intelligence, a Mistral announcement, Mathpix. Classification rows: Google Natural Language, Amazon Comprehend. Speech rows: OpenAI pricing, the OpenAI embeddings guide, Deepgram, AssemblyAI, Gemini, ElevenLabs. Rerank rows: Cohere, Voyage. All were read 28 October 2026. Where a rate could not be read, the row prints a dash. Competitor figures never print here. Each row is a direction against a fenced rate, with the party, the source and the date named.

Last verified: 2026-10-28

The meter map: six units, every specialty row

The table below is the artifact this page owns. It lists the unit each lane meters, what one unit holds here, and the display shape the card prints. Platform rules come from the platform's model data and route contracts, read 2026-10-28.

LaneMeterWhat one unit holds hereDisplay shape
Text embeddingstokenstext input tokensper 1M tokens
Multimodal embeddingstokenstext and image input tokensper 1M tokens
Reranksearchesone request, any document countper 1,000 searches
Zero-shot extractionsearchesone input: a batched array of N bills Nper 1,000 searches
Print OCRpagesone page, per file part or card reportper 1,000 pages
Archival OCRpagesone page, hard-scan laneper 1,000 pages
Content classificationpagesone page, up to 2,000 tokens, rounded upper 1,000 pages
Speech to textaudio-secondsone second of audioper 3,600, one hour
Japanese speech to textaudio-secondsone second of Japanese audioper 3,600, one hour
Text to speechcharactersone character of input textper 1M characters
Image generationimagesone generated imageper image

Three properties of this map matter more than any single rate. First, the meters do not convert: each lane bills its own count. Second, the display shape differs from the meter: the speech rows meter per second but print per hour, and the image row has no divisor. Third, two lanes share a meter name with different scope. Rerank counts requests. Extraction counts inputs. The same word, search, bills two different things.

What one unit holds on this platform

These are the platform's route contracts. A classification page is up to 2,000 tokens of input, rounded up. The count the lane card reports is what meters when it arrives whole. A fractional or absurd report falls back to the input count, and the basis is auditable per request. A rerank search is one request over any number of documents. An extraction search is one input, so a batched array of N items bills N. The divergence is deliberate. Rerank work arrives as one query against a corpus. Extraction work arrives as a list of items.

OCR counts pages the same way. A multipart request carries one page per file part. The card-reported count meters when whole, with the file-part count as fallback. Long documents go through a jobs route that meters once, at done. A re-poll cannot bill twice. The OCR decision guide, the classification guide and the extraction guide walk those lanes.

ModelContext$/1M in$/1M out$/1M cached
Qwen
qwen3.8-27b262K$0.35$2.55$0.105
qwen3.6-35b131K$0.11$0.8$0.044
Minimax
minimax-m2.7197K$0.24$0.95$0.072
Muse
muse-glimmer-30b131K$0.28$1.2$0.084
Ornith
ornith-1.5-35b100K$0.35$2.55$0.105
ornith-1.5-9b100K$0.1$0.3$0.03
Glm
glm-5.3-flash1049K$0.11$0.35$0.033
Deepseek
deepseek-v4-flash-07311311K$0.15$0.42$0.045
Gemma
gemma-4-31b-it262K$0.22$0.49$0.066
Deepseek
deepseek-v4-pro1000K$1.13$2.21$0.339
deepseek-v4.1-flash1000K$0.19$0.71$0.06
deepseek-v4.1-flash-10171049K$0.16$0.65$0.003
Glm
glm-5.31000K$1.32$4.25$0.4
Flux
flux-1-schnell—$0.003/image
flux-pro-1.1—$0.04/image
Chatterbox
chatterbox-tts—$25/1M chars
Kokoro
kokoro-tts—$15/1M chars
Pocket
pocket-tts—$16/1M chars
Audio
audio8-tts—$8/1M chars
Hayamimi
hayamimi-stt—$0.6/audio-hr
Bge
bge-m3—$0.05/1M tokens
bge-reranker-v2-m3—$1.5/1k searches
Ocr
ocr-print—$1/1k pages
ocr-archival—$3/1k pages
Whisper
whisper—$0.12/audio-hr
Iab
iab-2x—$0.7/1k pages
iab-3x—$0.7/1k pages
Gliner
gliner-extract—$0.9/1k searches
Jev
jev-fast1K$0.03$0—
jev-causal1K$0.03$0—
jev-batch1K$0.03$0—
Wemm
wemm-embed—$0.09/1M tokens
Molmo
molmo2-er8K$1$5$0.5
Cosmos
cosmos-reason2-2b4K$0.1$0.4$0.05
Sam
sam2.1-base—$0.02/image
Da
da3-small—$0.05/image
Smolvla
smolvla—$0.001/call
Openvla
openvla-oft—$0.006/call
Act
act—$0.001/call

The wallet is prepaid and shared across every lane above. One balance, many meters. A refused request bills nothing. The balance itself is the spend ceiling, so a runaway loop drains the wallet and stops rather than billing onward. That failure mode is covered in the bill shock guide. Current rendered rates from the same model data sit on the pricing guide. The embeddings pricing guide, the reranker pricing guide and the image cost guide carry those lanes in depth.

The rates, as relations

Competitor figures never print here. Each row names the party, its unit, a direction against a fenced rate, and the dated source. Failed reads are dashed.

OCR and document lanes

PartyUnitRelation to the fenced rowsSource, read date
AWS Textractpage, volume-tieredabove the print row at list, below it at the top tierTextract pricing, 2026-10-28
Google Document AIpage, volume-tieredabove the print row at list, below it at the top tierDocument AI pricing, 2026-10-28
Azure Document Intelligencepage, volume-tieredabove the print row at list, below it at the top tier; its extraction and prebuilt tiers sit far above the archival rowAzure pricing, 2026-10-28
Mistral OCRpageat the same level as the print row; its batch mode doubles the pages per unit of spendMistral announcement and FAQ, 2026-10-28
Mathpixpage, image boundary ruleabove the print row; images with more than 12 rows of text can bill at the page rateMathpix pricing, 2026-10-28
Groqunreaddashed: three fetch methods failed on the writing dateattempts logged, 2026-10-28

That crossing is the trap in flat comparison tables. The list rate and the volume rate belong to one row. A page quoting one of them answers half the question. Mistral prints its rate inverted, pages per unit of spend rather than spend per page. Casual side-by-side reads go wrong until you invert the cell.

Classification lanes

PartyUnitRelation or shapeSource, read date
Azure custom classificationpageabove the fenced classification rows, same meterAzure pricing page, 2026-10-28
Google Natural Language1,000 characters, rounded to the nearestno rate relation prints: the meters do not convert without a characters-per-token bridgeNL pricing page, 2026-10-28
Amazon Comprehend100 characters, 3-unit minimumno rate relation prints: same bridge problem, plus a minimum chargeComprehend pricing page, 2026-10-28

The classification lane is where meters diverge hardest. Google rounds each request to the nearest 1,000 characters. It counts whitespace and markup inside the request. Comprehend rounds to 100 characters and bills a 300-character minimum. Azure moved its custom classifier to the page. This platform meters the page directly, with the 2,000-token rule defining what a page holds. Three vendors, one job, three different units: the whole reason this page exists.

Speech lanes

PartyUnitRelation to the fenced speech rowsSource, read date
OpenAI transcriptionminuteabove the base speech row at its printed minute rateOpenAI pricing, 2026-10-28
AssemblyAIhour, two rows, stacked add-onsboth published hour rates sit above the base speech rowAssemblyAI pricing page, 2026-10-28
Deepgramminute, hour figure beside itentry row converts below the base speech row, one row matches it, the premium rows above itDeepgram pricing page, 2026-10-28
Geminiaudio as tokens, 25 per secondfar above the base speech row at the vendor's own printed minute figureGemini pricing page, 2026-10-28
ElevenLabscredits from one shared poolno rate relation prints: the unit is a credit, not a currency amountElevenLabs pricing page, 2026-10-28

The Japanese speech row sits above both American hour rates and below the Gemini figure. The Whisper cost per hour guide works that lane in full, and the Japanese speech guide covers the Japanese lane.

Embedding and rerank lanes

PartyUnitRelation or shapeSource, read date
OpenAI embeddingsinput token; guide prints pages per dollarits small model sits below the fenced text embedding row, its large and legacy models above itOpenAI guide and pricing page, 2026-10-28
Gemini embeddingsinput token, per modalitythe image rate differs from the text rate on one card; no single figure describes the laneGemini pricing page, 2026-10-28
Cohere reranksearch unit: one query, up to 100 documents; documents past 500 tokens split and count againa unit-scope fact, not a rate: this platform's search carries any document countCohere pricing page, 2026-10-28
Voyage reranktokens: query tokens times documents, plus document tokens; card prints its own per-request estimateat the vendor's stated 100-document, 500-token shape, its estimate sits above the per-search figure hereVoyage pricing page, 2026-10-28
Together rerankunreaddashed: the docs render no billing text on the writing dateattempts logged, 2026-10-28

Two vendors use the word search for rerank. One caps a search at 100 documents and counts long documents more than once past 500 tokens. This platform bills one search per request with no document cap: 400 documents per query is one search here, four search units there.

The conversion arithmetic

Every row here is derived, and the arithmetic is the content. R is a fenced rate above; the counts are yours.

per search    =  R per 1,000 searches  /  1,000
per page      =  R per 1,000 pages     /  1,000
per hour      =  R per 3,600 seconds   (the speech rows already print the hour form)
per minute    =  R per 3,600 seconds   /  60
per page of embeddings
              =  R per 1M tokens  x  800  /  1,000,000
per 1,000 characters of speech input
              =  R per 1M characters    /  1,000
per image     =  R per image   (no divisor; the meter is the unit)

The 800 in the embeddings row is not this platform's number. It is OpenAI's own stated assumption, about 800 tokens per page of text, printed in its embeddings guide, read 2026-10-28. Use your own page length when you have it. The fence prints the hour form, but the meter ticks per second. A 90-second clip bills 90 seconds, not a rounded minute or hour. Vendors that print per-minute cards vary in how they count partial units, so check the increment rule before you price short clips. A search meter and a token meter meet inside a rerank lane. Fix the corpus shape on both sides, per Voyage's formula, and the two meters agree.

One pipeline, five meters

A document pipeline exercises five fence rows at once. Take a monthly intake of 1,000 scanned pages, each about 800 tokens once read. The pipeline runs print OCR. It classifies each page. It embeds the text. It answers 4,000 rerank searches against the index, and it transcribes 2 hours of voice memos.

month  =    1,000 pages    / 1,000     x  R_print
        +   1,000 pages    / 1,000     x  R_iab
        +  800,000 tokens  / 1,000,000 x  R_embed
        +   4,000 searches / 1,000     x  R_rerank
        +   7,200 seconds  / 3,600     x  R_stt

Put the five fenced rates in, in fence order, and the month prices out in one pencil pass. Two observations survive any rate you plug in. First, no single unit normalizes this bill: tokens do not price the pages, and pages do not price the searches. Any per-call normalization quoted ahead of a signed scope is a fiction. Second, the biggest term is not always the one you compared first: the counts, not the rates, decide which term wins. The same pipeline at the cloud list rates above runs above this platform's total.

The fine print that changes the bill

Minimums. Comprehend bills a 300-character minimum per request. A batch of one-line requests pays triple or worse what the per-unit rate suggests. Google rounds each request to the nearest 1,000 characters and counts whitespace and markup. A padded HTML payload bills as content.

Scope creep inside a unit. Cohere splits any rerank document past 500 tokens, and each piece counts against the 100-document cap. Mathpix can bill an image with more than 12 rows of text at the page rate. This platform rounds a classification page up at 2,000 tokens, so a 2,001-token page is two pages.

Idle time. Comprehend's synchronous classification runs on a provisioned endpoint billed per second, with a 60-second minimum. It bills while nothing arrives. Batch runs the other way. Mistral's batch mode doubles the pages per unit of spend, and the trade is the wait.

Add-ons. AssemblyAI prices extras per hour on top of the base hour, and they stack. Azure prices an add-on tier per 1,000 pages on top of feature tiers. Read the second row of any card before trusting the first.

Credits. ElevenLabs meters everything in credits from one shared pool: one credit per output character for speech, 330 per minute for transcription. The dollar cost depends on the credit pack. A rate card in a private unit is not comparable until you price the unit.

Make the first call

The specialty lanes take their own request forms. Sign up, create a key, and read two pages through the print OCR lane:

curl -X POST "https://api.ironstratum.com/v1/ocr" \
  -H "Authorization: Bearer $KEY" \
  -F "model=ocr-print" \
  -F "mode=print" \
  -F "file=@page-01.png" \
  -F "file=@page-02.png"

Two file parts, two pages, billed at the print row. The response carries the text and the page count that metered. That count is the number your bill will match. The pricing guide carries the current rates for every lane, rendered from the same model data the metering reads. The Whisper model page, the Kokoro model page and the flux model page hold the request contracts for the speech, voice and image lanes.

Common questions

Is OCR billed per page or per request?

Per page here, per page at the three clouds, per page at Mistral and Mathpix. The boundary rules decide the real bill: file parts here, 12 rows of text at Mathpix, volume tiers at the clouds.

What does a rerank search include?

Here, one search is one request over any number of documents. At Cohere, one search unit is one query with up to 100 documents, and any document past 500 tokens splits into pieces that each count. At Voyage there is no search unit: the lane meters tokens through a formula. Three definitions of one word.

Is speech to text billed per minute or per second?

This platform meters seconds and prints the hour form. OpenAI prints minutes. AssemblyAI prints hours. Deepgram prints a minute rate with the hour figure beside it. Gemini converts audio to tokens at a fixed 25 per second. Divide everything to the second before comparing, and check each vendor's increment rule before you price short clips.

Why is classification priced per page here and per character at Google?

Different meters for the same job. The platform page holds up to 2,000 tokens. The Google unit is 1,000 characters, rounded to the nearest 1,000, whitespace and markup counted. There is no honest conversion without a characters-per-token assumption, so this page prints the meters and the rules and leaves the ratio to your corpus. Azure moved its custom classifier to pages.

Are credits the same as dollars?

No. A credit is a private unit priced by the plan that sold it. ElevenLabs draws speech, transcription, music and effects from one credit pool with different credit costs per product. Until you price the credit itself, the credit costs are not rates, and no comparison that mixes credits with currency amounts is sound.

The short version

Specialty lanes bill six units. The million tokens. The search, in two scopes. The page, in two lanes. The second of audio, the character of speech, the image. Read the meter first. Then read the boundary rules. Then read the rate. Every competitor row here is a dated relation against a fenced platform rate, read 28 October 2026, figures in the receipts. The worked pipeline prices the month as five independent products of count and rate, with no shared denominator. When you are ready, sign up, load the wallet, and price the pipeline on your real counts.

Last verified: 2026-10-28