Model id:
openai/gpt-oss-20b — pass this as the model field. The API surface is the OpenAI Chat Completions API; existing OpenAI SDKs and any gateway that abstracts over OpenAI-compatible providers work without code changes.At a glance
Pricing
Reasoning tokens count toward output. See How billing works.
Quickstart
Setbase_url to https://api.tera.gw/v1 and pass your sk-tera-... key. No other code change.
Reasoning
gpt-oss-20b runs with the OpenAI gpt-oss reasoning parser. Chain-of-thought tokens are returned in a separatereasoning field so they don’t pollute content. OpenAI SDKs that expect a plain content string continue to work.
Some providers expose this as
reasoning_content. We follow OpenAI’s recommendation and use reasoning. If you’re porting code that expects reasoning_content, treat the two as aliases.Tool calling
gpt-oss-20b runs with the OpenAI tool-call parser andenable_auto_tool_choice=true. The request and response shapes match the OpenAI Chat Completions API 1:1.
tool_choice accepts "auto" (default), "none", "required", or {"type": "function", "function": {"name": "..."}}. Parallel tool calls are supported — the response can contain multiple entries in tool_calls. Streaming tool calls arrive as delta.tool_calls[i].function.arguments JSON fragments that must be concatenated by call index.
See Tool calling for the full streaming reconstruction example.
Structured outputs / JSON mode
Passresponse_format to constrain the assistant’s output.
Streaming
Set"stream": true and consume Server-Sent Events on the same endpoint. See Streaming for the wire format.
Sampling parameters
temperature, top_p, top_k, max_tokens, stop, seed, frequency_penalty, presence_penalty, repetition_penalty, logprobs, top_logprobs
seed is honored for deterministic sampling. top_k, repetition_penalty, and min_p are vLLM extensions beyond OpenAI’s surface — ignored by clients that don’t pass them.
Supported features
tools, json_mode, structured_outputs, reasoning, logprobs
OpenAI compatibility matrix
Reliability and routing
For gateways that route across multiple providers (Respan, OpenRouter, in-house abstractions), the relevant behaviors:- Cold start: The first request after a backend cold-boot is slow (~2–12s TTFT) because vLLM compiles CUDA graphs on first traffic. Subsequent requests are warm. Schedule a warmup probe before routing real traffic if you can.
- Gateway-side retry: 5xx errors trigger automatic retry across healthy replicas within the Tera gateway before being returned to you. You’ll see a single response.
- Health-aware routing: Unhealthy backends are taken out of rotation automatically; clients don’t need to manage this.
- Concurrency: Per-key concurrency and throughput are sized to your workload. Reach out for higher provisioned envelopes.
- Idempotency: Requests are not deduplicated server-side. If you retry a request that may have succeeded, you may be billed for both.
- Streaming cancellation: If the client disconnects mid-stream, generation is cancelled on the backend.
Observability
Every response carries headers and a body useful for trace correlation.
Read the header with the OpenAI Python SDK via the
with_raw_response accessor:
Errors
All errors return a JSON body of the shape:Rate limits
Per-key concurrency and tokens-per-second are provisioned to your expected workload. Tell us the shape — peak QPS, sustained concurrency, rough token volumes — and we’ll size accordingly. Bursts beyond your provisioned envelope return429 with Retry-After.
Cost example
Typical agentic turn with a tool call (1,000 input tokens, 600 output tokens):
At 50,000 turns/day this runs ~330/month). Volume committed-use pricing available — email hello@tera.gw.
Onboard
- Email hello@tera.gw — tell us expected concurrency, peak QPS, and rough token volumes.
- We issue an
sk-tera-...key. - Smoke-test against
https://api.tera.gw/v1from your gateway. - Ramp.
X-Tera-Request-ID of any failing request and we can trace it end-to-end.