DX-2986: add Claude Fable 5.1 and GPT-6 Astra, correct spark and nano picker entries - #233
Merged
Merged
Conversation
Two model picker entries no longer match what the backend charges.
OpenAICodex.GPT_5_3_Codex_Spark is a ChatGPT research preview, not an API
model; its OpenAI docs page 404s and the coordinator no longer prices it, so
selecting it produced a run against a model that does not exist and would
bill at the {3.0, 1.50, 15.0} unknown-model default. Removed from the picker.
OpenCodeModel.GPT_5_3_Codex_Spark is deliberately untouched: same name,
different product. Zen sells it and still publishes a price.
Zen now charges $0.05 / $0.40 per MTok for GPT-5 Nano, but the picker still
listed it under "OpenCode — Free" as "GPT-5 Nano (Free)", so the UI advertised
free while the backend billed paid. Moved to the Paid group and dropped the
suffix. Big Pickle is still genuinely free and stays.
The SDK enums keep both spark members. They are exported from the TypeScript
and Python SDKs, so removing them is a breaking change; deprecating them is a
separate PR. Taking them out of the picker is what stops users selecting one.
Anthropic released Claude Fable 5.1. Same $10 / $50 per MTok as Fable 5, but cache reads are 0.025x base input ($0.25 / MTok) rather than the 0.1x every other Claude model uses. Fable 5 moves to the legacy list and stays selectable. Added across every provider that actually carries it, verified against each catalog rather than assumed: ClaudeCode.Fable_5_1 anthropic/claude-fable-5-1 OpenRouterModel.Claude_Fable_5_1 openrouter/anthropic/claude-fable-5.1 VercelModel.Claude_Fable_5_1 vercel/anthropic/claude-fable-5.1 OpenCodeModel.Claude_Fable_5_1 opencode/claude-fable-5-1 OpenCodeModel.Zen_Claude_Fable_5_1 opencode/claude-fable-5-1 Note the spelling split: the Claude API and Zen use claude-fable-5-1, while the OpenRouter and Vercel gateways list it as claude-fable-5.1. Confirmed against OpenRouter's live /api/v1/models and the Vercel gateway catalog. CursorModel is deliberately untouched. Cursor publishes no catalog I could check, so adding an entry there would be a guess. Eight picker entries added, mirroring where Fable 5 already appears.
merge main
OpenAI released gpt-6-astra. Added to every catalog that carries it, each one checked rather than assumed: OpenAICodex.GPT_6_Astra openai/gpt-6-astra OpenAI model page OpenRouterModel.GPT_6_Astra openrouter/openai/gpt-6-astra OpenRouter live catalog VercelModel.GPT_6_Astra vercel/openai/gpt-6-astra Vercel gateway catalog OpenCodeModel.GPT_6_Astra opencode/gpt-6-astra Zen pricing page Six picker entries, mirroring where the current OpenAI flagship already appears. Same members in the Python SDK, plus the SDK README table. `CursorModel` is untouched, as with Fable 5.1: Cursor publishes no catalog to check against. Not added: gpt-6-astra-pro, which OpenRouter lists at a price identical to plain astra and which appears on no OpenAI page and not on Zen; and gpt-6-astra-fast, which is a 2x billing mode rather than a model id on the OpenAI API, exposed as an id only by the Vercel gateway. Pricing for both new rows is in upstash/box-backend#246.
The SDK README's model table and the collapsed single-entry OpenCode free group were left unformatted. pnpm ci:lint now passes across all four workspace projects.
buggyhunter
approved these changes
Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds Claude Fable 5.1 and GPT-6 Astra to the SDKs and the model picker, and corrects two picker entries that no longer match what the backend charges.
Changeset included: patch bump on
@upstash/boxand@upstash/box-cli.Claude Fable 5.1
Available on the Claude API, OpenRouter, Vercel AI Gateway and OpenCode Zen. Verified against each catalog rather than assumed.
Note the spelling split: the Claude API and Zen use
claude-fable-5-1, while the OpenRouter and Vercel gateways list it asclaude-fable-5.1. Confirmed against OpenRouter's live/api/v1/modelsand the Vercel gateway catalog.Eight picker entries, mirroring exactly where Fable 5 already appears.
CursorModelis deliberately untouched, for both models: Cursor publishes no catalog I could check, so an entry there would be a guess.Same members added to the Python SDK, plus the model table in the SDK README.
GPT-6 Astra
Added to every catalog that carries it, each one checked rather than assumed. Unlike Fable 5.1 there is no spelling split: every provider uses
gpt-6-astra.Six picker entries, mirroring where the current OpenAI flagship already appears. Same members in the Python SDK, plus the SDK README table.
Not added:
gpt-6-astra-pro, which OpenRouter lists at a price identical to plain astra while appearing on no OpenAI page and not on Zen; andgpt-6-astra-fast, which is a 2x billing mode rather than a model id on the OpenAI API, exposed as one only by the Vercel gateway.Picker corrections
OpenAICodex.GPT_5_3_Codex_Sparkremoved from the picker. It is a ChatGPT research preview, not an API model: its docs page 404s and the coordinator no longer prices it, so selecting it produced a run against a model that does not exist and would bill at the unknown-model default.OpenCodeModel.GPT_5_3_Codex_Sparkis deliberately kept. Same name, different product: Zen sells it and publishes a price.GPT-5 Nano moved from the free group to the paid group and lost its
(Free)suffix. Zen now charges $0.05 / $0.40 per MTok, so the picker was advertising free while the backend billed paid. Big Pickle is still genuinely free and stays.Not a breaking change
Both spark enum members remain exported from the TypeScript and Python SDKs. Removing them would break consumers, so they should be deprecated with JSDoc in a separate PR. Taking the option out of the picker is what stops users selecting it.
Verification
pnpm ci:lintpasses across all four workspace projectstsc --noEmitclean onpackages/sdkandpackages/clipackages/sdkunit tests: 30 files, 431 passedpackages/cliunit tests: 43 files, 479 passedtypes.pyparses, with every added member carrying the intended valueNote for local checkouts:
packages/cliresolves@upstash/boxthrough a workspace symlink topackages/sdk/dist, so the CLI will not typecheck against a stale SDK build. Runpnpm buildfirst. CI does this already.Related
This is the picker and SDK half of DX-2986. Pricing for both models is in upstash/box-backend#246 and the console display mirror is a separate PR on
DX-2986inupstash-console-v2. The backend PR should land first; this one removes the(Free)label that the backend change would otherwise contradict.