GPT-6 Luna for High-Volume API Workloads: The Cost Math at Real Request Volumes

What GPT-6 Luna actually costs at scale: worked cost-per-million-request math for high-QPS classification, 200k-token retrieval and a 12M record backfill, with the 90% cached-read discount applied.

Medy Evrard

23 September 2026

GPT-6 Luna for High-Volume API Workloads: The Cost Math at Real Request Volumes

Apidog for Enterprise

On-Premises Deploy

SSO & RBAC

SOC 2 Compliant

Explore Apidog Enterprise

Every backend team has a list of jobs that would obviously be better with a language model and that nobody ever shipped. Classifying five million support events a day. Enriching a twelve million row catalog. Scoring every inbound webhook before it hits the queue. The reason is always the same: multiply a per request cost by your actual request count and the number stops being a rounding error.

GPT-6 Luna, announced on September 22, 2026, costs $0.10 per million input tokens and $0.50 per million output tokens, carries a 1,000,000 token context window, and applies a 90% discount to cached input reads. That is cheap enough to make several of those shelved jobs viable, and cheap enough to make people stop doing the arithmetic, which is how you end up explaining a five figure invoice.

button

So here is the arithmetic: three realistic workload shapes, the cost per million requests for each, and the three variables that decide your bill long before the sticker price does.

The rates you are working from

Model API ID Input per 1M Cached read per 1M Output per 1M Context
GPT-6 Luna gpt-6-luna $0.10 $0.01 $0.50 1,000,000
GPT-6 Sol gpt-6-sol $2.00 $0.20 $10.00 872,000
GPT-6 Astra n/a $10.00 n/a $50.00 n/a
Claude Opus 5.5 claude-opus-5-5 $4.00 $0.20 (write $5.00) $20.00 1,000,000

The cached read column for Sol and Luna is the published 90% discount applied to the input rate, not a separately published number. Anthropic publishes its cached read rate directly and also charges $5.00 per million to write the cache, which matters at volume: a workload with high prefix churn pays that write cost repeatedly.

One framing correction before the numbers. OpenAI describes Sol and Luna as 50% cheaper than GPT-5.6 promotional pricing. Promotional is OpenAI’s own word and it is doing real work: the comparison runs against a discounted rate, not the rate GPT-5.6 launched at. Against the GPT-5.6 Luna list price of $1 input and $6 output that our launch coverage documented, GPT-6 Luna is a 90% cut on input and 92% on output.

Workload A: high QPS classification

The shape most teams reach for first: a stable system prompt, tool schemas and a taxonomy, plus a small variable payload, returning a short structured verdict. Assume 1,500 tokens of stable prefix, 500 tokens of variable payload, 120 output tokens, and 5,000,000 requests per day.

Model Cost per 1M requests, cold Cost per 1M requests, prefix cached
GPT-6 Luna $260 $125
GPT-6 Sol $5,200 $2,500
Claude Opus 5.5 $10,400 $4,700
GPT-6 Astra $26,000 not published
GPT-5.6 Luna, list price $2,720 not applicable

At 5,000,000 requests a day that is $625 on Luna with a warm prefix, about $18,750 a month. The same traffic on Sol without caching is $26,000 a day, and on Astra $130,000.

Two things fall out of that table. The caching discount cuts this bill by 52% while nothing about the workload changed; the only difference is whether the leading 1,500 tokens stayed byte identical between calls. And the tier gap at volume is an order of magnitude, not a percentage. Choosing Luna over Sol here is a twentyfold decision, not a trim.

Workload B: large context retrieval

Here Luna’s 1,000,000 token window stops being a spec-sheet line. Assume a 200,000 token knowledge pack held stable across calls, a 2,000 token query, 600 output tokens, and 50,000 requests a day.

Cold Prefix cached
GPT-6 Luna, per request $0.0205 $0.0025
GPT-6 Luna, per day $1,025 $125
GPT-6 Sol, per request $0.410 $0.050
GPT-6 Sol, per day $20,500 $2,500

Caching takes 88% off the Luna bill here, against 52% in workload A. That gap is the whole point: the discount scales with the ratio of stable prefix to fresh tokens. A 200,000 token prefix re-read 50,000 times a day is the shape where prompt caching pays most.

Luna’s window is also larger than Sol’s 872,000 tokens, so a 900,000 token payload does not fit in the more expensive model and does fit in the cheaper one. That inverts the usual “promote to a bigger model when the payload grows” routing rule, covered in detail in what GPT-6 Luna actually is.

Workload C: the one-off backfill

Batch jobs are where the new pricing changes what is possible, not just what is cheap. Assume a 12,000,000 record enrichment pass: 900 tokens of stable instruction, 300 tokens per record, 250 output tokens.

GPT-6 Luna GPT-6 Sol
Input, cold $1,440 $28,800
Output $1,500 $30,000
Total, cold $2,940 $58,800
Total, prefix cached $1,968 not calculated

A twelve million record backfill for under $3,000, or under $2,000 if the instruction prefix stays warm. That is a number a team can get approved in a single message. The same job on Sol needs a budget conversation.

Notice the ratio here. Output is now half the bill, which leads straight to the thing that actually determines your cost.

The three variables that decide the bill

1. Output tokens, because they bill at five times input

Luna’s output rate is 5x its input rate. In workload A with the prefix cached, input costs $65 per million requests and 120 output tokens cost $60. Loosen the response format to 400 tokens and output jumps to $200, taking the total from $125 to $265 per million requests. A response schema chosen in an afternoon more than doubled the bill.

The fix is boring and effective: constrain the output. Return an enum, not a sentence. Return a score, not an explanation, and fetch the explanation only for the small fraction of cases a human reviews. Pin the shape with a JSON schema so the model cannot pad:

{
  "model": "gpt-6-luna",
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "triage",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "category": { "enum": ["billing", "outage", "how_to", "abuse"] },
          "severity": { "type": "integer", "minimum": 1, "maximum": 4 }
        },
        "required": ["category", "severity"],
        "additionalProperties": false
      }
    }
  }
}

Confirm parameter names against OpenAI’s current model reference before building on this shape. The model ID gpt-6-luna is the part confirmed from the launch material.

2. Cache hit rate, because it is the only free 50% to 88% you will get

Everything above assumes the prefix stays byte identical. In production it usually does not, because someone injects a request ID into the system prompt or builds the tool array from a dictionary whose key order shuffles between processes. Two classic cache killers are now off that list: with GPT-6, changing reasoning effort or tool availability no longer invalidates the cache, and explicit breakpoints let you decide where the cached prefix ends. A Prompt Caching Dashboard and a diagnostics tool make hit rate something you measure rather than assume, and GitHub reports more than 50% fewer prompt tokens needing fresh processing across billions of requests. The mechanics are covered in our GPT-6 prompt caching walkthrough.

At volume, treat hit rate as a production SLI. A prefix refactor that silently drops you from 95% hits to 40% costs workload A roughly $400 a day and produces no errors, no alerts and no failing tests.

3. Retries, because they multiply

A 5% retry rate on workload A adds about $31 a day. Tolerable. The same 5% on workload B costs $50 a day if the retries miss the cache and $6 if they hit it, and the difference is entirely whether your retry rebuilds the prompt from scratch. Retries that regenerate a prefix are the most expensive resilience you can buy. Reuse the exact request body.

The latency trap at high QPS

Cheap is not fast, and at high QPS that bites. Third party measurements from Artificial Analysis put GPT-6 Luna at 153.9 output tokens per second with a time to first token of 124.23 seconds, and GPT-6 Sol at 102.15 seconds. Two caveats apply and both are load bearing: these are third party figures rather than vendor published, and they are measured on the max reasoning variants, the slowest configuration available.

Even so, the direction matters. Two minutes to first token will blow a default HTTP client timeout, idle out a load balancer and exceed the execution ceiling on most serverless runtimes. High QPS synchronous paths belong on low effort with streaming; high effort belongs in batch jobs and queue workers where nothing waits on a socket. Size timeouts against measured latency at the effort level you ship, not against the price.

Where the quality floor sits

Luna is not the smartest model in the family and OpenAI does not claim it is. Astra “continues to be our best model across the board” in OpenAI’s own words. What OpenAI does publish: Luna at max effort scores 66.6% on DeepSWE 1.1, comparable to Claude Opus 5 and Claude Fable 5 at medium effort, at 93% lower cost per task than Opus 5 and 96% lower than Fable 5. On AutomationBench 1.0.6 at high effort it beats its predecessor by 5.4 points at 58% lower cost per task. On OSWorld 2.0 offline at max effort it beats GPT-5.6 Sol at medium for a tenth the cost.

Those are vendor numbers measured against Claude Opus 5, not Opus 5.5, which shipped the same day, so treat them as directional. The operational reading is that Luna is the cheapest model clearing the bar for well specified, verifiable work, and “verifiable” is the load bearing word.

Prove the cost model before you commit to it

Spreadsheet arithmetic is a hypothesis. Test it on real traffic: take a 500 request sample of production payloads, run it against Luna and Sol as two environments, and record token counts, latency and schema conformance.

In Apidog, that is one saved endpoint with the model ID as an environment variable, run as a test scenario against a data file of real payloads. Add three assertions and the suite becomes a cost guardrail rather than a correctness check: assert the response matches your JSON schema, assert usage.completion_tokens stays under your per request output budget, and assert usage.prompt_tokens_details.cached_tokens is non-zero, so a prefix refactor that kills your cache hit rate fails CI instead of showing up on next month’s invoice. Confirm those usage field names against the current API reference before you assert on them.

That last assertion is the one nobody writes and everybody needs. The failure mode of a high volume LLM workload is almost never an outage. It is a 4x bill behind a green dashboard.

For how Luna’s pricing sits alongside GPT-6 Sol and Claude Opus 5.5 across the whole week, see our breakdown of the September 2026 AI model price war.

The short version

Route high volume, well specified, programmatically verifiable work to Luna and keep the stable part of your prompt byte identical. Cap output tokens, because they bill at five times input. Measure cache hit rate as a production metric. Keep high effort off synchronous paths until you have measured first token time on your own traffic. Do that, and the jobs that never shipped because the arithmetic did not work are worth costing again this week.

Explore more

How to Use GPT-6 Luna for Free ?

How to Use GPT-6 Luna for Free ?

GPT-6 Luna is genuinely free: Free and Go users get it in the ChatGPT desktop app, not in Chat, and not GPT-6 Sol. Here is the exact boundary, what the free tier leaves out, and the cheapest paid path at $0.10/$0.50 per 1M with 90% off cached reads.

23 September 2026

GPT-6 Luna vs Gemini 3.8 Flash vs DeepSeek: What the Sub-$1 API Tier Actually Costs

GPT-6 Luna vs Gemini 3.8 Flash vs DeepSeek: What the Sub-$1 API Tier Actually Costs

Luna just moved into the sub-$1 bracket. The three headline prices are not the same kind of number: one is measured against a promotion, one expires January 1 2027, one changes with the UTC clock. Here is the sourced table, the cached-input math, and a one-collection way to me...

23 September 2026

GPT-6 Luna vs Sol vs Astra: Picking a Tier on Cost Per Task

GPT-6 Luna vs Sol vs Astra: Picking a Tier on Cost Per Task

Per-token price says Luna is a hundred times cheaper than Astra. Per task, on OpenAI's own published numbers, Sol at high effort beat Astra at low effort while costing roughly a quarter as much. How to pick a GPT-6 tier on the unit you actually pay in.

23 September 2026

Practice API Design-first in Apidog

Discover an easier way to build and use APIs

GPT-6 Luna for High-Volume API Workloads: The Cost Math at Real Request Volumes