Skip to content

OpenAI: gpt-oss-120b

openai/gpt-oss-120b

gpt-oss-120b is an open-weight, 117B-parameter Mixture-of-Experts (MoE) language model from OpenAI designed for high-reasoning, agentic, and general-purpose production use cases.

Modalities
TextText
In / out price
$0.125 / $0.875
per 1M tokens
Context
128K
128,000 tokens
Max output
4K
4,096 tokens
Released
Aug 5, 2025

Pricing

What you pay per 1 million tokens. Cached prompt tokens are billed at the cache-read price when the upstream reports them; otherwise at the input price.

Token typePrice / 1MPer token
Input (prompt)$0.125$0.000000125
Output (completion)$0.875$0.000000875
Cache read——

Worked example: a request with 10,000 prompt tokens and 1,000 completion tokens costs $0.002125. While it runs, the request holds the maximum it could cost (based on max_tokens), then settles at the actual cost. How pricing works

Capabilities

Only capabilities we have verified end to end through the API are listed.

Features
StreamingTool callingStructured outputsReasoning
Input
Text
Output
Text
Context window
128,000 tokens
Max output
4,096 tokens

Performance on AI Models Router

Measured from real requests through our API in the last 7 days, all customers. A figure appears once it rests on at least 50 requests; until then we show how many there are, never an estimate.

Success rate
99.4%
168 requests
Cache-hit rate
81.9%
167 requests
Time to first token
844ms
median · 115 requests
Output speed
53.4 tok/s
median · 108 requests
How each figure is measured
Success rate
Requests that returned a complete response, out of those that succeeded or failed on the supply side (an upstream error, timeout, capacity limit or a fault on our side). Requests you cancel, invalid requests and your own credit or key limits don't count. A request that fails before any output is never charged.
Cache-hit rate
Cached prompt tokens as a share of all prompt tokens, billed at the cache-read price.
Time to first token
Median time from your request reaching us to the first streamed token, reasoning included.
Output speed
Median output tokens per second after the first token, on streamed replies of at least 50 tokens.

Updated every 10 minutes · last computed 19:55 UTC

Usage · last 30 days

Requests
173
Tokens
3.74M
3.69M in · 50K out

Requests per day

Requests by day
DayRequests
2026-10-060
2026-10-070
2026-10-080
2026-10-090
2026-10-100
2026-10-110
2026-10-120
2026-10-130
2026-10-140
2026-10-150
2026-10-160
2026-10-170
2026-10-180
2026-10-190
2026-10-200
2026-10-210
2026-10-220
2026-10-230
2026-10-240
2026-10-250
2026-10-260
2026-10-270
2026-10-284
2026-10-290
2026-10-300
2026-10-310
2026-11-0134
2026-11-0221
2026-11-03114
2026-11-040

API

  1. 1Get your API key

    Create a key on the API keys page and export it:

    Shell
    export AMR_API_KEY=sk-amr-v1-...
  2. 2Make your first request

    Any OpenAI-compatible client works. The model slug is openai/gpt-oss-120b.

    from openai import OpenAI
    
    client = OpenAI(
        base_url="https://api.aimodelsrouter.ai/v1",
        api_key="sk-amr-v1-...",  # or os.environ["AMR_API_KEY"]
    )
    
    completion = client.chat.completions.create(
        model="openai/gpt-oss-120b",
        messages=[{"role": "user", "content": "What is the meaning of life?"}],
    )
    print(completion.choices[0].message.content)
  3. 3Stream the response

    Set stream: true. The final chunk carries usage and cost.

    stream = client.chat.completions.create(
        model="openai/gpt-oss-120b",
        messages=[{"role": "user", "content": "Write a haiku about routers."}],
        stream=True,
        stream_options={"include_usage": True},
    )
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
        if chunk.usage:  # final chunk: one choice with an empty delta, usage present
            print("\ncost (USD):", chunk.usage.cost)