Text
GPT-6.1 Sol
Call GPT-6.1 Sol with the official OpenAI Responses or Chat Completions API: near-Astra coding and agent work, a 1.05M-token context and up to 128K output tokens.
GPT-6.1 Sol is OpenAI's upgrade to GPT-6 Sol for complex coding, computer use and professional work, with performance close to GPT-6 Astra at a lower cost. Send the official OpenAI Responses or Chat Completions request to TokLab: change the base URL and the API key, keep the body.
Model ID
| Model ID | Context window | Max output | Reasoning effort | Default effort |
|---|---|---|---|---|
gpt-6.1-sol | 1.05M tokens (922K input) | 128K tokens | low, medium, high, xhigh, max | medium |
Input: text and images. Output: text. Knowledge cutoff: April 30, 2026. See the pricing page for current prices.
Quick example
curl https://api.toklab.ai/v1/responses \
-H "Authorization: Bearer $TOKLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"input": "Summarize the trade-offs of event sourcing in three bullet points."
}'Endpoints
| Format | Method and path | Authentication |
|---|---|---|
| OpenAI Responses | POST https://api.toklab.ai/v1/responses | Authorization: Bearer <key> |
| OpenAI Chat Completions | POST https://api.toklab.ai/v1/chat/completions | Authorization: Bearer <key> |
| Anthropic Messages | POST https://api.toklab.ai/v1/messages | x-api-key: <key> or Authorization: Bearer <key>, plus anthropic-version |
The OpenAI endpoints forward your request body as sent and return the official response. Keep the API key in server-side code.
Parameters
Responses API fields:
| Name | Type | Required | Default | Notes |
|---|---|---|---|---|
model | string | Yes | — | gpt-6.1-sol. |
input | string or object[] | Yes | — | A prompt, or input items: messages whose content holds input_text and input_image parts. |
instructions | string | No | — | System (developer) instructions. |
max_output_tokens | integer | No | Model maximum | 16–128000. Includes reasoning tokens. |
reasoning.effort | enum | No | medium | low, medium, high, xhigh, max. none and minimal are not supported. |
reasoning.summary | enum | No | — | auto, concise or detailed: return a summary of the reasoning. |
reasoning.mode | enum | No | standard | standard or pro. |
reasoning.context | enum | No | auto | auto, current_turn or all_turns: which earlier reasoning is shown to the model. |
text.verbosity | enum | No | medium | low, medium or high. |
text.format | object | No | — | Structured output, for example {"type": "json_schema", "name": "...", "schema": {...}}. |
temperature, top_p, top_logprobs | — | No | — | Not used by GPT-6.1 Sol, which always reasons. Ignored if sent. |
stream | boolean | No | false | Stream the response as server-sent events. |
tools, tool_choice, parallel_tool_calls, max_tool_calls, include, metadata, store, truncation, prompt_cache_key, prompt_cache_options, prompt_cache_retention, context_management, moderation, prompt, previous_response_id, conversation, user | — | No | — | Forwarded as sent. |
Not available: background, service_tier (including Batch, Flex and fast mode) and safety_identifier.
Reasoning and effort
GPT-6.1 Sol defaults to medium and always reasons: none and minimal are not supported, and temperature, top_p and top_logprobs are not used. Higher effort usually means more output tokens, a longer wait and a higher cost. Reasoning tokens are billed as output tokens and count toward max_output_tokens.
Image input
Images go in a user message's content as input_image parts with an image_url:
{"role": "user", "content": [
{"type": "input_image", "image_url": "https://example.com/chart.png"},
{"type": "input_text", "text": "What does this chart show?"}
]}Replace the example URL with a publicly reachable image of your own.
Billing dimensions
See the current rates on the pricing page. A request is billed by the tokens it uses:
- input tokens,
- output tokens, including reasoning,
- cached input tokens (
usage.input_tokens_details.cached_tokens), and - cache-write tokens (
usage.input_tokens_details.cache_write_tokens).
When a prompt has more than 272K input tokens, the whole request is billed at the long-context rates. The charge is taken from the usage reported with the finished response. A request that fails is not charged. Your account's usage records show the exact charge for every request.
Output
A non-streaming request returns the official response object:
{
"id": "resp_...",
"object": "response",
"status": "completed",
"model": "gpt-6.1-sol",
"output": [{"type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "..."}]}],
"usage": {"input_tokens": 27, "input_tokens_details": {"cached_tokens": 0, "cache_write_tokens": 0}, "output_tokens": 102, "output_tokens_details": {"reasoning_tokens": 0}, "total_tokens": 129}
}With "stream": true the response is a stream of the official events, including response.created, response.output_text.delta and response.completed; the final response.completed event carries the usage.
Chat Completions
Existing Chat Completions code only needs a new base URL and model ID:
from openai import OpenAI
client = OpenAI(api_key="YOUR_TOKLAB_KEY", base_url="https://api.toklab.ai/v1")
chat = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "Hello"}],
max_completion_tokens=1024,
)
print(chat.choices[0].message.content)Set the output limit with max_completion_tokens and the effort with reasoning_effort. Use the Responses API for tool calling.
Anthropic Messages format
Code written for the Anthropic Messages API can call GPT-6.1 Sol too: send the Messages body to /v1/messages with "model": "gpt-6.1-sol". The request is converted to Chat Completions, so a field with no Chat Completions counterpart has no effect. The response carries the official Messages fields and may include a few extra usage fields; read usage.input_tokens, usage.output_tokens and the official fields.
Errors
Errors use {"error": {"code": ..., "message": "..."}}. The code is a code from the common error catalog. Failed requests are not charged.
Tips
- Start with the default
mediumeffort, uselowfor fast, simple steps and raise the effort only for hard tasks. - Set
max_output_tokenshigh enough for the reasoning as well as the answer: it is one budget for both. - Keep long, reused context at the start of the prompt so later requests read it from the cache at the lower rate.
Pricing
Every rate this model is billed at, read live from the price list billing uses. A tier applies when its condition matches, checked top to bottom.
gpt-6.1-sol
per 1M tokensDefault
| Context ≤ 272K | Otherwise | |
|---|---|---|
| Input | $0.20 | $0.40 |
| Output | $1.00 | $1.50 |
| Cache read | $0.01 | $0.02 |
| Cache write (5 min) | $0.25 | $0.50 |
| Cache write (1 h) | $0.25 | $0.50 |
Price tier: gpt official:gpt-0.7
| Context ≤ 272K | Otherwise | |
|---|---|---|
| Input | $1.40 | $2.80 |
| Output | $7.00 | $10.50 |
| Cache read | $0.07 | $0.14 |
| Cache write (5 min) | $1.75 | $3.50 |
| Cache write (1 h) | $1.75 | $3.50 |
Call as gpt-6.1-sol:<tier>
Related
Optional LLM group
The groups you can use depend on your account permissions and the model. The pricing page lists each group's prices.
API calls keep your API key and model ID. To select a group, send its exact name in the optional X-SeedRouter-Group request header, or append it to the model ID as model:<group> (see Model tiers). Replace GROUP_NAME below with one of your groups. Omit the header or use auto to keep the key's default behavior.
X-SeedRouter-Group: GROUP_NAMEA restricted API key may have fewer group options than your account. Requests use the selected group's pricing and do not switch to another group if it is unavailable. This option supports HTTP LLM calls, including SSE; it does not apply to WebSocket, image or video calls.
To see the groups your key can use, call GET /v1/models: it lists model:<group> next to the model ID for every model your key can call in more than one group.