Seedance 2.5 is live on EvoLinkTry Seedance 2.5
Conceptual illustration of code panels connected through an API gateway to a glowing AI core
guide

How to Use the GPT-6 Astra API: First Call, Effort Levels & Migration from GPT-5.6

EvoLink Team
EvoLink Team
Product Team
September 5, 2026
14 min read
GPT-6 Astra is OpenAI's current flagship for difficult end-to-end coding, computer use, research, and agent work. It runs on EvoLink under the model ID gpt-6-astra, on the same OpenAI-compatible endpoint and API key as GPT-5.6, at 10% below OpenAI list price.
This guide is the integration reference. It covers the first request in three languages, the difference between Chat Completions and the Responses API for this model, how to choose a reasoning effort, the exact changes a GPT-5.6 integration needs, and the three billing rules that decide whether Astra costs more or less than Sol on your workload. For current EvoLink prices, the model card, and the cost calculator, use the GPT-6 Astra API page.
Provider and gateway scope. Model capabilities below refer to OpenAI documentation. EvoLink uses the endpoint shown here, but a successful text request does not establish support for image input, Batch/Flex/Fast, WebSocket steering, async tools, Pro mode, configuration_update, or the 30m cache option. These features require separate EvoLink route verification before use.

Quick Reference Card

ItemValue
Model IDgpt-6-astra (no gpt-6 alias on OpenAI or EvoLink)
Endpointhttps://api.evolink.ai/v1 (OpenAI-compatible)
API surfaces (OpenAI)Responses, Chat Completions (no tool calling), Batch; EvoLink feature support must be verified separately
Context window1,050,000 tokens shared by input and output; maximum input 922,000; maximum output 128,000
Input / outputText and image in; text out
Knowledge cutoffApril 30, 2026
Reasoning effortlow, medium, high, xhigh, max; none and minimal return a 400
Removed parameterstemperature, top_p, logprobs
Prompt cachingSupported; cache writes cost 1.25x input; TTL option is 30m
OpenAI list price (input ≤ 272K)$10 input / $1 cached / $12.50 cache write / $50 output per 1M tokens
Long-context band (input > 272K)Whole request at 2x input and cache rates and 1.5x output
EvoLink price10% below OpenAI list; current numbers on the API page
Not supportedFine-tuning, Realtime, Assistants, Embeddings, image or audio generation

Setup and First Request

Create a key in Dashboard → Keys. The same key routes GPT-5.6, Claude, Gemini, and GPT-6 Astra.

Step 2: Install the OpenAI SDK

pip install openai        # Python
npm install openai        # Node.js

Step 3: Make the first request

Start with a basic Responses request. OpenAI requires Responses for tool calling; advanced Responses features need separate verification on the EvoLink route.

cURL:
curl https://api.evolink.ai/v1/responses \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-astra",
    "input": "Explain the difference between cache reads and cache writes in one paragraph.",
    "reasoning": {"effort": "medium"}
  }'
Python:
from openai import OpenAI

client = OpenAI(
    api_key="your-evolink-api-key",
    base_url="https://api.evolink.ai/v1",
)

response = client.responses.create(
    model="gpt-6-astra",
    input="Explain the difference between cache reads and cache writes in one paragraph.",
    reasoning={"effort": "medium"},
)

print(response.output_text)
print(response.model, response.usage)
Node.js:
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "your-evolink-api-key",
  baseURL: "https://api.evolink.ai/v1",
});

const response = await client.responses.create({
  model: "gpt-6-astra",
  input: "Explain the difference between cache reads and cache writes in one paragraph.",
  reasoning: { effort: "medium" },
});

console.log(response.output_text);
console.log(response.model, response.usage);
Print response.model and response.usage on the first call. The returned model string should read gpt-6-astra, and the usage block shows input, cached, reasoning, and output tokens, which is what you will need to reconcile the bill.

Text-only requests on Chat Completions

Chat Completions works for plain text requests. Do not pass temperature, top_p, or tools:
response = client.chat.completions.create(
    model="gpt-6-astra",
    messages=[{"role": "user", "content": "Summarize this changelog in three bullets: ..."}],
    reasoning_effort="low",
)
print(response.choices[0].message.content)

Chat Completions vs the Responses API

This table describes OpenAI API capabilities, including text and image input. It is not an EvoLink support matrix: verify image input and each optional feature on the route you will use. Chat Completions does not support tool calling for this model.
FeatureChat CompletionsResponses API
Text in, text outYesYes
Image inputYesYes
StreamingYesYes
Structured outputsYesYes
Prompt cachingYesYes
Function / tool callingNoYes
Async tool callingNoYes
Mid-turn steering (response.steer over WebSocket)NoYes
Change effort mid-conversation while keeping the cache (configuration_update)NoYes
reasoning.mode: "pro"NoYes
temperature, top_p, logprobsRejectedRejected

If your agent loop lives on Chat Completions today, either move it to Responses or keep it on GPT-5.6, which still supports tool calling there.

One Responses-specific caveat: previous_response_id does not work for organizations with Zero Data Retention enabled. Send the conversation history explicitly in input instead.

Choosing a Reasoning Effort

Astra exposes five levels. OpenAI's own guidance is short: if you used none or minimal on an earlier model, start at low and compare. Developers who published migration logs in the first days after release converged on medium as the default starting point for coding work; those are community reports, not EvoLink measurements.
EffortWhat it is good forWhat to watch
lowExtraction, classification, short rewrites, anything that ran at none on GPT-5.6Still carries reasoning tokens; not a free tier
mediumDefault for coding tasks, multi-step tool use, document workThird-party runs show a large quality step over low for a modest cost step
highRepository-scale changes, long research chainsTime to first token and token spend rise sharply
xhighHard agent tasks where high fails the acceptance testCostly; verify with your own evaluation set
maxUnconstrained reasoning budgetThird-party measurements show time to first token in the minutes; rarely pays outside offline batch work

OpenAI documents two additional controls. EvoLink support for each is not yet verified; use the following as upstream reference:

  • configuration_update lets a Responses conversation change effort between turns without invalidating the prompt cache. Start at medium, escalate only the turns that fail.
  • reasoning.mode: "pro" is a separate quality mode on the Responses API; treat it as a distinct evaluation candidate, not a sixth effort level.

Set effort per request in Responses:

response = client.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "Refactor this module and explain each change."}],
    reasoning={"effort": "high"},
    max_output_tokens=8000,
)

Tool Calling on the Responses API

Function tools use the flat Responses tool format. The model may return a function_call item; execute it and send the result back as a function_call_output.
tools = [{
    "type": "function",
    "name": "get_build_status",
    "description": "Return the status of the latest CI build for a branch.",
    "parameters": {
        "type": "object",
        "properties": {"branch": {"type": "string"}},
        "required": ["branch"],
    },
}]

first = client.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "Is the main branch green? If not, summarize the failure."}],
    tools=tools,
    reasoning={"effort": "medium"},
)

calls = [item for item in first.output if item.type == "function_call"]
outputs = []
for call in calls:
    # run your tool here
    outputs.append({
        "type": "function_call_output",
        "call_id": call.call_id,
        "output": '{"status": "failed", "step": "unit-tests", "log_url": "https://ci.example/123"}',
    })

second = client.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "Is the main branch green? If not, summarize the failure."}]
          + list(first.output) + outputs,
    tools=tools,
    reasoning={"effort": "medium"},
)
print(second.output_text)
OpenAI also documents async tool calling: a function tool marked with "async": true lets the model continue reasoning while the tool runs. EvoLink support is not yet verified; a working synchronous loop does not establish async support.

Structured Outputs and Streaming

Structured outputs work on both surfaces. On Responses, pass a JSON schema through text.format:
response = client.responses.create(
    model="gpt-6-astra",
    input="Extract the model ID, context window, and output limit from this text: ...",
    text={
        "format": {
            "type": "json_schema",
            "name": "model_spec",
            "schema": {
                "type": "object",
                "properties": {
                    "model_id": {"type": "string"},
                    "context_tokens": {"type": "integer"},
                    "max_output_tokens": {"type": "integer"},
                },
                "required": ["model_id", "context_tokens", "max_output_tokens"],
                "additionalProperties": False,
            },
            "strict": True,
        }
    },
    reasoning={"effort": "low"},
)
print(response.output_text)
Streaming uses stream=True on either surface. With high effort levels the first token can take tens of seconds, so stream in any interactive path and show progress while reasoning runs.

Migrating from GPT-5.6

The table below lists OpenAI migration requirements. On EvoLink, verify the request fields and optional features individually before moving traffic; changing the model ID alone does not prove compatibility.

ChangeGPT-5.6GPT-6 Astra
Model IDgpt-5.6-sol, gpt-5.6-terra, gpt-5.6-lunagpt-6-astra
Sampling parameterstemperature, top_p acceptedRemove them; the request fails with 400
Reasoning effort none / minimalAcceptedMap to low
Tool calling surfaceChat Completions or ResponsesResponses only
Prompt cache optionprompt_cache_retentionprompt_cache_options: {"ttl": "30m"}
Conversation state with Zero Data Retentionprevious_response_idSend history in input
Codex CLIAny recent0.153.0 or newer

The diff for a typical Chat Completions call:

 response = client.chat.completions.create(
-    model="gpt-5.6-sol",
+    model="gpt-6-astra",
     messages=messages,
-    temperature=0.2,
-    reasoning_effort="none",
+    reasoning_effort="low",
 )
Behavior also shifts. OpenAI's guidance notes that Astra stays coherent longer on multi-step tasks, asks for clarification more often, follows instructions in files such as AGENTS.md more literally, and prefers lists and tables. Early adopters reported the opposite failure too: a small ticket turned into a very large diff. Keep the "minimal change" instruction explicit in the system prompt and keep GPT-5.6 routable for a rollback.
Run the same fixed task set on both models before moving traffic. The GPT-6 Astra vs GPT-5.6 comparison has the accepted-task cost formula and a routing rule you can start from.

Cost Rules: 272K, Caching, Batch and Flex

Three rules decide whether Astra costs more or less than Sol on a given workload. The examples use OpenAI list prices; EvoLink's rates are 10% lower and are listed on the API page.

Rule 1: above 272K input tokens the whole request is repriced

Input and cache rates double and the output rate rises 1.5x for the entire request, not just the tokens past the threshold.

RequestInput costOutput cost (20K tokens)Total
272,000 input tokens272K × $10 = $2.7220K × $50 = $1.00$3.72
280,000 input tokens280K × $20 = $5.6020K × $75 = $1.50$7.10

Eight thousand extra tokens nearly double the bill. Count tokens before sending, compact context when you approach the band, or route the request to GPT-5.6 Sol, whose long-context rate is $8 / $30.

Rule 2: caching pays from the first reuse

A cache write costs $12.50 per million tokens (1.25x input) and a cache read $1.00. For a shared prefix that is re-sent k more times:
  • uncached: 10 × (k + 1) dollars per million prefix tokens
  • cached: 12.50 + 1 × k
At k = 1 that is $20 versus $13.50, so caching wins on the first reuse and the gap widens from there. Keep stable content (system prompt, tool schemas, reference documents) at the front of the input, and note the 30-minute TTL: a session that idles longer pays the write again.

Rule 3: Batch and Flex cost half

On OpenAI, Batch and Flex cost 50% of Standard. They are candidates for offline evaluation, nightly processing, and backfills. Fast mode costs 2x, carries no latency SLA for Astra, and is unavailable with EU data residency. EvoLink availability and billing for these modes are not yet verified; do not apply these provider discounts to an EvoLink estimate without route-specific confirmation.

Putting the rules together

The configurations below are OpenAI evaluation candidates. Use Batch or configuration_update through EvoLink only after that feature is verified on your route.
WorkloadCheapest safe configuration
Interactive coding agent, 50K–150K contextResponses, medium, caching on, context kept under 272K
Nightly repository analysisBatch, high, chunks under 272K
Short extraction at scaleChat Completions, low, or GPT-5.6 Terra / Luna if quality allows
Long research chain with retriesResponses, medium with configuration_update escalation, fallback to Sol

Rate Limits and Fallback

OpenAI publishes Astra rate limits by usage tier. The numbers matter because a single full-context request can exceed a per-minute token budget.

OpenAI tierRequests per minuteTokens per minute
Tier 1500500,000
Tier 25,0001,000,000
Tier 35,0002,000,000
Tier 410,0004,000,000
Tier 515,00040,000,000

On EvoLink, limits are set per account; check your dashboard before load testing. Three failure modes deserve explicit handling:

  1. 400 on request shape. temperature, top_p, none effort, or tools on Chat Completions. Fix the request; do not retry.
  2. 429 or 5xx. Retry with backoff, then fall back to gpt-5.6-sol on the same key. The timeout, retry, and fallback guide covers the pattern.
  3. Task stopped by OpenAI's safety monitor. Astra runs under asynchronous misalignment monitoring; when it triggers, the API task stops. Log it, surface it to the operator, and route the task to a fallback model rather than looping.
def call_with_fallback(**kwargs):
    for model in ("gpt-6-astra", "gpt-5.6-sol"):
        try:
            return client.responses.create(model=model, **kwargs)
        except Exception as err:  # narrow this to 429/5xx in production
            last = err
    raise last

FAQ

Which model ID do I use for GPT-6?

gpt-6-astra. There is no generic gpt-6 alias on OpenAI or on EvoLink, and the same string works on Chat Completions and Responses.

Can I use tools with GPT-6 Astra on Chat Completions?

No. OpenAI documents tool calling for this model on Responses only, while Chat Completions accepts text and image input. Image input through EvoLink still requires route verification.

Which reasoning effort should I start with?

Start at medium for coding and agent tasks, or low for tasks that used none or minimal on GPT-5.6. OpenAI documents per-task escalation with configuration_update; use it through EvoLink only after route verification.

Does GPT-6 Astra accept temperature?

No. temperature, top_p, and logprobs return a 400. Remove them from the request.

How is a request above 272K input tokens billed?

The whole request moves to the long-context band: 2x input and cache rates, 1.5x output. Count tokens first and compact or split when you approach the threshold.

What changes when I migrate from GPT-5.6?

Update the model ID, remove temperature and top_p, map none to low, and move tool calls to Responses. OpenAI also documents a changed prompt-cache option. The EvoLink endpoint and key stay the same; verify cache options and advanced features on the route before migration.

Is GPT-6 Astra on Amazon Bedrock?

Not as of September 5, 2026. OpenAI named Bedrock as a channel, but AWS's OpenAI model cards still end at GPT-5.6. Azure Foundry lists it as generally available. The release tracker is updated when that changes.
On the GPT-6 Astra API page, which lists the default-group rates at 10% below OpenAI list, the long-context band, and a calculator.
Call GPT-6 Astra on EvoLink

Sources

Evidence last reviewed September 5, 2026. Provider facts come from OpenAI documentation; community effort recommendations are attributed and are not EvoLink measurements. Current EvoLink prices live on the API page.

Ready to Reduce Your AI Costs by 89%?

Start using EvoLink today and experience the power of intelligent API routing.