GPT-6 Luna via API: the low-cost GPT-6 for bulk text tasks

The cheapest GPT-6 model in the catalog. How to connect it, what it can't take as input, and what labelling 100,000 messages costs.

6 min · · models · экономия

GPT-6 Luna is the cheapest GPT-6 model in the Zukko catalog: $0.04 per million input tokens and $0.21 per million output tokens. It is used for bulk text tasks: classification, labelling, short extractions. Below is how to connect the gpt-6 luna api, what its limitations are, and what classifying 100,000 messages actually costs.

GPT-6 Luna pricing and its siblings

Prices in USD per 1M tokens, as of 2026-10-06.

ModelidInput / outputCache: read / writeIntelligence indexContextImage input
GPT-6 Lunagpt-6-luna0.04 / 0.210.038 / —381Mno
GPT-5.6 Lunagpt-5.6-luna0.06 / 0.30.013 / ——1Mno
GPT-6 Solgpt-6-sol0.13 / 0.630.013 / ——1Myes
GPT-6.1 Solgpt-6.1-sol0.27 / 1.320.013 / —521Myes

For GPT a cache write is not charged separately: the first request is billed in full at the input price, hence the dash in the write column. In the index column, a dash means we have no intelligence index value for that model. The intelligence index is the Artificial Analysis Intelligence Index, a composite benchmark score; GPT-6 Luna scores 38, GPT-6.1 Sol scores 52. The vendor's official price for GPT-6 Luna is $0.1 / $0.5.

For the current model list and prices, call GET https://api.zukko.pro/v1/models or open the Models page in the dashboard.

What to know before you connect

  • No image input. Screenshots, receipt photos, scans — not for Luna. Use a model that accepts images, such as gpt-6-sol or gpt-6.1-sol.
  • Output costs about five times input (0.21 vs 0.04). The model pays off where answers are short: a label, a number, a couple of JSON fields.
  • Caching barely helps. A cache read costs $0.038 versus $0.04 for regular input — a 5% difference. Don't build your task's economics around caching.
  • 1M-token context, so long texts fit, but every input token is billed.

How to connect GPT-6 Luna via API

The model works in the OpenAI-compatible format: base URL https://api.zukko.pro/v1, a fetch_... key from the dashboard. A quick curl check:

bash
curl https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "messages": [
      {"role": "system", "content": "Classify the review sentiment: positive, negative or neutral. Answer with one word."},
      {"role": "user", "content": "Delivered a day late, but the courier apologised and everything was intact."}
    ]
  }'

In Python, the official openai SDK is all you need:

bash
from openai import OpenAI

client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_your_key")

resp = client.chat.completions.create(
    model="gpt-6-luna",
    messages=[{"role": "user", "content": "Extract the city from this address: 5 Lenin St, Kazan, 420000"}],
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

If your app already talks to OpenAI, you only change base_url, the key, and the model name. More in the Python docs and the chat/completions docs.

The math: classifying 100,000 messages

A typical task: sort support tickets into five categories. Assumptions:

  • a system prompt with instructions and the category list — 300 tokens;
  • an average customer message — 150 tokens;
  • the answer — a category label, about 10 tokens.

Formula:

cost = (N × input_per_request × input_price + N × output_per_request × output_price) / 1,000,000

For GPT-6 Luna:

  • input: 100,000 × (300 + 150) = 45,000,000 tokens → 45 × $0.04 = $1.80
  • output: 100,000 × 10 = 1,000,000 tokens → 1 × $0.21 = $0.21
  • total: $2.01

The same volume on other models (the same 45M input and 1M output):

ModelInputOutputTotal
GPT-6 Luna45 × 0.04 = $1.801 × 0.21 = $0.21$2.01
GPT-5.6 Luna45 × 0.06 = $2.701 × 0.3 = $0.30$3.00
GPT-6.1 Sol45 × 0.27 = $12.151 × 1.32 = $1.32$13.47
Gemini 3.8 Flash45 × 0.025 = $1.1251 × 0.088 = $0.088$1.213
DeepSeek V4.1 Flash45 × 0.013 = $0.5851 × 0.038 = $0.038$0.623

The honest takeaway: within the GPT line, Luna is much cheaper than Sol, but among all low-cost models in the catalog it is not the cheapest. If staying on GPT isn't a requirement, compare it with Gemini 3.8 Flash and DeepSeek V4.1 Flash on your own data — calculations for all the low-cost models are collected in the article on the cheapest models for bulk tasks.

Where the estimate can diverge from reality

  • Answer length. If the model writes a 100-token explanation instead of a label, output grows to 10,000,000 tokens: 10 × $0.21 = $2.10, and the total becomes $1.80 + $2.10 = $3.90. Ask for "label only" in the prompt and check completion_tokens.
  • Tokenisation. 150 tokens per message is an assumption. The real number depends on language and text length.
  • Caching the system prompt. Even if all 300 prompt tokens were read from cache, that is 30,000,000 tokens × $0.038 = $1.14 instead of 30 × $0.04 = $1.20 — $0.06 over the whole run. Short prompts may not be cached at all. For GPT models, cached tokens show up in prompt_tokens_details.cached_tokens.

The reliable approach: run 200–500 real messages, sum prompt_tokens and completion_tokens from the responses, and multiply by 100,000 / sample size.

A bulk classification script

An example with parallel requests, retry on 429, and cost based on actual usage:

bash
import csv
import time
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_your_key")

CATEGORIES = ["billing", "delivery", "refund", "technical", "other"]
SYSTEM = (
    "You classify customer messages. Answer with exactly one category from this list: "
    + ", ".join(CATEGORIES)
    + ". No explanations."
)

Zukko has no general rate limit of its own: a 429 comes either from a used-up key limit (key_daily_limit_reached / key_monthly_limit_reached, retrying is pointless) or from a limit on the model provider's side. Tune the thread count gradually: if you often get 429 from the provider, lower max_workers. For organising a large request stream, see the article on bulk processing without hitting limits.

When GPT-6 Luna is a good choice

  • The task is text-only and the answer is short and checkable: a label, yes/no, a field from the text.
  • You already use GPT models and want to move routine work to a cheaper model without changing format or prompts.
  • Luna reaches acceptable accuracy on your sample. Its index of 38 is below GPT-6.1 Sol's 52, so compare both on the same 50–100 examples with known correct answers and count the share of matches.

If accuracy falls short, the next step up the line is GPT-6 Sol or GPT-6.1 Sol, but recompute the budget with the table above first.

To try it, create a key in the dashboard and run a test sample — 500 messages cost about one cent under our assumptions.

FAQ

Can I send GPT-6 Luna an image?

No, this model does not accept image input. For images, use a model that does, such as gpt-6-sol or gpt-6.1-sol.

How does GPT-6 Luna compare to GPT-5.6 Luna on price?

GPT-6 Luna is $0.04 / $0.21 per 1M tokens, GPT-5.6 Luna is $0.06 / $0.3. In our classification example that is $2.01 vs $3.00. GPT-5.6 Luna has a cheaper cache read ($0.013), which can matter with long repeated prompts.

Does GPT-6 Luna work through the Anthropic format?

Yes, any model can be called in either format; the gateway converts the request. For bulk scripts, the OpenAI SDK is simpler.

How do I avoid overspending on a large run?

Create a separate key for the run with a daily USD limit and allowed_models set to gpt-6-luna only, and run a sample first to check real token usage.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

GPT-6 Luna API: setup, pricing and volume math · Zukko