Introduction
GPT 6.1 Terra reads screenshots and documents, then turns the supplied evidence into concise drafts or extracted fields. For Terra, name the screenshot region and the fields you want extracted; keep unreadable values explicitly unknown rather than requesting a guess.
| Field | Value |
|---|---|
| Input | Text |
| Output | Text |
| Context window | 1,050,000 tokens |
| max_tokens ceiling | 128,000 |
| Inputs | text / images |
Key features & highlights
The lighter GPT 6.1 for everyday work
GPT 6.1 Terra reads screenshots and documents, then turns the supplied evidence into concise drafts or extracted fields. For Terra, name the screenshot region and the fields you want extracted; keep unreadable values explicitly unknown rather than requesting a guess.
A none setting for turns that need no planning
Terra accepts none, low, medium, high, xhigh and max; none is useful for a direct extraction task. Terra defaults to a 4,096-token reply cap and permits 128,000; reserve part of that allowance for reasoning whenever effort is above none.
Larger images, read in more detail
Terra allows 256 conversation messages and 128 tool definitions, with a per-image input budget of 37,000 tokens on this endpoint. For Terra, name the screenshot region and the fields you want extracted; keep unreadable values explicitly unknown rather than requesting a guess.
The same million-token window, with a long-prompt tier
Terra’s 1,050,000-token context includes source documents, conversation and reply; reserve up to 128,000 tokens for generated output. A Terra document bundle exceeding 272,000 input tokens uses the long-prompt rate for the whole request, including its answer; check the displayed rate before submitting a large collection.
Request parameters
| Parameter | Required | Description |
|---|---|---|
messages | Yes | Send Terra the screenshot with the extraction instructions in messages and preserve tool-call IDs on follow-up turns. at least 1 items · at most 256 items |
max_tokens | No | Set Terra’s |
reasoning_effort | No | Terra accepts none, low, medium, high, xhigh and max; none is useful for a direct extraction task. |
stop | No | Terra accepts one stop string or a list of up to four; avoid a marker likely to appear inside an extracted value. at least 1 characters · at least 1 items · at most 4 items |
temperature | No | Terra’s temperature applies with |
top_p | No | For Terra at |
tools | No | Describe the lookup or extraction functions Terra can propose; execution belongs to your application. at most 128 items |
parallel_tool_calls | No | Allow Terra to propose several independent lookups together when no result is needed to form another call. Default: |
tool_choice | No | Choose auto, none, required or a named function for Terra’s document workflow. |
response_format | No | Request the JSON shape for Terra’s extracted fields and check it against your schema. |
Pricing
Input $1 / Output $5 per 1 million tokens; Prompts over 272K tokens: Input $2 / Output $7.50
Use cases
Read screenshots and turn them into changes
For Terra, name the screenshot region and the fields you want extracted; keep unreadable values explicitly unknown rather than requesting a guess.
Extract fields from documents and forms
Pass a scanned form or a long document and ask for named fields in a fixed JSON shape. Use reasoning_effort none or low for straightforward extraction, and validate the output in your application.
Draft and rewrite in a consistent voice
Give Terra your style notes and a few approved examples, then ask for replies, summaries or product copy. It is built for clear, natural writing, and low effort is usually enough.
Close the loop on tool calls
Request the JSON shape for Terra’s extracted fields and check it against your schema.
Prompt guide & pro tips
Choose the effort by task
Terra accepts none, low, medium, high, xhigh and max; none is useful for a direct extraction task.
Point the model at the part of the image
Add the image as an
image_urlpart and name the region, such as the third column of the table. Keep the instruction in text next to it, and do not rely on small print the image cannot resolve.Set
max_tokensfor the reply you expectmax_tokensdefaults to 4,096 and accepts up to 128,000, with reasoning counted inside it. Short extraction needs little; a long draft at a higher effort needs more. Stream long replies and checkfinish_reason.Close the loop on tool calls
If you define tools, return each result as a tool message with the matching
tool_call_idand keep the assistant'stool_callsin the history. Validate the arguments before acting on them.
GPT 6.1 Terra
GPT 6.1 Terra reads screenshots and documents, then turns the supplied evidence into concise drafts or extracted fields.
openai/gpt-6.1-terra/chat
For Terra, name the screenshot region and the fields you want extracted; keep unreadable values explicitly unknown rather than requesting a guess.
Terra defaults to a 4,096-token reply cap and permits 128,000; reserve part of that allowance for reasoning whenever effort is above none.
For a Terra extraction workflow, define the functions your application can run and return their results under the original tool_call_id; this compatibility endpoint allows up to 128 definitions. Native OpenAI tool calls require Responses.
A Terra document bundle exceeding 272,000 input tokens uses the long-prompt rate for the whole request, including its answer; check the displayed rate before submitting a large collection.
GPT 6.1 Terra’s visual and writing capabilities do not imply unrestricted NSFW output; content acceptance remains subject to the model’s rules.
GPT 6.1 Terra’s visual and writing capabilities do not imply unrestricted NSFW output; content acceptance remains subject to the model’s rules.
API quick start
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "openai/gpt-6.1-terra/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
See the API reference for authentication, the complete schema, polling, and error handling.
