Guides / stream interruption cost

What an interrupted response costs once you've resumed it

An interrupted stream still bills for everything generated before it stopped, and the documented way to resume re-sends that partial output as input. So you pay to generate it once and to read it back again. Culpa, a local-first LLM cost, margin, and forecast ledger, prices both halves as the two separate calls they really are.

Why this happens

Providers do fail, and under load Anthropic documents returning an overloaded error inside the event stream itself, corresponding to an HTTP 529 in a non-streaming context. What matters for cost is what happens next. The tokens generated before the interruption were produced and billed, and you have no usable answer. The documented recovery is to capture the partial response and construct a continuation request that includes it, so the model can carry on from where it stopped. That continuation is a fresh call, and the partial output you already paid to generate now arrives as input tokens on it. The double charge is small per event and structural, which is the awkward combination: it never shows up as a spike, it just makes every interrupted request quietly cost more than a clean one, and interruptions cluster exactly when the provider is busiest and your traffic is highest.

What this usually looks like

  • Costs run above your model during periods when the provider was degraded.
  • Retries and resumes aren't recorded as their own calls.
  • Nobody knows what share of your requests get interrupted.
  • A resumed request is logged as one call rather than two.
  • Your error rate is monitored and your error cost isn't.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run the free Cost Leak ScanStart 14-day trial

Mistakes that cost the most

MistakeWhy it hurtsDo instead
Treating an interrupted request as costing nothing.Everything generated before the interruption was billed, and you got no answer for it.Record the partial usage as its own call, so the waste is visible.
Logging a resumed request as one call.It's two calls, and the second one carries the first one's output as input.Record both, linked, so cost per completed answer includes the retries it took.
Retrying from the start after an interruption.You pay to regenerate everything, rather than paying input rates to carry it forward.Resume from the partial response where the model supports it, which is cheaper on output.
Monitoring error rate without error cost.A rate tells you it happened and not what it took to recover from.Report cost per completed answer, which absorbs interruptions automatically.

Run this check tonight

  1. Find what share of your requests ended without a complete response last month.
  2. Check whether your logs record the tokens generated before an interruption.
  3. See whether a resumed request appears once or twice in your cost data.
  4. Compare cost per completed answer against cost per call and size the gap.

One answer, two calls

Illustrative example

A modelled 2,000-token prompt producing a 4,000-token answer on Claude Sonnet 5 at its real introductory rates of $2.00 and $10.00 per million from the price book effective 2026-07-02. The stream is interrupted at 80% of the output, and recovery follows Anthropic's documented approach of re-sending the partial response as context so the model can continue. Token counts and the interruption point are modelled, the rates and the recovery method are published.

clean run: 2,000 x $2.00/M + 4,000 x $10.00/M = $0.004000 + $0.040000 = $0.044000
interrupted attempt: 2,000 in + 3,200 out = $0.004000 + $0.032000 = $0.036000, no usable answer
resume: (2,000 + 3,200) in + 800 out = $0.010400 + $0.008000 = $0.018400
total paid: $0.036000 + $0.018400 = $0.054400
against $0.044000 clean, an overhead of $0.010400, or 23.6% more

Nearly a quarter more for the same answer, and the resume was the cheap option. Retrying from scratch would have regenerated all 4,000 output tokens at output rates instead of carrying 3,200 forward at input rates. The overhead is small per request and it lands hardest when the provider is under load, which is when your traffic is highest.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
23.6%modelled overhead of one interruption plus resume against a clean runcalculatedA modelled 2,000-token prompt and 4,000-token answer on Claude Sonnet 5 at real rates of $2.00 and $10.00 per million from the price book effective 2026-07-02 costs $0.044000 clean. An interruption at 80% of output costs $0.036000 with no answer, and a resume carrying the 3,200 partial tokens forward as input costs $0.010400 + $0.008000 = $0.018400, totalling $0.054400, which is $0.010400 more or 23.6%. Rates and the documented recovery method are published, the token counts and interruption point are modelled.

What a generic answer can’t know

Whether a request completed, and what it took to get an answer out of it, is knowledge that lives in your request path. A provider invoice records the tokens and can't record that two of its calls were one user question, and a tool watching from outside sees two unrelated requests. Culpa prices every call and carries whatever identifiers you attach, so a resumed request links to the attempt it continues and cost per completed answer becomes a query rather than an estimate. That number is the one worth watching, because it absorbs interruptions, retries and abandoned attempts automatically, and it moves when your provider has a bad week whether or not anyone noticed.

Questions founders ask next

Do I pay for a response that was interrupted?

Yes, for everything generated before it stopped. The tokens were produced and billed even though you have no usable answer. That partial usage is worth recording as its own call, otherwise the waste is invisible.

Is resuming cheaper than retrying?

Usually. Resuming re-sends the partial output as input, which bills at input rates, while retrying regenerates it at output rates. Output costs several times input on most models, so carrying the partial forward is the cheaper recovery even though it isn't free.

How much does an interruption actually add?

In the modelled example, 23.6%. A clean 2,000-in, 4,000-out request on Sonnet 5 costs $0.044000, while an interruption at 80% plus a resume costs $0.054400. The overhead is the partial output being paid for twice, once as output and once as input.

What should I measure?

Cost per completed answer rather than cost per call. It absorbs interruptions, retries and abandoned attempts without anyone having to model them, and it moves when your provider degrades, which is exactly when a cost-per-call figure looks reassuringly flat.

On your infrastructure

Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.


How Culpa works

Find the culprit. Not just the total.

Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.

Your prompts stay local.

Culpa runs on your own infrastructure. What you send to a model reaches us at no point.

Every dollar has a name.

Follow any charge to the conversation, the user, the feature and the customer behind it.

See the bill before it lands.

Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.

Three steps to your first answer.

1

Change one base URL.

Or drop in the Python or TypeScript library.

2

Find your most expensive conversation.

In the first session, not the first week.

3

Cost your next feature before you ship it.

Base URLhttp://localhost:4545/v1Your traffic keeps flowing if Culpa ever stops.

Why the bill went up

Example dashboard

Calls traced

418,209

across 3 projects

Spend this week

$378.41

+ $182 vs last week

Failed calls

312

74% retried, and you paid for all of them

+ $182 this week traced to one culprit

Spend over 14 days

$0$20$40$60$8024262830020406
user_384report_generatorconv_91fprompt_v1894,220 tokens3 retries$6.81

Most expensive users

user_384$38.42
user_119$21.07
user_562$14.90
user_204$8.30
user_871$5.10

Next week forecast

Best$180
Median$240
p90$310
p99$395

Graded against reality. Accuracy shown as results land.

Keep reading


Sources: Anthropic, streaming messages, Anthropic pricing. Last reviewed 2026-08-05, rates effective 2026-07-02. Plain text version.