GPT-6 Sol and Luna
openai/gpt-6-sol and openai/gpt-6-luna are GPT-6 models that carry much of GPT-6 Astra's strength into faster, lower-cost models. Sol is tuned for reasoning-heavy work; Luna is optimized for fast responses and high volume.
| Model | Context | Output | Inputs |
|---|---|---|---|
openai/gpt-6-sol |
1,050,000 | 128,000 | Text, image, PDF |
openai/gpt-6-luna |
1,050,000 | 128,000 | Text, image, PDF |
Audio input is not supported; a request carrying audio is refused.
Which one to pick
Section titled “Which one to pick”- Sol: hard reasoning, agentic coding, tool-heavy multi-step workflows, and long-context analysis.
- Luna: high-volume, cost-sensitive work such as assistants, classification, summarization, extraction, and routing.
- For the hardest end-to-end work, use GPT-6 Astra.
Pricing
Section titled “Pricing”Prices are per million tokens and are OpenAI's list rates. No margin is added to model prices.
| Model | Input / Cache read / Output ($/1M) |
|---|---|
openai/gpt-6-sol |
2.00 / 0.20 / 10.00 |
openai/gpt-6-luna |
0.10 / 0.01 / 0.50 |
Cache writes are billed separately
Section titled “Cache writes are billed separately”Writing to the prompt cache is not free on the GPT-6 family: the cache-write rate is 1.25x the input rate. On GPT-5.6 and earlier OpenAI models, writes were free.
Amounts are USD per million tokens:
| Metric | Sol | Sol, above 272K tokens | Luna | Luna, above 272K tokens |
|---|---|---|---|---|
| Input | 2.00 | 4.00 | 0.10 | 0.20 |
| Cache read | 0.20 | 0.40 | 0.01 | 0.02 |
| Cache write | 2.50 | 5.00 | 0.125 | 0.25 |
| Output | 10.00 | 15.00 | 0.50 | 0.75 |
Cache-write tokens are a subset of input tokens, not an addition to them: on a cold request the cacheable prefix of the prompt is written to the cache, and that portion bills at the cache-write rate instead of the input rate. On later requests with the same prefix those same tokens bill at the cache-read rate, one tenth of input. Cache writes and cache reads appear as separate line items in your usage records.
When a request's input exceeds 272,000 tokens, the entire request is billed from the long-context columns: input and cache rates double, and the output rate rises by half.
Text call
Section titled “Text call”curl "$LLMTR_BASE_URL/v1/responses" \ -H "Authorization: Bearer $LLMTR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-6-sol", "input": "List the gaps in this service'\''s error handling.", "max_output_tokens": 1024 }'Both models can also be called through /v1/chat/completions, and the response comes back in the OpenAI chat format. Tool definitions can be sent together with a reasoning level on this endpoint as well:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer $LLMTR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-6-luna", "reasoning_effort": "low", "messages": [ { "role": "user", "content": "Get the weather for Istanbul." } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } } ] }'Reasoning effort levels
Section titled “Reasoning effort levels”Both models accept six levels: none, low, medium, high, xhigh, and max. The default is medium. none turns reasoning off. minimal is not accepted; the gateway returns 400 if it is sent.
{ "model": "openai/gpt-6-sol", "reasoning_effort": "max", "input": "Find the root cause of this concurrency bug.", "max_output_tokens": 4096}The level can be set three ways, in priority order reasoning_effort > reasoning.effort > slug suffix. On these models the :max suffix resolves to real max:
openai/gpt-6-luna:none -> reasoning effort = noneopenai/gpt-6-sol:max -> reasoning effort = maxReasoning tokens bill at the output rate. At higher levels, a low max_output_tokens can spend the whole budget on reasoning and leave the answer text empty. See Reasoning Effort for details.
Sampling parameters
Section titled “Sampling parameters”temperature and top_p are not supported on these models. If a request includes them, the gateway removes them instead of rejecting the request and reports the removal in the llmtr_dropped_parameters field of the response.
Service tier
Section titled “Service tier”The service_tier field (priority, flex) is not applied: the request runs on the standard tier and bills at the standard rates above. The field is removed from the body and reported in llmtr_dropped_parameters.
Image and document input
Section titled “Image and document input”You can send an image or a PDF in the content array:
{ "model": "openai/gpt-6-luna", "input": [ { "role": "user", "content": [ { "type": "input_text", "text": "Extract the total from this receipt." }, { "type": "input_image", "image_url": "data:image/png;base64,..." } ] } ], "max_output_tokens": 1024}Image tokens bill at the input rate.
Tool calling and structured output
Section titled “Tool calling and structured output”Function calling, parallel calls, tool_choice: "required", and json_schema with strict: true are all supported. See Tool Calling for the shared request format.
Streaming
Section titled “Streaming”Both models support streaming. The final frame of the stream carries the complete usage block, cache-write count included, so streamed requests are billed from real token counts as well. See Streaming.