feat: add Impossibl provider (#3390)
* Add Impossibl provider Impossibl (https://impossibl.com) is an OpenAI-compatible AI gateway, served via @ai-sdk/openai-compatible at https://api.impossibl.com/v1. Adds provider.toml, logo, and 76 model entries generated from the live api.impossibl.com/v1/models catalog. Each entry inherits metadata via base_model and carries Impossibl's serving price (USD / 1M tokens); no limit/modalities overrides (the gateway serves the base metadata's). reasoning_options are effort-only (the OpenAI-compatible /v1/chat/completions surface exposes only reasoning_effort), with per-model value subsets taken from each model's canonical metadata intersected with the gateway's accepted set, or [] where the model has no effort control on this surface. 14 served models are omitted for now — models.dev has no base metadata to inherit from for them yet. * Do not assert per-model reasoning_options for Impossibl The published effort ladders were derived from which values the live gateway accepted with HTTP 200. That measures the request validator of whichever upstream happened to serve the probe, not the model: Fireworks validates against a generic OpenAI-style enum, Azure Foundry ignores the field entirely, and the gateway forwards reasoning_effort verbatim without per-model mapping. The same GLM-5.2 therefore read as a five-rung ladder on one route and as no control at all on another. Replaces every asserted set with an empty one plus the reason, matching how other gateway providers document an unverifiable control surface. Entries whose base model has no reasoning at all keep no key. * Give the Inkling entry its own served limits models/thinkingmachines/inkling.toml omits limit.output because the served output cap varies by host (16K on NVIDIA, 32K on Baseten, 256K on Vercel, 1M on OpenRouter), so every provider entry supplies its own. This one did not, which fails validation now that the base model has changed on dev. Impossibl serves Inkling through Thinking Machines' own Tinker API, so their published served limits apply verbatim: 65_536 both ways, matching the context window the gateway itself records for this route. * Move in-file rationale into the leading comment block AGENTS.md: the daily model sync re-serializes provider TOMLs and discards every comment except a leading header block, so rationale placed between keys is silently deleted on the next sync. The reasoning_options justification sat between base_model and reasoning_options in all 68 files, and the Inkling limit note sat above [limit]; both would have been lost. Also recites the Inkling limits against the gateway catalog and Tinker's own docs rather than an in-repo path, since that path differs between this branch and dev. * Explain the Inkling route instead of reusing the generic rationale Inkling is the one Impossibl entry with a fixed single upstream, so the generic "whichever upstream serves the model" rationale did not fit it. limit: the 64K window now cites the first-party Tinker entry in this repo, which publishes the same 65_536/65_536 limits and the same 1.87/4.68/0.374 pricing. Tinker's 256K window is a separately priced tier (Inkling:peft:262144, 3.74/9.36), not this route. reasoning_options: Tinker documents its effort control only on the Anthropic-compatible surface (output_config.effort, thinking.type). Impossibl reaches Tinker over the OpenAI-compatible endpoint, for which no control is documented, so none is asserted — the same basis on which providers/nvidia publishes an empty set. * Match the Inkling route modalities to the first-party Tinker entry The entry already aligns limits and cost with providers/thinkingmachines/models/ thinkingmachines/Inkling.toml on the grounds that it is the same Tinker tier, but still inherited the base model's audio input. Tinker serves this route as text+image, so advertising audio implied an input the route may reject. * fix: derive reasoning_options from verified per-route behavior, correct pricing reasoning_options was `[]` on all 68 reasoning entries; a maintainer was right that this is wrong for essentially all of them. 59 of 68 now publish a verified control. These are generated from our gateway's model registry rather than hand-authored, and a `--check` mode fails on drift. A control is published only where the model's declared shape and its verified REACH agree: reach is established by making the upstream do the rejecting, so a 502/422 carrying its own error text proves the field was forwarded rather than dropped. Where our enum and the upstream's coincide and no rejection is possible, reach is shown by billed effect instead. Acceptance alone is never used as evidence. Every verdict is taken on the route that actually serves the model, confirmed per attempt in our request log. That distinction is load-bearing: `zai/glm-5.2` is answered by Azure Foundry (which ignores reasoning fields) while its seven siblings are answered by Z.ai, so one GLM entry is `[]` and seven publish a toggle. An earlier draft had this backwards, having measured Z.ai's own API rather than the route we use. Also corrects three classes of pricing error found by diffing every entry against the catalog the PR cites: - `gpt-5.6-luna` was published at 5x the billed rate; `gpt-5.6-terra` carried a copied `gpt-5.4` cost block. - `gpt-5.6-sol` omitted `cache_write` entirely. - 11 entries published flat pricing for models the catalog bills in a higher bracket above a per-model input threshold, understating long-context requests by up to 2x. Provider `doc` now points at the public models-and-pricing listing rather than the site root, and the shared rationale lives in one leading comment block on provider.toml. * fix: fireworks/glm-5.2 has no verified effort control Fireworks does validate `reasoning_effort` for this model id — it enumerates its own enum in a 502 for `minimal` — so the value genuinely reaches the upstream. But validation is not a control, and this entry was published on that basis alone while Z.ai and Qwen were held to a stricter standard. Measured per rung through the gateway on a short-answer prompt, where output length is the reasoning signal: output swings 121-275 tokens WITHIN the same rung, with no ordering across rungs and no reasoning content at any level. No rung is distinguishable, so there is nothing meaningful to advertise. Both `glm-5.2` entries are now `[]`, for opposite reasons: the Fireworks route validates but has no effect, and the Z.ai-namespaced route is served by Azure Foundry, which ignores the field entirely. * chore: keep the provider files data-only The generated header on provider.toml was carrying material that has no business in another project's repository: our internal source-file and tooling names, which upstream serves which model, raw probe transcripts, and — worst — a description of an unfixed defect in our own product. None of that is data about the models. Evidence for the published values belongs in the PR conversation, where a reviewer can weigh it, not in a committed data file. The audit guide says the same: "Put citations in the PR body, not TOML comments." Per-option `# API:` comments stay, trimmed to the bare request payload, matching the example AGENTS.md gives for exactly this purpose. They document the public request syntax a caller sends, which is not obvious for the controls that are not OpenAI's `reasoning_effort`. * chore: justify the Inkling overrides from our own catalog, not from routing The limit and modality overrides were explained by naming the upstream that serves this model. That is routing detail, and it does not belong in another project's repository. Our own public catalog reports this model's served context window (65_536), its input modalities (text+image) and its prices directly, so it justifies every overridden value on its own terms — the base model's 1_048_576 window and audio input are simply not what is served here. No upstream needs naming for that to be checkable. * Revert "chore: justify the Inkling overrides from our own catalog, not from routing" This reverts commit 71598cbd14e7622735f1c84ded3dafccaab9dc20.
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor">
|
||||
<rect x="48" y="0" width="160" height="256"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 138 B |
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-fable-5"
|
||||
|
||||
[cost]
|
||||
input = 10.00
|
||||
output = 50.00
|
||||
cache_read = 1.00
|
||||
cache_write = 12.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "xhigh", "max"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-haiku-4-5"
|
||||
|
||||
[cost]
|
||||
input = 1.00
|
||||
output = 5.00
|
||||
cache_read = 0.10
|
||||
cache_write = 1.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"thinking":{"type":"enabled","budget_tokens":<n>}}
|
||||
min = 1024
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-opus-4-5"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 25.00
|
||||
cache_read = 0.50
|
||||
cache_write = 6.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"thinking":{"type":"enabled","budget_tokens":<n>}}
|
||||
min = 1024
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-opus-4-6"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 25.00
|
||||
cache_read = 0.50
|
||||
cache_write = 6.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"thinking":{"type":"enabled","budget_tokens":<n>}}
|
||||
min = 1024
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "max"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-opus-4-7"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 25.00
|
||||
cache_read = 0.50
|
||||
cache_write = 6.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "xhigh", "max"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-opus-4-8"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 25.00
|
||||
cache_read = 0.50
|
||||
cache_write = 6.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "xhigh", "max"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-sonnet-4-5"
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
cache_write = 3.75
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"thinking":{"type":"enabled","budget_tokens":<n>}}
|
||||
min = 1024
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-sonnet-4-6"
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
cache_write = 3.75
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"thinking":{"type":"enabled","budget_tokens":<n>}}
|
||||
min = 1024
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "max"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "anthropic/claude-sonnet-5"
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 10.00
|
||||
cache_read = 0.20
|
||||
cache_write = 2.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking":{"type":"disabled"}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"output_config":{"effort":"high"}}
|
||||
values = ["low", "medium", "high", "xhigh", "max"]
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-oss-120b"
|
||||
|
||||
[cost]
|
||||
input = 0.35
|
||||
output = 0.75
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "deepseek/deepseek-v4-flash"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 0.19
|
||||
output = 0.51
|
||||
cache_read = 0.028
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "deepseek/deepseek-v4-pro"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.74
|
||||
output = 3.48
|
||||
cache_read = 0.145
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-5.2"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.40
|
||||
output = 4.40
|
||||
cache_read = 0.14
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-oss-120b"
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.60
|
||||
cache_read = 0.015
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-oss-20b"
|
||||
|
||||
[cost]
|
||||
input = 0.07
|
||||
output = 0.30
|
||||
cache_read = 0.035
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-2.5-flash-lite"
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.40
|
||||
cache_read = 0.01
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"generationConfig":{"thinkingConfig":{"thinkingBudget":<n>}}}
|
||||
min = 512
|
||||
max = 24576
|
||||
@@ -0,0 +1,15 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-2.5-flash"
|
||||
|
||||
[cost]
|
||||
input = 0.30
|
||||
output = 2.50
|
||||
cache_read = 0.03
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"generationConfig":{"thinkingConfig":{"thinkingBudget":<n>}}}
|
||||
min = 0
|
||||
max = 24576
|
||||
@@ -0,0 +1,18 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-2.5-pro"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 200_000 }
|
||||
input = 2.50
|
||||
output = 15.00
|
||||
cache_read = 0.25
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "budget_tokens" # API: {"generationConfig":{"thinkingConfig":{"thinkingBudget":<n>}}}
|
||||
min = 128
|
||||
max = 32768
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-3.1-flash-lite"
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 1.50
|
||||
cache_read = 0.025
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"generationConfig":{"thinkingConfig":{"thinkingLevel":"low"}}}
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-3.1-pro-preview"
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 12.00
|
||||
cache_read = 0.20
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 200_000 }
|
||||
input = 4.00
|
||||
output = 18.00
|
||||
cache_read = 0.40
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"generationConfig":{"thinkingConfig":{"thinkingLevel":"low"}}}
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-3.5-flash-lite"
|
||||
|
||||
[cost]
|
||||
input = 0.30
|
||||
output = 2.50
|
||||
cache_read = 0.03
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"generationConfig":{"thinkingConfig":{"thinkingLevel":"low"}}}
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-3.5-flash"
|
||||
|
||||
[cost]
|
||||
input = 1.50
|
||||
output = 9.00
|
||||
cache_read = 0.15
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"generationConfig":{"thinkingConfig":{"thinkingLevel":"low"}}}
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "google/gemini-3.6-flash"
|
||||
|
||||
[cost]
|
||||
input = 1.50
|
||||
output = 7.50
|
||||
cache_read = 0.15
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"generationConfig":{"thinkingConfig":{"thinkingLevel":"low"}}}
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-oss-120b"
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.60
|
||||
cache_read = 0.075
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-oss-20b"
|
||||
|
||||
[cost]
|
||||
input = 0.075
|
||||
output = 0.30
|
||||
cache_read = 0.0375
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
@@ -0,0 +1,6 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-3.5-turbo"
|
||||
|
||||
[cost]
|
||||
input = 0.50
|
||||
output = 1.50
|
||||
@@ -0,0 +1,6 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4-turbo"
|
||||
|
||||
[cost]
|
||||
input = 10.00
|
||||
output = 30.00
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4.1-mini"
|
||||
|
||||
[cost]
|
||||
input = 0.40
|
||||
output = 1.60
|
||||
cache_read = 0.10
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4.1-nano"
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.40
|
||||
cache_read = 0.025
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4.1"
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 8.00
|
||||
cache_read = 0.50
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4o-mini"
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.60
|
||||
cache_read = 0.075
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-4o"
|
||||
|
||||
[cost]
|
||||
input = 2.50
|
||||
output = 10.00
|
||||
cache_read = 1.25
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5-codex"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5-mini"
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 2.00
|
||||
cache_read = 0.025
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5-nano"
|
||||
|
||||
[cost]
|
||||
input = 0.05
|
||||
output = 0.40
|
||||
cache_read = 0.005
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5-pro"
|
||||
|
||||
[cost]
|
||||
input = 15.00
|
||||
output = 120.00
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.1-codex-mini"
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 2.00
|
||||
cache_read = 0.025
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.1-codex"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.1"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.2-codex"
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 14.00
|
||||
cache_read = 0.175
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.2"
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 14.00
|
||||
cache_read = 0.175
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.3-codex"
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 14.00
|
||||
cache_read = 0.175
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.4-mini"
|
||||
|
||||
[cost]
|
||||
input = 0.75
|
||||
output = 4.50
|
||||
cache_read = 0.075
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.4-nano"
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 1.25
|
||||
cache_read = 0.02
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.4-pro"
|
||||
|
||||
[cost]
|
||||
input = 30.00
|
||||
output = 180.00
|
||||
cache_read = 3.00
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 60.00
|
||||
output = 270.00
|
||||
cache_read = 3.00
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.4"
|
||||
|
||||
[cost]
|
||||
input = 2.50
|
||||
output = 15.00
|
||||
cache_read = 0.25
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 5.00
|
||||
output = 22.50
|
||||
cache_read = 0.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.5-pro"
|
||||
|
||||
[cost]
|
||||
input = 30.00
|
||||
output = 180.00
|
||||
cache_read = 3.00
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 60.00
|
||||
output = 270.00
|
||||
cache_read = 3.00
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.5"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 30.00
|
||||
cache_read = 0.50
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 10.00
|
||||
output = 45.00
|
||||
cache_read = 1.00
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.6-luna"
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 1.20
|
||||
cache_read = 0.02
|
||||
cache_write = 0.25
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 0.40
|
||||
output = 1.80
|
||||
cache_read = 0.04
|
||||
cache_write = 0.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.6-sol"
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 30.00
|
||||
cache_read = 0.50
|
||||
cache_write = 6.25
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 10.00
|
||||
output = 45.00
|
||||
cache_read = 1.00
|
||||
cache_write = 12.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5.6-terra"
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 12.00
|
||||
cache_read = 0.20
|
||||
cache_write = 2.50
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 272_000 }
|
||||
input = 4.00
|
||||
output = 18.00
|
||||
cache_read = 0.40
|
||||
cache_write = 5.00
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/gpt-5"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["minimal", "low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/o1"
|
||||
|
||||
[cost]
|
||||
input = 15.00
|
||||
output = 60.00
|
||||
cache_read = 7.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/o3-mini"
|
||||
|
||||
[cost]
|
||||
input = 1.10
|
||||
output = 4.40
|
||||
cache_read = 0.55
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/o3"
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 8.00
|
||||
cache_read = 0.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,11 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "openai/o4-mini"
|
||||
|
||||
[cost]
|
||||
input = 1.10
|
||||
output = 4.40
|
||||
cache_read = 0.275
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
@@ -0,0 +1,16 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "alibaba/qwen3.6-flash"
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 1.50
|
||||
cache_read = 0.05
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 262_144 }
|
||||
input = 1.00
|
||||
output = 4.00
|
||||
cache_read = 0.20
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "alibaba/qwen3.7-max"
|
||||
|
||||
[cost]
|
||||
input = 2.50
|
||||
output = 7.50
|
||||
cache_read = 0.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,16 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "alibaba/qwen3.7-plus"
|
||||
|
||||
[cost]
|
||||
input = 0.40
|
||||
output = 1.60
|
||||
cache_read = 0.08
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 262_144 }
|
||||
input = 1.20
|
||||
output = 4.80
|
||||
cache_read = 0.24
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "alibaba/qwen3.8-max-preview"
|
||||
|
||||
[cost]
|
||||
input = 2.50
|
||||
output = 7.50
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "xhigh"]
|
||||
@@ -0,0 +1,35 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
# Sources (accessed 2026-07-28):
|
||||
# - https://tinker-docs.thinkingmachines.ai/tinker/models/ (served context + pricing)
|
||||
# - https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/ (the surface this
|
||||
# route uses; reasoning_effort evidence is in the PR body, not this page)
|
||||
#
|
||||
# limit: unlike Impossibl's other entries this route is FIXED to a single upstream —
|
||||
# Thinking Machines' own Tinker API — so the served window is Tinker's 64K tier. That
|
||||
# matches the first-party entry in this repo (providers/thinkingmachines/models/
|
||||
# thinkingmachines/Inkling.toml), which publishes the same 65_536/65_536 limits and the
|
||||
# same 1.87/4.68/0.374 pricing. Tinker's 256K window is a separately priced tier
|
||||
# (Inkling:peft:262144, 3.74/9.36), not this route. The base model declares
|
||||
# 1_048_576/1_048_576 (the largest host's cap), so BOTH limit.context and limit.output are
|
||||
# overridden down to what this route actually serves rather than inherited.
|
||||
# modalities follow the same first-party entry: Tinker serves this route as
|
||||
# text+image, dropping the base model's audio input, so it is overridden here rather than
|
||||
# advertising an input the route may reject.
|
||||
base_model = "thinkingmachines/inkling"
|
||||
|
||||
[cost]
|
||||
input = 1.87
|
||||
output = 4.68
|
||||
cache_read = 0.374
|
||||
|
||||
[limit]
|
||||
context = 65_536
|
||||
output = 65_536
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh"]
|
||||
@@ -0,0 +1,7 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xai/grok-4.20-0309-non-reasoning"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.50
|
||||
cache_read = 0.20
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xai/grok-4.20-0309-reasoning"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.50
|
||||
cache_read = 0.20
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xai/grok-4.3"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.50
|
||||
cache_read = 0.20
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xai/grok-4.5"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 6.00
|
||||
cache_read = 0.30
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xai/grok-build-0.1"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.00
|
||||
output = 2.00
|
||||
cache_read = 0.20
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "xiaomi/mimo-v2.5"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 0.14
|
||||
output = 0.28
|
||||
cache_read = 0.003
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-4.5-air"
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 1.10
|
||||
cache_read = 0.03
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-4.5"
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 2.20
|
||||
cache_read = 0.11
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-4.6"
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 2.20
|
||||
cache_read = 0.11
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-4.7"
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 2.20
|
||||
cache_read = 0.11
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-5-turbo"
|
||||
|
||||
[cost]
|
||||
input = 1.20
|
||||
output = 4.00
|
||||
cache_read = 0.24
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-5.1"
|
||||
|
||||
[cost]
|
||||
input = 1.40
|
||||
output = 4.40
|
||||
cache_read = 0.26
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,8 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-5.2"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 1.40
|
||||
output = 4.40
|
||||
cache_read = 0.26
|
||||
@@ -0,0 +1,10 @@
|
||||
# Pricing: https://api.impossibl.com/v1/models
|
||||
base_model = "zhipuai/glm-5"
|
||||
|
||||
[cost]
|
||||
input = 1.00
|
||||
output = 3.20
|
||||
cache_read = 0.20
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"reasoning_effort":"none"}
|
||||
@@ -0,0 +1,5 @@
|
||||
name = "Impossibl"
|
||||
npm = "@ai-sdk/openai-compatible"
|
||||
api = "https://api.impossibl.com/v1"
|
||||
env = ["IMPOSSIBL_API_KEY"]
|
||||
doc = "https://impossibl.com/docs/models"
|
||||
Reference in New Issue
Block a user