SambaNova bills identical requests inflated token counts

red · billing · probed live 2026-07-26 · affects SambaNova · run the repro yourself

The same request body, sent repeatedly, is not billed the same number of prompt tokens — and the errors overwhelmingly point up. Across three independent 40-call runs, SambaNova charged 9,176 tokens for 4,200 actually sent: 2.18× on average. The inflated figure is carried in total_tokens — the field an invoice sees — so this is what a customer pays, not a cosmetic reporting glitch.

What was measured

One request body — a 35-token prompt, byte-identical on every send — was sent 40 times in sequence, three separate times on 2026-07-26. A correct meter bills identical bytes identically, every time. Instead:

RunBilled for 1,400 sentOverchargeWrong values seen
12,8102.01×27, 67, 221, 256, 459, 590
21,9271.38×27, 578
34,4393.17×27, 647, 2478

13 of the 120 calls (11%) were billed a wrong value; ten distinct values appeared, from 27 to 2,478 tokens, for one unchanging 35-token request.

The money is extra, not shuffled

An inflated count could in principle be another request's count, swapped — annoying but zero-sum. It is not. Proof by a closed pair: two requests that are both ours, fired together, so every token entering and leaving the set is known. A 74-token request co-fired with a 1,197-token request was billed 1,197 on both — the small request took the large one's count while the large one kept its own. The pair was billed 2,394 tokens for 1,271 sent: an excess of 1,123 tokens that nobody sent. Totals do not conserve; the overcharge is genuine extra billing.

What it is not

Mechanism — our working hypothesis

Cross-batch attribution: SambaNova serves requests in batches, and one batch member's token count gets stamped onto another member's bill. Supporting evidence: (a) the wrong value can be chosen in advance — co-fire a small request with a large one of known size and the small one is billed the large one's exact count; (b) co-fired responses return bit-identical time_to_first_token and end_time — direct proof that batch-level values are stamped onto every member; (c) the occasional under-bill is what being co-batched with a smaller neighbor looks like; (d) the wrong values in sequential runs (27…2,478) look like a sample of other customers' prompt sizes. The limit of the claim: foreign traffic is unobservable, so for sequential runs the neighbor's identity is inferred from consistency with the controlled co-fire experiment, not directly observed.

Why it matters

Spend on this provider cannot be predicted, reconciled, or attributed. A cost-control layer that meters against reported usage will mis-bill by multiples — and because the wrong values track other traffic, the error grows with how busy the endpoint is, so it is largest exactly when spend is highest.

Run it yourself

The repro is a standalone script with no dependencies beyond Node: one loop that sends the same request 40 times and prints what each call was billed. src/billing/sambanova-stable-overcharge-repro.ts in the suite — SAMBANOVA_API_KEY=<key> npx tsx src/billing/sambanova-stable-overcharge-repro.ts. A captured run:

call 10/40: billed prompt_tokens = 35   (total_tokens = 37)
call 11/40: billed prompt_tokens = 647  (total_tokens = 649)
call 12/40: billed prompt_tokens = 35   (total_tokens = 37)
…
call 22/40: billed prompt_tokens = 27   (total_tokens = 29)
…
call 37/40: billed prompt_tokens = 2478 (total_tokens = 2480)
------------------------------------------------------------
the same request was sent 40 times
distinct billed values: 27, 35, 647, 2478 (a correct meter shows exactly one)
the request's real size: 35 tokens
calls billed a wrong value: 4 of 40
tokens billed in total: 4439 — tokens actually sent: 1400
overcharge: 3.17x

Provider response

Reported to SambaNova (community thread) — The response did not address the defect. Reproducible as of 2026-07-26.

Have a response or a correction? joel@custlabs.com — it becomes part of this record.