> Markdown mirror of https://router.one/blog/gpt-6-luna-api-guide for AI assistants and crawlers. Router One is a unified, OpenAI-compatible LLM API gateway.
> Published: 2026-10-31 · Author: Router One Team

# GPT-6 Luna API Guide: Model ID, Tool Calls, Billing

_GPT-6 Luna on Router One: the openai/gpt-6-luna ID, OpenAI's tool rules for Responses and Chat Completions, wallet billing (no plan tier) and first requests._

Router One lists GPT-6 Luna, which OpenAI released on September 22, 2026, as `openai/gpt-6-luna` as of the 2026-10-30 catalog. The [GPT-6 Luna model page](https://router.one/models/gpt-6-luna) lists two endpoints for it: `POST /v1/responses` and `POST /v1/chat/completions`. Point any OpenAI-compatible SDK or client at `https://api.router.one/v1`, send `"model": "openai/gpt-6-luna"` with a Router One key, and the request is routed, metered and logged like every other model. GPT-6 Luna is in no plan tier as of the 2026-10-31 plan response, so every call bills per token to your wallet, plan or no plan; the model page carries the live rates.

This guide covers what the catalog lists for the id, how OpenAI positions GPT-6 Luna against GPT-6.1 Terra, GPT-6.1 Sol and GPT-6 Astra, what OpenAI's documentation says about tool calls, effort levels, sampling parameters and image input, how billing works when no plan covers the model, and the first request on each endpoint. Catalog and plan observations are dated; the live catalog is the source of truth for a new request.

## GPT-6 Luna at a glance

| Field | What the catalog lists (2026-10-30) |
| --- | --- |
| Catalog id | `openai/gpt-6-luna`, listed as of the 2026-10-30 catalog |
| Context window | on the [model page](https://router.one/models/gpt-6-luna); OpenAI's model page lists 1,050,000 tokens (checked 2026-10-31) |
| Input / output | text and image in, text out |
| Capability flags | chat, streaming, tool calling, vision |
| Price lines | two: a standard line, and a whole-request line for requests strictly above 272,000 input tokens |
| Endpoints | `POST /v1/responses` and `POST /v1/chat/completions`, as the model page lists them |
| Not served on | `POST /v1/messages` (Claude-family and DeepSeek ids only) |
| Channel | the default channel, plus the Azure channel id [`azure/gpt-6-luna`](https://router.one/models/azure-gpt-6-luna), listed as of the 2026-10-30 catalog: a separately priced product with its own rates |
| Plans | no Pro, Max or Ultra tier (2026-10-31 plan response) — wallet billing |

OpenAI's [GPT-6 Luna model page](https://developers.openai.com/api/docs/models/gpt-6-luna) (checked 2026-10-31) adds what the catalog does not carry. It describes GPT-6 Luna as "our most efficient model for focused, high-volume tasks", lists a maximum of 922,000 input tokens and 128,000 output tokens inside its 1,050,000-token window and a May 18, 2026 knowledge cutoff, and documents `reasoning.effort` values `none`, `low`, `medium` (the default), `high`, `xhigh` and `max`. The same page says to use the Responses API for built-in tools and function calling, and that Chat Completions supports function calling only with `reasoning_effort` set to `none`. Those are OpenAI's statements; what Router One vouches for is the catalog entry and how the gateway routes and bills it.

## GPT-6 Luna, GPT-6.1 Terra, GPT-6.1 Sol or GPT-6 Astra?

OpenAI's [GPT-6 guide](https://developers.openai.com/api/docs/guides/latest-model) (checked 2026-10-31) gives four GPT-6 models a one-line label: GPT-6 Astra for the "highest intelligence", GPT-6.1 Sol for "balanced speed, cost, and intelligence", GPT-6.1 Terra as "fast and efficient", and GPT-6 Luna as "fastest and most cost-effective", with "strong performance for focused, high-volume tasks". OpenAI's [models overview](https://developers.openai.com/api/docs/models) (checked 2026-10-31) suggests GPT-6 Luna "for cost-sensitive, high-volume workloads", and its [model selection guide](https://developers.openai.com/api/docs/guides/model-selection) (checked 2026-10-31) pairs Luna with two effort levels: low for "fine-grained edits, well-scoped problem-solving, and simple data extraction", and extra high for "finding current context across multiple apps, prioritizing work, and solving problems with clear constraints". The same guide says to compare results on the same inputs and keep the lightest setting that meets your quality bar. Those are OpenAI's descriptions of its own lineup and its own list prices, not Router One measurements or rates: run your own prompts on the same inputs before you move a workload.

What Router One adds to the choice:

- **Plan quota or wallet.** As of the 2026-10-31 plan response, GPT-6.1 Sol and GPT-6 Sol count against the Premium models allowance of Pro, Max and Ultra and GPT-6 Astra against the Flagship models allowance, which Max and Ultra carry, while GPT-6 Luna and GPT-6.1 Terra are in no plan tier and bill the wallet on every account.
- **Posted rates.** Router One posts its own rates for each id. The [GPT-6 Luna model page](https://router.one/models/gpt-6-luna) shows them live, and the comparison page below renders them beside DeepSeek V4.1 Flash; re-baseline cost when you switch.
- **Same request path.** GPT-6 Luna, GPT-6.1 Terra, GPT-6.1 Sol and GPT-6 Astra are GPT-family ids that the model pages list on `/v1/responses` and on `/v1/chat/completions`.

One comparison page renders the spec sheets and live rates side by side:

- [GPT-6 Luna vs DeepSeek V4.1 Flash](https://router.one/models/compare/gpt-6-luna-vs-deepseek-v4-1-flash) — OpenAI's model for focused, high-volume tasks beside DeepSeek's Flash model. DeepSeek V4.1 Flash is also served on `/v1/messages`, and as of the 2026-10-31 plan response DeepSeek V4.1 Flash draws the Standard models allowance, while GPT-6 Luna is in no plan tier and bills the wallet.

## What OpenAI's rules change in your requests

The key, base URL and endpoints are the same as for the other GPT ids on Router One. What GPT-6 Luna asks of a request comes from OpenAI's model page and its [GPT-6 guide](https://developers.openai.com/api/docs/guides/latest-model) (migration quickstart, checked 2026-10-31):

- **Tool calls.** Use the Responses API for built-in tools and function calling. Chat Completions supports function calling for GPT-6 Luna only with `reasoning_effort` set to `none`, and the GPT-6 guide says to use Responses for reasoning with tools (checked 2026-10-31). GPT-6.1 Terra, GPT-6.1 Sol and GPT-6 Astra take tool calls only on Responses; GPT-6 Sol follows the same Chat Completions rule as GPT-6 Luna.
- **Effort levels.** GPT-6 Luna accepts `none`, `low`, `medium`, `high`, `xhigh` and `max`, and per OpenAI's reasoning guide it defaults to `medium` (checked 2026-10-31); GPT-6.1 Sol and GPT-6 Astra do not accept `none`. Set it with `reasoning.effort` on Responses or `reasoning_effort` on Chat Completions.
- **Sampling parameters.** When the reasoning effort is not `none`, remove `temperature`, `top_p` and `top_logprobs`, plus `logprobs` on Chat Completions; on Responses, take `message.output_text.logprobs` out of `include`. GPT-6 Luna defaults to `medium`, so leave them out; OpenAI's rule covers every effort other than `none` (checked 2026-10-31).
- **Knowledge cutoff.** May 18, 2026, per the model page.

## Image input

The catalog lists text and image input for `openai/gpt-6-luna`, and OpenAI's model page lists image input among its supported features. OpenAI's [images and vision guide](https://developers.openai.com/api/docs/guides/images-vision) (checked 2026-10-31) shows how to send images to its models on the Responses and Chat Completions APIs. Send images inline as base64 data URLs; Router One serves no Files API. Per OpenAI's API changelog (September 25, 2026 entry, checked 2026-10-31), OpenAI fixed a bug in image encoding that had degraded image understanding in GPT-6 Sol and GPT-6 Luna, and suggests rerunning evaluations of workflows with image inputs. This guide makes no claim about image results through Router One; test your own images before you depend on them.

## How billing works

The catalog lists two rate lines for the id, and the model page shows both; the total input tokens of one request select which one applies. At exactly 272,000 input tokens the standard line still applies. Strictly above it, the long-context line applies to the whole request — output included — not only to the tokens past the threshold. Monthly volume plays no part.

An agent loop that resends a growing conversation can cross 272,000 input tokens. From that request on, each request bills on the long-context line until the context is back under the threshold, so the client's compaction settings decide which line most of a long session lands on.

Reasoning output is billed at the model's posted output rate, with no separate reasoning line ([pricing facts](https://router.one/facts/pricing.md)), so the reasoning effort is a cost lever as much as a quality one, and on this model it reaches down to `none`. The model page also lists a cached-input line; the [prompt caching guide](https://router.one/llm-prompt-caching) shows how to read cache counts in `usage` so input is not counted twice, the [pricing methodology](https://router.one/pricing-methodology) spells out the long-context rule, and the [cost calculator](https://router.one/llm-cost-calculator) applies it per request.

This guide prints no per-token figures because they go stale. The [GPT-6 Luna model page](https://router.one/models/gpt-6-luna) shows both lines live, and the comparison page above renders them beside DeepSeek V4.1 Flash.

## Do subscription plans cover GPT-6 Luna?

Not as of the 2026-10-31 plan response: GPT-6 Luna is in no tier of the Pro, Max or Ultra plans, so its calls bill per token to your wallet balance at the posted rates, whether or not you hold a plan. The same holds for its Azure channel id, `azure/gpt-6-luna`. In the 2026-10-31 plan response, GPT-6.1 Sol and GPT-6 Sol are in the Premium models tier of all three plans, GPT-6 Astra in the Flagship models tier of Max and Ultra, and DeepSeek V4.1 Flash in the Standard models tier of all three; GPT-6.1 Terra is in no tier either. Plan model lists change; the [pricing page](https://router.one/pricing) shows the live lists and each plan's allowance.

## The Azure channel id and GPT-5.6 Luna

As of the 2026-10-30 catalog, the Azure channel lists [`azure/gpt-6-luna`](https://router.one/models/azure-gpt-6-luna): the same base model as `openai/gpt-6-luna`, sold as a separately priced product with its own rates on its model page. Routing stays inside the Azure channel, and a plan quota covers a channel id only when the live plan response lists it; the [channel model ids guide](https://router.one/blog/azure-aws-vertex-channel-model-ids) states the channel rules. The examples below use the default-channel id.

GPT-5.6 Luna (`openai/gpt-5.6-luna`) is a different, earlier model. It is listed again as of the 2026-10-30 catalog, no tier of the 2026-10-31 plan response lists it, and this guide does not cover it.

## Send the first request

1. **Create a key.** Dashboard → API Keys → Create Key. Keys look like `sk-...`. For a trial, give the key a `maxSpend` cap. A key's spend cap (maxSpend) limits what that key can charge to your wallet: once its cumulative wallet charges reach the cap, its wallet-billed requests return HTTP 402. Requests covered by your plan's quota draw from the account's shared plan quota and do not count toward any key's cap. Your other keys keep working ([per-key cost tracking](https://router.one/llm-cost-tracking)).
2. **Keep a wallet balance.** GPT-6 Luna calls bill the wallet, on a plan or not (2026-10-31 plan response) — top up in Dashboard → Deposit.
3. **Set the base URL** to `https://api.router.one/v1` in any OpenAI-compatible SDK or client.
4. **Call the model.** The examples use the catalog id `openai/gpt-6-luna` and set an explicit output cap.

Responses, with one function tool and the effort set explicitly (`medium` is the vendor default):

```bash
curl https://api.router.one/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-luna",
    "reasoning": {"effort": "low"},
    "max_output_tokens": 25000,
    "tools": [{
      "type": "function",
      "name": "get_order_status",
      "description": "Look up the status of an order by its id.",
      "parameters": {
        "type": "object",
        "properties": {"order_id": {"type": "string"}},
        "required": ["order_id"]
      }
    }],
    "input": "Where is order 8812?"
  }'
```

When the output contains a `function_call` item, run the function and send its result back as a `function_call_output` item with the same `call_id`.

Chat Completions without tools, at the default effort:

```bash
curl https://api.router.one/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-luna",
    "max_completion_tokens": 25000,
    "messages": [{"role": "user", "content": "Extract the order id and the delivery date from this message as JSON: Order 8812 shipped on October 29 and should arrive on November 3."}]
  }'
```

Chat Completions with a function tool: per OpenAI's GPT-6 Luna model page (checked 2026-10-31), function calling on this endpoint needs `reasoning_effort` set to `none`:

```bash
curl https://api.router.one/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-luna",
    "reasoning_effort": "none",
    "max_completion_tokens": 25000,
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_order_status",
        "description": "Look up the status of an order by its id.",
        "parameters": {
          "type": "object",
          "properties": {"order_id": {"type": "string"}},
          "required": ["order_id"]
        }
      }
    }],
    "messages": [{"role": "user", "content": "Where is order 8812?"}]
  }'
```

When the reply carries `tool_calls`, run the function and send its result back as a `tool` message with the same `tool_call_id`. For tool calls with reasoning, OpenAI points to the Responses API.

A Responses call from the OpenAI Python SDK — only `base_url` and the key change:

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.router.one/v1",
    api_key="sk-your-api-key",
)

response = client.responses.create(
    model="openai/gpt-6-luna",
    reasoning={"effort": "low"},
    max_output_tokens=25000,
    input="Extract the order id and the delivery date from this message as JSON: Order 8812 shipped on October 29 and should arrive on November 3.",
)
print(response.status, response.output_text)
print(response.usage)
```

Rules that hold on both endpoints:

- **Set an output cap on every request.** Reasoning tokens count toward the output cap; OpenAI suggests reserving at least 25,000 tokens for reasoning and outputs when you start (reasoning guide, checked 2026-10-31). On the Responses API, per the same guide, a response that reaches the cap comes back with `status: "incomplete"`, possibly before any visible text. On Router One's Chat Completions, `max_tokens` and `max_completion_tokens` both set this cap (if both are sent, `max_completion_tokens` wins); on the Responses API it is `max_output_tokens`.
- **Leave out the sampling parameters.** No `temperature`, `top_p`, `top_logprobs` or `logprobs`: OpenAI's rule covers every effort other than `none`, as listed above.
- **Stream long work.** `stream: true` returns output as it is generated, on either endpoint ([streaming guide](https://router.one/llm-streaming)).
- **Stay off `/v1/messages`.** Sending the id there returns HTTP 400 before any model is called, and the message says the model must be called via /v1/chat/completions. The [API compatibility facts](https://router.one/facts/api-compatibility.md) state the endpoint rule per family.

5. **Read the trace.** Dashboard → Logs shows each call with model, input and output tokens, cost, latency and status ([per-request observability](https://router.one/llm-observability)). Retryable upstream failures are absorbed by [automatic fallback](https://router.one/llm-fallback) across the candidate routes for the same model; a GPT-6 Luna request is never answered by a different model.

## Other coding tools

Coding agents send tools on almost every turn, and per OpenAI's GPT-6 Luna model page (checked 2026-10-31) Chat Completions supports function calling only with `reasoning_effort` set to `none`, so agent work at any other effort needs a client that sends Responses requests. Before you point a tool at it, check which protocol that tool sends: the tool table in [GPT-6 Sol in Codex CLI, Cursor, Cline and OpenCode](https://router.one/blog/gpt-6-sol-coding-tools-setup) lists the request path per tool. Claude Code cannot call GPT-6 Luna: it sends Anthropic Messages requests, and `/v1/messages` serves Claude-family and DeepSeek ids only. Per OpenAI's Codex changelog (checked 2026-10-31), the Codex CLI 0.156.1 notes read "Choose GPT-6 Sol or GPT-6 Luna from the model picker", and per the openai/codex source (rust-v0.166.0, checked 2026-10-31) Codex's bundled model list includes `gpt-6-luna`; the default that Codex 0.159.1 and later use when `config.toml` names no model is still `gpt-6.1-sol`.

## From mainland China

Requests reach `api.router.one` from mainland China without a VPN, on the same key and base URL. Top up with a card or Alipay through one hosted checkout, or with USDT/USDC on six chains (Tron, BSC, Ethereum, Polygon, Base, Arbitrum). No US credit card required. GPT-6 Luna's live rates are on its [model page](https://router.one/models/gpt-6-luna).

## FAQ

**What is the model id for GPT-6 Luna on Router One?**
openai/gpt-6-luna, listed as of the 2026-10-30 catalog; use it on /v1/responses and /v1/chat/completions. The Azure channel lists azure/gpt-6-luna, a separately priced product with its own rates, and GPT-5.6 Luna (openai/gpt-5.6-luna) is a different, earlier model, listed again as of the 2026-10-30 catalog. GPT-6 Luna is in no plan tier as of the 2026-10-31 plan response, so its calls bill the wallet per token.

**Is GPT-6 Luna included in Router One subscription plans?**
Not as of the 2026-10-31 plan response: GPT-6 Luna is in no tier of the Pro, Max or Ultra plans, so its calls bill per token to the wallet, on a plan too, and the same holds for azure/gpt-6-luna. In the 2026-10-31 plan response, GPT-6.1 Sol and GPT-6 Sol are in the Premium models tier of all three plans and DeepSeek V4.1 Flash in the Standard models tier. The pricing page shows the live plan model lists.

**GPT-6 Luna or GPT-6.1 Terra?**
OpenAI labels GPT-6 Luna "fastest and most cost-effective" and GPT-6.1 Terra "fast and efficient" (GPT-6 guide, checked 2026-10-31), and its model selection guide says to compare results on the same inputs and keep the lightest setting that meets your quality bar. Per OpenAI, GPT-6 Luna supports function calling on Chat Completions with reasoning_effort none, while GPT-6.1 Terra takes tool calls only on the Responses API; both accept the none reasoning effort. On Router One both are in no plan tier as of the 2026-10-31 plan response and bill the wallet per token; their model pages carry the live rates.

**GPT-6 Luna or DeepSeek V4.1 Flash?**
Both take text and image input. Per OpenAI (checked 2026-10-31), GPT-6 Luna takes built-in tools and function calls on the Responses API and function calls on Chat Completions only with reasoning_effort none; per DeepSeek's thinking mode guide (checked 2026-10-31), DeepSeek V4.1 Flash runs in thinking mode by default, where temperature, presence_penalty and frequency_penalty have no effect. Router One also serves DeepSeek V4.1 Flash on /v1/messages, so Claude Code can call DeepSeek V4.1 Flash but not GPT-6 Luna. As of the 2026-10-31 plan response, DeepSeek V4.1 Flash counts against the Standard models allowance on Pro, Max and Ultra, while GPT-6 Luna is in no plan tier and bills the wallet. The GPT-6 Luna vs DeepSeek V4.1 Flash page renders the live rates side by side.

**Can I call tools on Chat Completions with GPT-6 Luna?**
Only with reasoning_effort set to none, per OpenAI: its GPT-6 Luna model page (checked 2026-10-31) says to use the Responses API for built-in tools and function calling and that Chat Completions supports function calling only with reasoning_effort set to none, and its GPT-6 guide says to use Responses for reasoning with tools. Send tool-using requests at any other effort to /v1/responses.

**Which reasoning.effort values does GPT-6 Luna accept?**
Per OpenAI's model page (checked 2026-10-31): none, low, medium (the default), high, xhigh and max. OpenAI's model selection guide (checked 2026-10-31) suggests low for fine-grained edits, well-scoped problem-solving and simple data extraction, and extra high for prioritizing work and solving problems with clear constraints. At any effort other than none, OpenAI says to leave out temperature, top_p and top_logprobs (plus logprobs on Chat Completions). Reasoning tokens bill as output, so the effort is also the cost lever.

**Why does a request over 272K input tokens cost more?**
Because the catalog lists two rate lines for openai/gpt-6-luna, and the whole request moves to the long-context line once its total input is strictly above 272,000 tokens — output included, not only the tokens past the threshold. At exactly 272,000 the standard line applies, and monthly usage does not select the line. The GPT-6 Luna model page shows both lines live.

**Does Codex CLI list GPT-6 Luna?**
Yes, in its bundled model list. Per OpenAI's Codex changelog (checked 2026-10-31), the Codex CLI 0.156.1 notes read "Choose GPT-6 Sol or GPT-6 Luna from the model picker", and per the openai/codex source (rust-v0.166.0, checked 2026-10-31) that list has a gpt-6-luna entry; the default that Codex 0.159.1 and later use when config.toml names no model is still gpt-6.1-sol.

**Can Claude Code call GPT-6 Luna?**
No. Claude Code sends Anthropic Messages requests to /v1/messages, which serves Claude-family and DeepSeek ids only; a GPT id there returns HTTP 400 before any model is called.

## Next steps

- Open the [GPT-6 Luna model page](https://router.one/models/gpt-6-luna) for the live rates, both price lines and the endpoint list.
- Compare it with [DeepSeek V4.1 Flash](https://router.one/models/compare/gpt-6-luna-vs-deepseek-v4-1-flash).
- Weighing GPT-6.1 Terra, GPT-6.1 Sol or GPT-6 Astra instead? The [GPT-6.1 Terra API guide](https://router.one/blog/gpt-6-1-terra-api-guide), the [GPT-6.1 Sol API guide](https://router.one/blog/gpt-6-1-sol-api-guide) and the [GPT-6 Astra API guide](https://router.one/blog/gpt-6-astra-api-guide) cover them.
- Read the channel rules for `azure/gpt-6-luna` in the [channel model ids guide](https://router.one/blog/azure-aws-vertex-channel-model-ids).
- Check which models each plan covers on the [pricing page](https://router.one/pricing).
- See October's other catalog changes in the [October 2026 new-model guide](https://router.one/blog/new-llm-models-october-2026).

## See also

- Canonical page: https://router.one/blog/gpt-6-luna-api-guide
- LLM API Gateway and Routing: https://router.one/llm-api-gateway
- All blog posts: https://router.one/blog
- Models and per-model token rates: https://router.one/models (markdown: https://router.one/models.md)
- Pricing: https://router.one/pricing
- API docs (markdown): https://router.one/docs.md
- Company facts: https://router.one/facts/company.md
