Skip to main content
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

Set base_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 separate reasoning 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.
See Reasoning models for the streaming Python loop and rendering patterns.

Tool calling

gpt-oss-20b runs with the OpenAI tool-call parser and enable_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

Pass response_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 return 429 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 ~11.00/day( 11.00/day (~330/month). Volume committed-use pricing available — email hello@tera.gw.

Onboard

  1. Email hello@tera.gw — tell us expected concurrency, peak QPS, and rough token volumes.
  2. We issue an sk-tera-... key.
  3. Smoke-test against https://api.tera.gw/v1 from your gateway.
  4. Ramp.
Bring the X-Tera-Request-ID of any failing request and we can trace it end-to-end.