Sume TTS Router price: TTS 1.0 times 1.10, worked on 5,000 characters

TTS 1.0 is $0.0475 per 1,000 characters. The Router bills the list price times 1.10. Here is the arithmetic for a 5,000 character script.

5 min readSume
All posts

A 5,000 character script costs $0.2375 on Sume TTS 1.0 and about $0.26 on the TTS Router. TTS 1.0 lists at $0.0475 per 1,000 characters, and the Router's catalog is described in the OpenAPI spec as the TTS 1.0 list times a 1.10 character book. The only thing you buy with the extra ten percent is the ability to name the Sonic model in the request.

Here is the arithmetic, so you can check it against your own scripts.

What are the two rates?

The TTS 1.0 rate comes from Sume's published price: $0.0475 per 1,000 characters, with up to 20,000 characters per request. The Router rate is the spec's "pricing is the TTS 1.0 list x 1.10 character book", which works out to $0.05225 per 1,000 characters. Treat the Router figure as derived; check the price on your job before you scale a batch.

Derived cost per script length, Sume list prices read 2026-10-04
CharactersTTS 1.0 at $0.0475 per 1,000Router at 1.10x, derived
1,000$0.0475$0.05225
5,000$0.2375$0.26125
20,000 (one request max)$0.95$1.045
100,000 (five requests)$4.75$5.225

When is the extra ten percent worth it?

Pay it when the model id is part of the requirement: a client who approved a particular Sonic version, or an A/B test between versions. Do not pay it for general narration where TTS 1.0 does the job. For a longer worked example see 100,000 characters over five TTS jobs.

  • Characters are counted from the transcript you send.
  • A request over 20,000 characters must be split across jobs.
  • Generated audio over 1,200 seconds fails with tts_duration_exceeded.

How do you check your own bill?

Every job record carries a usage summary. Fetch one finished job and compare it to your expected figure before you run a large batch.

import os, requests

H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
job_id = os.environ["JOB_ID"]

r = requests.get(
    f"https://api.sume.com/v1/jobs/{job_id}",
    headers=H, timeout=30,
)
r.raise_for_status()
job = r.json()["data"]
print(job.get("usage") or job)

How does this compare to other vendors?

Per-character limits differ by vendor; one example is in Eleven v4's 10,000 character limit vs Sume's 20,000. Always compare per-character price and per-request cap together.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume