ElevenLabs is a voice AI vendor that sells text-to-speech, speech-to-text and conversational phone agents from one pool of monthly credits. Every product on the account draws from the same pool. A batch job and a live phone line look identical on the invoice, which is the whole problem for a small team that runs both.
What ElevenLabs actually bills you for
The unit is the credit. On the ElevenLabs pricing page, standard text-to-speech costs about 1 credit per character, and speech-to-text runs near 330 credits per minute of audio. The plans stack by credit volume: Free gives 10,000 credits for $0, Starter 30,000 for $6, Creator 121,000 for $22, Pro 600,000 for $99, Scale 1.8 million for $299 and Business 6 million for $990 a month.
Two details matter more than the tier. First, the credit pool resets on your billing date, not on the first of the month, so a job that lands on day 28 and day 2 of the cycle costs nothing extra while the same job twice in one cycle can blow the limit. Second, the pricing page describes usage-based billing as an option on paid plans: with it on, the API keeps answering past the limit and the overage lands on the next invoice. With it off, the API stops answering, which on a phone agent means every call is refused.
The subscription endpoint exposes all of this. ElevenLabs documents GET /v1/user/subscription as the call that “Gets extended information about the users subscription”, and its response carries character_count, character_limit, next_character_count_reset_unix, current_overage, next_invoice and status. One request answers the three questions that matter: how much, until when, and is anything past due.
What happened to us
Our account sits on a legacy growing-business plan with 3,831,927 credits a month. On October 8, 2026 it read 4,090,552 used, which is 106% of the limit, with a $46.55 overage and a $375.91 invoice due on October 12. The first alert Mepa8 ever raised was this one:
“ElevenLabs OVER character limit: 4,074,135 of 3,831,927 (106.3%), resets 2026-10-12; overage billing is on”Mepa8 alert, 2026-10-08
The phone agents were not the cause. Conversational AI used about 1.17 million credits over the whole period, almost all of it one client intake line with 1,100 calls. Text-to-speech used 2.97 million, and it arrived on four days: 1.0 million on September 14, 694,000 on September 19, 738,000 on September 20 and 673,000 across September 21 to 23. That was one audio course rendered three times. The first render used a model that ignores phonetic markup, the second was a full re-voice on a model that obeys it, and the third followed lexicon fixes and rewrites.
Since October 1 the account has spent 356 characters on text-to-speech. The leak was never running. It was a one-time job with no cost estimate in front of it, and nothing on the account said so until the limit was already behind us.
How Mepa8 watches ElevenLabs
ElevenLabs is a full-connector vendor in the catalog. The connector calls the subscription endpoint on every run and reads used credits against the limit, the reset date, the overage amount and the next invoice. It raises a warning at 80% of the limit and a critical alert past 100% or on any status other than active, all from fields the subscription endpoint already returns. The gap we closed after October 8 is the second call: the usage endpoint broken down by product type, so a batch render shows up as “TTS” on the day it runs instead of as a surprise total four weeks later.
The kill is soft and honest about its blast radius. Rotating the API key stops every caller that holds it, which for us meant all four phone numbers at once, so the catalog entry says exactly that. A kill on Mepa8 is two steps, propose and confirm with a single-use token, and it is always reversible with a restore. Nothing fires on its own.
Set a cap in five minutes
- Create a separate ElevenLabs API key for monitoring and give Mepa8 only that one. The subscription read needs no write scope.
- Give every purpose its own key: one for phone agents, one for batch rendering, one for the dashboard. Attribution then takes one API call instead of a day of digging.
- Set the budget on the Mepa8 board to your plan price, so a $299 Scale plan on the pricing page alerts the moment the on-pace figure passes it.
- Decide the overage toggle on purpose. Off protects the bill and takes live agents down at the limit; on keeps agents up and charges you. Write the choice on the vendor card.
- Put a character count in front of every batch script. A run that prints its credits before it starts cannot render a course three times by accident.
Questions people ask
Does ElevenLabs have a hard spend cap?
Not in the sense of a dollar ceiling. The pricing page offers usage-based billing on paid plans: on, the API keeps serving past the limit and bills the overage; off, calls stop at the limit. The limit itself is the plan's credit count, 1.8 million on Scale.
Which number should I alert on first?
The ratio of character_count to character_limit from GET /v1/user/subscription, read daily. Our 106% reading on October 8, 2026 was visible in that one field weeks before the invoice arrived.
Why did one key hide the cause for a month?
Because phone agents and batch rendering shared the key named rotate_001, the usage report could only say 4.09 million credits. Separate keys per purpose would have named the audio course and its 2.97 million credits on September 14.
Sources
- ElevenLabs pricing — plan prices, credits per character, usage-based billing
- ElevenLabs API reference: GET /v1/user/subscription — response fields read by the connector
- Mepa8 incident: the 106% month — our own account, October 2026
Change log: October 9, 2026 — First published from our own October 2026 accounts.