Skip to content

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.

  • 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.

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

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.

Terminal window
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:

Terminal window
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"]
}
}
}
]
}'

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 = none
openai/gpt-6-sol:max -> reasoning effort = max

Reasoning 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.

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.

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.

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.

Function calling, parallel calls, tool_choice: "required", and json_schema with strict: true are all supported. See Tool Calling for the shared request format.

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.