From 03c48efbad18420c44d547d1e46412d1810766aa Mon Sep 17 00:00:00 2001 From: vp275 Date: Sat, 14 Mar 2026 16:35:04 +0530 Subject: [PATCH] fix: strip variant suffix from model ID for OAuth Anthropic API calls Model variants like `claude-opus-4-6[1m]` use bracket suffixes to differentiate context window configurations internally, but the Anthropic API only accepts base model IDs (e.g. `claude-opus-4-6`). Sending the full variant ID via OAuth (Claude Max/Pro) causes a 404: {"type":"not_found_error","message":"model: claude-opus-4-6[1m]"} Strip any `[...]` suffix from model.id for OAuth requests only. API key auth is left unchanged since the behavior there is unverified. --- packages/pi-ai/src/providers/anthropic.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/pi-ai/src/providers/anthropic.ts b/packages/pi-ai/src/providers/anthropic.ts index 7a823e3d7..e4f49de58 100644 --- a/packages/pi-ai/src/providers/anthropic.ts +++ b/packages/pi-ai/src/providers/anthropic.ts @@ -637,8 +637,12 @@ function buildParams( options?: AnthropicOptions, ): MessageCreateParamsStreaming { const { cacheControl } = getCacheControl(model.baseUrl, options?.cacheRetention); + // For OAuth (Claude Max/Pro), strip variant suffixes like [1m] from model ID. + // The API only accepts the base model ID (e.g. "claude-opus-4-6"), + // not internal variant identifiers (e.g. "claude-opus-4-6[1m]"). + const apiModelId = isOAuthToken ? model.id.replace(/\[.*\]$/, "") : model.id; const params: MessageCreateParamsStreaming = { - model: model.id, + model: apiModelId, messages: convertMessages(context.messages, model, isOAuthToken, cacheControl), max_tokens: options?.maxTokens || (model.maxTokens / 3) | 0, stream: true,