2026-05-13 → 2026-05-16 · 4 days · 3 providers · 7 inference runs

API Cost Record

Provider-level cost & usage analysis for the Northern Thai LLM evaluation campaign. Built from API/{chat gpt, claude, deepseek}/*.csv exports.

Headline numbers

Grand total
$6.8100
4 days · 7 inference runs · ~3,990 API calls
OpenAI
$4.1644
61% of total · gpt-4o + gpt-5.5 reasoning bloat
Anthropic
$2.5500
37% of total · Sonnet 4.5 + 4.6, ~$0.85/run flat
DeepSeek
$0.0955
1.4% of total · 7× jump on 05-16 from output bloat on explicit-pin v4-flash

Daily spend by provider

Per-day API spend, stacked
2026-05-13 = frozen v1 baseline · 2026-05-15 = v2 prompt-template comparison · 2026-05-16 = refresh on current flagships
$5.00 $4.00 $3.00 $2.00 $1.00 $0.00 $1.14 2026-05-13 frozen v1 baseline $1.17 2026-05-15 v2 prompt comparison $4.50 GPT-5.5 reasoning tokens: $3.57 2026-05-16 flagship refresh
OpenAI Anthropic DeepSeek
Daily totals were flat for the first two days (~$1.15) — three providers running an apples-to-apples 4-model sweep. 2026-05-16 jumped 3.8× after the registry refresh introduced GPT-5.5. The same three-model sweep would have cost roughly the same as 05-15 if the OpenAI line had stayed on gpt-4o.

Cost per request by model

USD per API call · logarithmic scale
Each model runs 132 rows × 3 prompts = 396 calls per sweep + smokes. Logarithmic axis because the spread is 4 orders of magnitude.
$0.10 $0.01 $0.001 $0.0001 gpt-5.5 $0.00890 claude-sonnet $0.00214 gpt-4o $0.00076 deepseek-v4-flash $0.0000268 gpt-5.5 is 332× deepseek-v4-flash · 11.7× gpt-4o
modelavg cost / reqvs deepseekvs gpt-4o
gpt-5.5-2026-04-23$0.00890332×11.7×
claude-sonnet-4-5 / 4-6$0.0021480×2.8×
gpt-4o-2024-11-20$0.0007628×ref
deepseek-v4-flash (alias, 05-13/15)$0.0000268ref1/28×
deepseek-v4-flash (explicit pin, 05-16)$0.0001877×1/4×

The 7× DeepSeek per-call cost jump on 05-16 (explicit-pin) is from 26× more output tokens per request — see "DeepSeek · cache mechanism + the 05-16 surprise" below.

The GPT-5.5 hidden-reasoning tax · visible

Output tokens per request
Same task (NTD→STD translation), same dataset, similar visible Standard Thai output (~30 chars). The 10× output-tokens gap is hidden reasoning tokens.
50 100 150 200 250 0 output tokens / request gpt-5.5 263 tok claude-sonnet 58 tok gpt-4o 26 tok deepseek-v4-flash ~22 tok (visible only)
The 10.4× output-tokens gap (263 vs 26) is what produces the 11.7× cost gap (gpt-5.5 vs gpt-4o). The OpenAI billing CSV counts all output tokens — reasoning and visible — so reasoning-class models charge for thinking. output_text length stays in the ~30-character Standard Thai range across every model we ran, confirming the gpt-5.5 surplus is reasoning, not verbosity.

Per-prompt throughput collapse (GPT-5.5)

Observed mid-sweep while the refresh was running: GPT-5.5's throughput collapsed ~20× between the Thai-imperative prompt and the English-imperative prompt despite identical source text. Reasoning-token spend is non-stationary in the instruction surface, not in the dataset.

promptinstructionthroughputrelative
p1Thai imperative · จง…~10 rows/min1.0×
p2English imperative · Translate the following…~0.5 rows/min0.05×
p3Thai question · …แปลว่าอย่างไร~8 rows/min (recovered)0.8×

DeepSeek · cache mechanism + the 05-16 surprise

DeepSeek V4-flash bills two token types separately: input cache miss and input cache hit. The 3-prompt fan reuses the same chat-template prefix 99 times per row, which DeepSeek's automatic prompt caching detects and discounts:

daterequestsout_tokcache_hitcache_misshit ratecost
2026-05-13 (v1, alias)39711,22112,92852,40919.8%$0.0105
2026-05-15 (v2, alias)3979,72211,52057,11816.8%$0.0108
2026-05-16 (v2, explicit pin)398255,54050,43218,38073.3%$0.0743

Two surprises on 2026-05-16

Output tokens per request jumped 26× — from ~24 tok/req on the alias-routed runs to 642 tok/req on the explicit-pin run. Same model class, same prompt template (`zero-shot-v2`), same dataset. The only known difference: deepseek-chat alias on 05-13/15 vs deepseek-v4-flash explicit pin on 05-16. Either the alias was routing to a different (terser) snapshot, or v4-flash has a thinking/reasoning mode enabled by default under the explicit pin. This likely explains the −2.07 chrf_avg regression documented in the diagnostic findings: long verbose outputs miss the short Standard-Thai-translation reference style.
Cache hit rate jumped 4× too — from 17–20% to 73%. The 3-prompt fan structure has always reused the same system message + chat template prefix, but the alias-routed runs only achieved ~20% hit rates. The explicit pin sees much better cache utilization (cache-miss tokens dropped 3× from 57k → 18k). Partial offset to the output-bloat cost: 73% hit rate kept the per-request cost at $0.000187 even with 26× more output tokens — still 47× cheaper than gpt-4o.

Cache savings persist · price ratios still hold

Cache hits are 50× cheaper than cache misses on DeepSeek ($0.0000000028 vs $0.00000014 per token). Per-call cost averages $0.0000268 across 05-13/15 and $0.000187 on 05-16. Even the bloated 05-16 run kept DeepSeek at 1.4% of the total 4-day spend.

Per-day per-model breakdown

dateprovidermodelrequestsinput tokoutput tokcost
2026-05-13OpenAIgpt-4o-2024-11-2039774,63910,359$0.2902
2026-05-13Anthropicclaude-sonnet-4-5397159,35423,807$0.8400
2026-05-13DeepSeekdeepseek-v4-flash39765,33711,221$0.0105
2026-05-15OpenAIgpt-4o-2024-11-2039779,27010,018$0.3076
2026-05-15OpenAIgpt-5.5-2026-04-23 (smoke)2364248~$0.0000
2026-05-15Anthropicclaude-sonnet-4-5397168,55022,501$0.8500
2026-05-15Anthropicclaude-sonnet-4-6 (smoke)139610~$0.0000
2026-05-15DeepSeekdeepseek-v4-flash39668,4829,423$0.0107
2026-05-16OpenAIgpt-5.5-2026-04-2340179,768105,593$3.5666
2026-05-16Anthropicclaude-sonnet-4-6397168,94623,115$0.8600
2026-05-16DeepSeekdeepseek-v4-flash (explicit pin)39868,812255,540$0.0743
Grand total$6.8100

DeepSeek 2026-05-16 numbers are now from the refreshed cost + amount CSVs. Output tokens jumped 26× per request vs prior days (255,540 / 398 = 642 tok/req vs 24 tok/req on 05-13/15). See "Surprise · DeepSeek v4-flash explicit pin produces 26× more output tokens" below.

Key takeaways

  1. $6.81 total for the entire 4-day API-comparison campaign. Under the original "~$2 each run" estimate by 2.4× — the surprise was almost entirely on the OpenAI line, with a small late-arriving bump on DeepSeek 05-16.
  2. GPT-5 family billing is structurally different. Reasoning tokens are billed but invisible in output_text. Budget planning that uses GPT-4o-era token estimates underestimates GPT-5 costs by ~10×. Future refreshes should pre-budget at ~$0.009 per call for any GPT-5 family member.
  3. Anthropic's pricing is the most predictable. All four Claude Sonnet runs (4.5 × 2 + 4.6 × 2) landed within $0.84–$0.86. No reasoning surprise, no caching discount. Cost per row is the same whether running v1 or v2.
  4. DeepSeek's automatic prompt caching is a 50× lever — and improved sharply on 05-16. 12,928 cache-hit / 52,409 cache-miss on 05-13 = 20% cache rate. On 05-16, with the explicit deepseek-v4-flash pin, the cache rate jumped to 73% (50,432 / 18,380). For the 3-prompt fan structure where every prompt shares the system message + Satu prefix, this is essentially free repetition — and the explicit pin captures it dramatically better than the alias did.
  5. DeepSeek alias vs explicit pin produces 26× the output tokens. 2026-05-13/15 alias-routed runs: ~24 tok/req visible output. 2026-05-16 explicit-pin run: 642 tok/req. Same model class, same prompt template. Either the floating deepseek-chat alias was routing to a terser snapshot, or the explicit deepseek-v4-flash pin enables thinking/reasoning behaviour by default. Likely explanation for the −2.07 chrf_avg regression documented in the diagnostic findings (verbose outputs hurt chrf on short-translation targets). Costs jump 7× per call (still 47× cheaper than gpt-4o though).
  6. The Thai-pretrained Typhoon-S API line isn't in this report (opentyphoon.ai bills separately and the user hasn't exported it). At ~$0 free-tier-class historically, it doesn't change the picture.
  7. Going forward: for any "what does refresh cost" estimate, the rule of thumb is GPT-flagship ≈ 11× GPT-4o ≈ 4× Sonnet ≈ 50× DeepSeek-flash (explicit pin) ≈ 330× DeepSeek-flash (alias). Plan around the GPT-5 spend. For floating-alias provider lines, the cost CSV is the ground truth — registry pin name doesn't predict either price or output-length behavior reliably.

Source files (the record)

API/
├── api.txt                                            ◄ keys (gitignored)
├── chat gpt/
│   ├── cost_2026-04-16_2026-05-16.csv                 ◄ daily USD spend
│   └── completions_usage_2026-04-16_2026-05-16.csv    ◄ per-model req + token counts
├── claude/
│   ├── claude_api_cost_2026_05_01_to_2026_05_16.csv   ◄ cost split by input_no_cache / output / cache_*
│   └── claude_api_tokens_2026_05.csv                  ◄ raw token counts per model_version
└── deepseek/
    ├── usage_data_2026_5.zip                          ◄ raw export
    └── usage_data_2026_5/
        ├── cost-2026-5.csv                            ◄ daily USD per model
        └── amount-2026-5.csv                          ◄ token counts split by cache_hit / cache_miss / output

All four CSVs are downloaded directly from each provider's billing dashboard. They are the ground truth — the registry's model_id labels may diverge from the served model (as documented in docs/api_model_provenance.md for the DeepSeek deepseek-chat alias). Always cite billing CSVs when reporting cost in the paper.