Skip to content

fix(models): registry audit: new Together/Fireworks/Gemini/Mistral/xAI models, xai retirement repricing, bedrock grok-4.6 caching, deprecation dates - #38804

Merged
mateo-berri merged 10 commits into
litellm_internal_stagingfrom
litellm_registry_audit_rolling_38693
Aug 29, 2026
Merged

fix(models): registry audit: new Together/Fireworks/Gemini/Mistral/xAI models, xai retirement repricing, bedrock grok-4.6 caching, deprecation dates#38804
mateo-berri merged 10 commits into
litellm_internal_stagingfrom
litellm_registry_audit_rolling_38693

Conversation

@mateo-berri

@mateo-berri mateo-berri commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Replaces #38693 at its head 2bd7b58: same commits and authors, moved to a litellm_ branch because CircleCI's branch filter never builds a devin/ head

TLDR

Problem this solves:

  • Registry missed new Together, Fireworks, Gemini, Mistral, Groq models
  • Registry had stale xAI pricing after the May 15, 2026 retirements
  • Bedrock Grok 4.6 wrongly claimed explicit prompt caching support
  • Vertex Gemini Live native audio entry did not list /v1/realtime
  • Some deprecation dates missing for OpenAI, Gemini, and xAI models

How it solves it:

  • Adds Together/Fireworks GLM-5.3, Gemma 4, Mistral aliases, Groq Qwen3.8
  • Reprices every retired xAI slug at its redirect target's rates
  • Keeps Bedrock Grok 4.6 implicit cache-read billing, drops the explicit caching flag
  • Adds /v1/realtime to that Vertex entry and sources to the Claude 5 entries
  • Adds missing deprecation_date values from official provider pages

User Flow

Before: a developer calling GLM-5.3 through Together AI gets answers that are never charged, so their key's spend and the logs page stay at $0

  1. They send POST https://litellm-domain/v1/chat/completions with "model": "together_ai/zai-org/GLM-5.3" and a short prompt
  2. They get 200 with the model's answer and real token counts (17 prompt, 64 completion), but no x-litellm-response-cost header at all and x-litellm-key-spend: 0.0
  3. They open https://litellm-domain/ui/?page=logs and see the request logged at $0 spend

After: the same call is priced at Together's published GLM-5.3 rates, so key spend and the logs page show real cost

  1. They send the same POST https://litellm-domain/v1/chat/completions with "model": "together_ai/zai-org/GLM-5.3" and the same prompt
  2. They get 200 with the same token counts and x-litellm-response-cost: 0.0003054 ($1.40/M input, $4.40/M output), and x-litellm-key-spend rises by that amount
  3. https://litellm-domain/ui/?page=logs shows the request at $0.0003

Relevant issues

Supports #26900 (deprecation metadata)

Linear ticket

Resolves LIT-6472

Changes in the review pass (2026-08-29, third pass)

xAI, per https://docs.x.ai/developers/migration/may-15-retirement and https://docs.x.ai/developers/pricing:

  • Repriced the ten retired slugs the first pass missed (grok-3-beta, grok-3-fast-beta, grok-3-fast-latest, grok-4-1-fast, and the six grok-3-mini variants) at grok-4.3 rates, dropping their stale 128K tiers
  • Added their deprecation dates: 2026-02-28 for the grok-3-mini family, matching the date its sibling entries already carry from xAI's announcement, and 2026-05-15 for the rest
  • The redirected-slug test now covers all 21 repriced slugs, and its coverage check fails when a dated retired chat slug is missing from the list
  • Live QA below shows spend for these slugs was already billed at grok-4.3 rates before this PR, because xAI answers with "model": "grok-4.3" and the proxy prices from the returned model. The repricing fixes the registry surfaces (/model_group/info, /model/info, the Models page, and model_map_information in spend logs), which still showed the retired rates

Bedrock Grok 4.6, per the AWS model card:

  • Restored cache_read_input_token_cost ($0.55/M us, $0.50/M global) on both entries: AWS documents implicit prompt caching with cache-read billing for this model
  • supports_prompt_caching stays false: the flag drives supports_prompt_caching() and model info, and it stops the cache-control hook from auto-injecting breakpoints. A cache_control block the caller puts in the request is still forwarded as a cachePoint, which Bedrock rejects with 403 for this model (see QA case 5), same as before this PR. Without the rate, implicit cache hits would bill at the full input rate
  • The cache-control hook test now asserts both halves

Gemini:

  • Dropped the gemini/gemini-live-2.5-flash-native-audio entry an earlier commit of this PR had added (from feat(pricing): add gemini-live-2.5-flash-native-audio to model cost map #38573): the Gemini API returns 404 for it on v1beta, v1alpha, and v1, and the Live websocket rejects the model, so against the base branch this PR adds no Gemini API entry for it. The existing Vertex gemini-live-2.5-flash-native-audio entry gains /v1/realtime in supported_endpoints, and the realtime test asserts the model stays Vertex-only

Groq, per https://console.groq.com/docs/model/qwen3.8-27b:

  • groq/qwen/qwen3.8-27b (new in this PR) carries supports_function_calling, supports_response_schema, and supports_tool_choice (the doc lists Tool Use, JSON Object Mode, and JSON Schema Mode)

Together:

  • together_ai/zai-org/GLM-5.3 added to the serverless coverage test list
  • GLM-5.2 and GLM-5.3-Flash still carry the sync's inflated max_output_tokens; LIT-6489 tracks fixing the sync's context-length fallback and sweeping those entries

Changes in the second pass (2026-08-29)

Together AI, per https://docs.together.ai/docs/serverless-models and https://www.together.ai/models/glm-5-3 (absorbed from #38733 with corrections):

Gemini, per https://ai.google.dev/gemini-api/docs/pricing and GET generativelanguage.googleapis.com/v1beta/models:

  • Added gemini/nano-banana-pro-preview (API alias for Gemini 3 Pro Image; priced at the published gemini-3-pro-image rates, 131072 input limit from the models API)
  • Added gemini/gemma-4-26b-a4b-it and gemini/gemma-4-31b-it (free of charge per the pricing page; 262144/32768 limits from the models API). Capability flags (vision, function calling, tool choice, response schema, system messages, reasoning) confirmed against the live Gemini API: inline image, function_declarations, functionCallingConfig.mode: ANY, responseSchema, and system_instruction all return 200 on both sizes, while audio input returns 400 Audio input modality is not enabled for this model, matching the model card (audio is E2B/E4B/12B only)

Mistral, per GET api.mistral.ai/v1/models (the API's own aliases field): 14 official alias entries cloned from their canonical registry entries: mistral-medium-3.5, mistral-vibe-cli-latest, mistral-vibe-cli-with-tools, mistral-vibe-cli-fast, mistral-code-latest, mistral-code-fim-latest, mistral-code-agent-latest, mistral-ocr-3, mistral-ocr-3-0, mistral-ocr-4, voxtral-mini-latest, voxtral-mini-realtime-2602, voxtral-mini-realtime-latest, labs-leanstral-1-5-1

Fireworks AI, per https://docs.fireworks.ai/serverless/pricing and GET api.fireworks.ai/inference/v1/models:

  • Added fireworks_ai/accounts/fireworks/models/glm-5p3 ($1.40/M in, $4.40/M out, $0.26/M cached; 1048576 ctx from the models API, 128000 output per the GLM-5.3 model docs)
  • Added fireworks_ai/accounts/fireworks/models/qwen3-embedding-8b ($0.10/M input per the embeddings pricing table, 40960 ctx)

Chose not to change:

  • xAI grok-imagine-video and grok-imagine-video-1.5 ($0.05 and $0.08 per second of output, per https://docs.x.ai/developers/models/grok-imagine-video and https://docs.x.ai/developers/models/grok-imagine-video-1.5): an earlier commit of this PR added them, but the proxy has no xAI video adapter, so a caller picking them on POST /v1/videos gets video generation is not supported for xai instead of a video. Greptile flagged this on the review; the entries are dropped until an adapter exists
  • Fireworks glm-5p3-flash and the kimi-k2p6-turbo router: in the models API but no row on the pricing page
  • Gemini antigravity-preview-*, deep-research-*: billed at underlying model rates, no fixed per-token price to record; aqa: no published pricing
  • Mistral Voxtral TTS aliases already present; OCR/transcribe per-page and per-minute rates re-checked against https://docs.mistral.ai/inference/pricing, already correct

Checked, nothing missing or wrong: OpenAI (models API vs registry; computer-use-preview and current snapshots present), Anthropic (models API; entries current; the three Claude 5 entries gain a source URL). DeepSeek model-list API rejected the configured key, so that provider was not audited this run; Groq was checked against its public docs in the review pass. OpenRouter/Bedrock/Azure/Cohere/Perplexity/Nebius/Voyage were not reached this run; they stay on the audit backlog.

Changes in the first pass (2026-08-29)

xAI May 15, 2026 retirements, per https://docs.x.ai/developers/migration/may-15-retirement and https://docs.x.ai/developers/models/grok-4.3 and https://docs.x.ai/developers/models/grok-build-0.1: retired chat slugs (grok-3, grok-4, grok-4-0709, grok-4-1-fast-, grok-4-fast-) now priced at grok-4.3 rates (1.25e-06 in, 2.5e-06 out, 2e-07 cache read, 200K tier at 2.5e-06/5e-06/4e-07); stale 128K tiers removed. grok-code-fast* aliases priced at grok-build-0.1 rates (1e-06 in, 2e-06 out, 2e-07 cache read)

Bedrock Grok 4.6 (us.xai.grok-4.6, global.xai.grok-4.6): explicit prompt caching flag removed; Bedrock rejects cachePoint breakpoints for this model. The review pass above restores the implicit cache-read billing this initially dropped

OpenAI deprecation dates, per https://platform.openai.com/docs/deprecations: deprecation_date: 2026-12-01 added to the 15 sized/quality gpt-image-1.5-2025-12-16 variants (the base snapshot entry already had it)

Gemini, per https://ai.google.dev/gemini-api/docs/deprecations: gemini/gemini-omni-flash-preview gets deprecation_date: 2026-09-30 (replacement gemini-omni-1.1-flash). The vertex_ai copy was left alone because the Vertex deprecations page does not list it

Verified as current, no change needed: Anthropic dates against https://docs.anthropic.com/en/docs/about-claude/model-deprecations, other Gemini dates, OpenAI exact-name dates

Absorbed from other PRs

Dropped as unverifiable

Not absorbed (code/behavior or structural PRs that only incidentally touch the JSON): #36233, #29898, #30383, #36416, #36422

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have added meaningful tests
  • The handful of test files covering my change pass locally, e.g. uv run pytest tests/test_litellm/<your_test_file>.py -v. Leave the suites (make test-unit-*, make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more
  • My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review (Greptile reviews automatically once the PR is opened; only comment @greptileai to re-request a review after pushing changes)

Delays in PR merge?

If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).

Screenshots / Proof of Fix

Both legs boot the proxy from the named commit with LITELLM_LOCAL_MODEL_COST_MAP=True, --num_workers 2, a fresh Postgres DB, and this config ($KEY is the master key, $PORT is the random port each leg picked):

model_list:
  - model_name: xai/*
    litellm_params: {model: xai/*, api_key: os.environ/XAI_API_KEY}
  - model_name: together_ai/*
    litellm_params: {model: together_ai/*, api_key: os.environ/TOGETHERAI_API_KEY}
  - model_name: bedrock-grok-46
    litellm_params: {model: bedrock/us.xai.grok-4.6, aws_region_name: us-west-2}
general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY

Every request is a real provider call. The grok-3-mini cases hit all three unified endpoints because the repricing applies to each of them

Before (c24f821)

/v1/chat/completions with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "messages": [{"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.00107215
    x-litellm-key-spend: 0.00107215
    {"id":"e53c192e-adb5-9dc1-b3ab-cd7058f2c83c","model":"xai/grok-3-mini",...,"usage":{"completion_tokens":411,"prompt_tokens":197,"total_tokens":608,"completion_tokens_details":{"reasoning_tokens":404},"prompt_tokens_details":{"cached_tokens":192},"cost_in_usd_ticks":10721500}}
    
    The cost is 5 x 1.25e-06 + 192 x 2e-07 + 411 x 2.5e-06 = 0.00107215, i.e. grok-4.3 rates already, and xAI's own cost_in_usd_ticks (10721500 = $0.00107215) agrees. The old registry rates (3e-07 in, 5e-07 out) would give 0.0002214

/v1/messages with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/messages -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "max_tokens": 64, "messages": [{"role": "user", "content": "Say hi in five words"}]}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.00111965
    x-litellm-key-spend: 0.00111965
    {"id":"aaa5cd8e-886f-9473-a532-980f4878a001","type":"message","model":"xai/grok-3-mini",...,"usage":{"input_tokens":5,"output_tokens":430,"cache_read_input_tokens":192}}
    
    5 x 1.25e-06 + 192 x 2e-07 + 430 x 2.5e-06 = 0.00111965, grok-4.3 rates already

/v1/responses with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/responses -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "input": "Say hi in five words", "max_output_tokens": 64}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.0012346500000000001
    x-litellm-key-spend: 0.0012346500000000001
    {"id":"resp_GoZOtYZv...","model":"xai/grok-3-mini",...,"usage":{"input_tokens":197,"input_tokens_details":{"cached_tokens":192},"output_tokens":476,"output_tokens_details":{"reasoning_tokens":469}}}
    
    5 x 1.25e-06 + 192 x 2e-07 + 476 x 2.5e-06 = 0.00123465, grok-4.3 rates already; xAI's ticks 12346500 agree

/v1/chat/completions with together_ai/zai-org/GLM-5.3

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "together_ai/zai-org/GLM-5.3", "messages": [{"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Observed (no x-litellm-response-cost* header of any kind):
    HTTP/1.1 200 OK
    x-litellm-key-spend: 0.0
    {"id":"09ed33b5-aws_uw1","model":"together_ai/zai-org/GLM-5.3",...,"usage":{"completion_tokens":64,"prompt_tokens":17,"total_tokens":81,"completion_tokens_details":{"reasoning_tokens":64},"prompt_tokens_details":{"cached_tokens":0}}}
    
    The model is not in the registry at this commit, so the call is never charged

/v1/chat/completions with bedrock-grok-46 and an explicit cache_control block

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "bedrock-grok-46", "messages": [{"role": "system", "content": [{"type": "text", "text": "You are terse.", "cache_control": {"type": "ephemeral"}}]}, {"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Not captured: every AWS login session on the QA box had expired and re-authenticating needs a human at the browser, so this leg got HTTP/1.1 500 with Your session has expired ... Please reauthenticate using 'aws login' instead of a Bedrock answer. The After side below shows the request-level behavior is the same with the flag off, so the missing Before capture does not change the verdict

/spend/logs row for the grok-3-mini chat call

  1. curl -sD - "http://localhost:$PORT/spend/logs?request_id=e53c192e-adb5-9dc1-b3ab-cd7058f2c83c" -H "Authorization: Bearer $KEY"
  2. Observed:
    HTTP/1.1 200 OK
    [{"request_id":"e53c192e-adb5-9dc1-b3ab-cd7058f2c83c","call_type":"acompletion","spend":0.00107215,"total_tokens":608,"prompt_tokens":197,"completion_tokens":411,...,"metadata":{...,"model_map_information":{"model_map_key":"xai/grok-3-mini","model_map_value":{"input_cost_per_token":3e-07,"output_cost_per_token":5e-07,"cache_read_input_token_cost":7.5e-08,"supports_prompt_caching":true,...}}}}]
    
    Spend equals the header, but the row's model_map_information still shows the retired rates

/model/info and /v1/chat/completions with gemini/gemma-4-31b-it and gemini/gemma-4-26b-a4b-it (no-DB proxy, 1 worker, both models from a gemini/ config entry)

  1. curl -s http://localhost:$PORT/model/info -H "Authorization: Bearer $KEY" | jq '.data[] | select(.model_name=="gemini/gemma-4-31b-it") | .model_info | {supports_vision, supports_function_calling, supports_tool_choice, supports_response_schema, supports_system_messages, supports_reasoning, max_input_tokens, input_cost_per_token}'
  2. Observed (the model is not in the registry, so every flag and limit is null):
    {"supports_vision":null,"supports_function_calling":null,"supports_tool_choice":null,"supports_response_schema":null,"supports_system_messages":null,"supports_reasoning":null,"max_input_tokens":null,"input_cost_per_token":0}
    
  3. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "gemini/gemma-4-31b-it", "messages": [{"role": "system", "content": "Answer in one word."}, {"role": "user", "content": [{"type": "text", "text": "What color is this image?"}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,<1x1 green png>"}}]}]}'
  4. Observed (the Gemini API accepts the image either way; only the registry surfaces differ):
    HTTP/1.1 200 OK
    x-litellm-response-cost-input: 0.0
    {"model":"gemini/gemma-4-31b-it","content":"Green","usage":{"prompt_tokens":270,"completion_tokens":37}}
    
  5. curl -s http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "gemini/gemma-4-26b-a4b-it", "messages": [{"role": "user", "content": "Weather in Boston?"}], "tools": [{"type": "function", "function": {"name": "get_weather", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}], "tool_choice": "required"}'
  6. Observed:
    HTTP/1.1 200 OK
    {"model":"gemini/gemma-4-26b-a4b-it","tool_calls":[{"name":"get_weather","arguments":"{\"city\": \"Boston\"}"}]}
    

After (2bd7b58)

Captured at 2bd7b58; the commits since, 68404d8 (deletes the two xai/grok-imagine-video* registry entries) and cfb7a26 (adds capability flags to the two gemini/gemma-4-* entries), touch entries none of the cases above call

/v1/chat/completions with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "messages": [{"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.00136935
    x-litellm-key-spend: 0.00136935
    {"id":"220d9de3-b2f4-9713-862e-2d70ab323a12","model":"xai/grok-3-mini",...,"usage":{"completion_tokens":503,"prompt_tokens":197,"total_tokens":700,"completion_tokens_details":{"reasoning_tokens":498},"prompt_tokens_details":{"cached_tokens":128},"cost_in_usd_ticks":13693500}}
    
    69 x 1.25e-06 + 128 x 2e-07 + 503 x 2.5e-06 = 0.00136935, same grok-4.3 rates as Before; xAI's ticks 13693500 agree

/v1/messages with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/messages -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "max_tokens": 64, "messages": [{"role": "user", "content": "Say hi in five words"}]}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.00125715
    x-litellm-key-spend: 0.00125715
    {"id":"52112cd4-7c09-9b1d-a7e4-c56dddf79422","type":"message","model":"xai/grok-3-mini",...,"usage":{"input_tokens":5,"output_tokens":485,"cache_read_input_tokens":192}}
    
    5 x 1.25e-06 + 192 x 2e-07 + 485 x 2.5e-06 = 0.00125715

/v1/responses with xai/grok-3-mini

  1. curl -sD - http://localhost:$PORT/v1/responses -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "xai/grok-3-mini", "input": "Say hi in five words", "max_output_tokens": 64}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.0017568500000000001
    x-litellm-key-spend: 0.0017568500000000001
    {"id":"resp_ePUae6Sb...","model":"xai/grok-3-mini",...,"usage":{"input_tokens":197,"input_tokens_details":{"cached_tokens":128},"output_tokens":658,"output_tokens_details":{"reasoning_tokens":653}}}
    
    69 x 1.25e-06 + 128 x 2e-07 + 658 x 2.5e-06 = 0.00175685; xAI's ticks 17568500 agree

/v1/chat/completions with together_ai/zai-org/GLM-5.3

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "together_ai/zai-org/GLM-5.3", "messages": [{"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.0003054
    x-litellm-key-spend: 0.0003054
    {"id":"29acbd83-aws_uw1","model":"together_ai/zai-org/GLM-5.3",...,"usage":{"completion_tokens":64,"prompt_tokens":17,"total_tokens":81,"completion_tokens_details":{"reasoning_tokens":64},"prompt_tokens_details":{"cached_tokens":0}}}
    
    17 x 1.4e-06 + 64 x 4.4e-06 = 0.0003054, Together's published GLM-5.3 rates

/v1/chat/completions with bedrock-grok-46 and an explicit cache_control block

  1. curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "bedrock-grok-46", "messages": [{"role": "system", "content": [{"type": "text", "text": "You are terse.", "cache_control": {"type": "ephemeral"}}]}, {"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  2. Observed (Bedrock still receives the breakpoint and refuses it; this leg authenticated with a Bedrock API key):
    HTTP/1.1 403 Forbidden
    x-litellm-response-cost: 0
    x-litellm-key-spend: 0.0
    {"error":{"message":"litellm.PermissionDeniedError: BedrockException - {\"message\":\"You invoked an unsupported model or your request did not allow prompt caching. See the documentation for more information.\"}. Received Model Group=bedrock-grok-46\nAvailable Model Group Fallbacks=None","type":null,"param":null,"code":"403"}}
    
  3. Control, same call with a plain string system prompt and no cache_control: curl -sD - http://localhost:$PORT/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"model": "bedrock-grok-46", "messages": [{"role": "system", "content": "You are terse."}, {"role": "user", "content": "Say hi in five words"}], "max_tokens": 64}'
  4. Observed:
    HTTP/1.1 200 OK
    x-litellm-response-cost: 0.0005126
    x-litellm-key-spend: 0.0005126
    {"id":"chatcmpl-64b14a05-910f-47ee-86b9-3bef77dd4155","model":"bedrock-grok-46",...,"usage":{"prompt_tokens":41,"completion_tokens":64,...}}
    
    41 x 2.2e-06 + 64 x 6.6e-06 = 0.0005126, the Bedrock Grok 4.6 rates, so auth and model access are fine and the 403 above is the forwarded breakpoint

/spend/logs row for the grok-3-mini chat call

  1. curl -sD - "http://localhost:$PORT/spend/logs?request_id=05e0d200-756b-9162-a1d1-f111999aae71" -H "Authorization: Bearer $KEY" (a fresh grok-3-mini chat call on this leg, header x-litellm-response-cost: 0.0013921500000000002)
  2. Observed:
    HTTP/1.1 200 OK
    [{"request_id":"05e0d200-756b-9162-a1d1-f111999aae71","call_type":"acompletion","spend":0.00139215,"total_tokens":736,"prompt_tokens":197,"completion_tokens":539,...,"metadata":{...,"model_map_information":{"model_map_key":"xai/grok-3-mini","model_map_value":{"input_cost_per_token":1.25e-06,"output_cost_per_token":2.5e-06,"cache_read_input_token_cost":2e-07,...}}}}]
    
    Spend equals the header and the row's model_map_information now carries the grok-4.3 rates

/model/info and /v1/chat/completions with gemini/gemma-4-31b-it and gemini/gemma-4-26b-a4b-it (captured at cfb7a26, the tip)

  1. Same GET /model/info as the Before leg
  2. Observed:
    {"supports_vision":true,"supports_function_calling":true,"supports_tool_choice":true,"supports_response_schema":true,"supports_system_messages":true,"supports_reasoning":true,"max_input_tokens":262144,"input_cost_per_token":0.0}
    
  3. Same image, tool_choice: required, and response_format: json_schema calls as the Before leg
  4. Observed:
    HTTP/1.1 200 OK
    {"model":"gemini/gemma-4-31b-it","content":"Green","usage":{"prompt_tokens":270,"completion_tokens":30}}
    HTTP/1.1 200 OK
    {"model":"gemini/gemma-4-26b-a4b-it","tool_calls":[{"name":"get_weather","arguments":"{\"city\": \"Boston\"}"}]}
    HTTP/1.1 200 OK
    {"model":"gemini/gemma-4-26b-a4b-it","content":"{\"capital\": \"Paris\"}"}
    
    The calls behave the same on both legs; what changes is that /model/info, /model_group/info, the Models page, and litellm.supports_* now report what the Gemini API actually accepts for these two models

Pending: a screenshot of https://litellm-domain/ui/?page=logs showing the GLM-5.3 request at $0 (Before) and $0.0003 (After); the QA run had no browser

Closing notes from the run:

  • Retired xAI slug spend already matched xAI billing; unchanged
  • Bedrock forwards caller cache_control regardless of the flag; unchanged
  • /spend/logs?request_id= matches the response id, not x-litellm-call-id; unchanged
  • Before leg Bedrock case not captured; AWS sessions expired

Live PR risk check

Registry-only change, so the dependent paths are the cost calculator, the capability and caching flags, and the read-only registry surfaces. Live A/B at the merge base and the tip, both proxies with 2 workers and LITELLM_LOCAL_MODEL_COST_MAP=True:

  • Cost calculator: covered by the six cases above, real provider calls on all three unified endpoints

  • GET /model/info for nine deployments (xai/grok-3-mini, xai/grok-4-1-fast, xai/grok-code-fast-1, together_ai/zai-org/GLM-5.3, groq/qwen/qwen3.8-27b, bedrock us.xai.grok-4.6, vertex gemini-live-2.5-flash-native-audio, mistral/mistral-medium-3.5, gemini/gemini-omni-flash-preview): the diff is exactly the intended changes (grok-3-mini and grok-4-1-fast at grok-4.3 rates with the 200K tier and no 128K tier, Bedrock Grok 4.6 supports_prompt_caching false, the three new models populated instead of null, the Vertex live entry listing /v1/realtime). grok-code-fast-1 and gemini-omni-flash-preview are identical on both sides; deprecation_date is not exposed on this route on either side

  • Bedrock Grok 4.6 with a caller-supplied cache_control: 403 from Bedrock at the tip, same as before the flag change (see case 5)

  • Legacy suites that read the registry, run locally at the tip: tests/llm_translation/test_xai.py and tests/llm_translation/realtime/test_xai_realtime.py (34 passed, 23 skipped), tests/litellm_utils_tests/test_utils.py -k "supports_reasoning or supports_web_search or grok" (13 passed)

  • CircleCI finding: .circleci/config.yml filters every job to main and /litellm_.*/, so the original devin/ head of fix(models): registry audit: new Together/Fireworks/Gemini/Mistral/xAI models, xai retirement repricing, bedrock grok-4.6 caching, deprecation dates #38693 produced a pipeline with zero workflows under run-ci; this PR exists so the same commits get a real CircleCI run

  • Gemma 4 flags (cfb7a26): litellm.supports_vision, supports_function_calling, supports_response_schema, supports_system_messages, and supports_reasoning return True for both entries with LITELLM_LOCAL_MODEL_COST_MAP=True; tests/test_litellm/test_model_prices_schema.py and tests/local_testing/test_get_model_info.py pass (49 tests); ci_cd/check_files_match.py passes

  • cfb7a26 passes /live-pr-risk

Type

🐛 Bug Fix

Caveats (if any)

Medium

  • DeepSeek, OpenRouter, Bedrock, Azure, Cohere audits stay on the backlog

Low

  • Retired xAI slug registry rates now show redirect prices; spend already billed there
  • Vertex live native audio entry now lists /v1/realtime; not live-tested
  • GLM-5.2 and GLM-5.3-Flash output ceilings still inflated (LIT-6489)
  • xAI video models stay unregistered until a video adapter exists

Final Attestation

  • The tests check the right things, including the edge cases, and regressions in the respective real-world customer use-cases are not possible after this PR

Link to Devin session: https://app.devin.ai/sessions/1eb47e52d5a0484985cc0e51592871d5
Open in Devin Desktop: https://app.devin.ai/desktop/session/1eb47e52d5a0484985cc0e51592871d5?variant=devin

devin-ai-integration Bot and others added 8 commits August 28, 2026 19:18
… native audio (from #38573), anthropic sources

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…uired for gemini models

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ai/gemini deprecation dates

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…tries

- gemini: nano-banana-pro-preview, gemma-4-26b-a4b-it, gemma-4-31b-it
- mistral: 14 official aliases from api.mistral.ai/v1/models
- fireworks_ai: glm-5p3, qwen3-embedding-8b
- xai: grok-imagine-video, grok-imagine-video-1.5

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…, and unsourced entries

Reprice ten more retired xAI slugs (grok-3 and grok-3-mini families,
grok-4-1-fast) to the grok-4.3 rates they now bill at, with family-correct
deprecation dates. Restore cache_read_input_token_cost on the Bedrock Grok 4.6
entries so implicit cache hits bill at the cache-read rate while explicit
cachePoint stays unsupported. Drop the unsourced 1080p video rate and the
gemini/ live native-audio entry the Gemini API 404s on. Add Groq qwen3.8-27b
tool-use flags per Groq docs. Extend the xai and gemini tests to lock all of
this in
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ mateo-berri
❌ devin-ai-integration[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@codspeed-hq

codspeed-hq Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 31 untouched benchmarks


Comparing litellm_registry_audit_rolling_38693 (cfb7a26) with litellm_internal_staging (c62c2af)

Open in CodSpeed

@greptile-apps

greptile-apps Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates LiteLLM’s model registry with new provider models, corrected pricing and deprecation metadata, capability adjustments, and corresponding regression coverage.

  • Adds Together, Fireworks, Gemini, Mistral, and Groq model metadata.
  • Reprices retired xAI aliases and expands redirected-slug coverage.
  • Corrects Bedrock Grok 4.6 caching metadata and Vertex Gemini realtime endpoint metadata.
  • Removes the unsupported xAI video entries identified in the prior review.

Confidence Score: 5/5

The PR appears safe to merge because the previously reported unsupported xAI video registrations have been fully removed and no blocking failure remains.

No blocking failure remains.

Important Files Changed

Filename Overview
model_prices_and_context_window.json Updates the primary registry with new models, corrected pricing, capabilities, endpoints, and deprecation dates while removing the unsupported xAI video entries.
litellm/model_prices_and_context_window_backup.json Mirrors the primary registry changes, including removal of both unsupported xAI video entries.
tests/test_litellm/integrations/test_anthropic_cache_control_hook.py Extends coverage for Bedrock Grok 4.6 explicit-caching support and implicit cache-read pricing metadata.
tests/test_litellm/llms/gemini/realtime/test_gemini_realtime_transformation.py Verifies the Vertex-only native-audio model is exposed through the realtime endpoint.
tests/test_litellm/llms/xai/test_xai_cost_calculator.py Updates xAI cost-calculation coverage for the revised retired-model pricing.
tests/test_litellm/llms/xai/test_xai_redirected_slug_pricing.py Expands coverage across redirected xAI slugs and checks that dated retired chat aliases are included.
tests/test_litellm/test_together_ai_model_metadata.py Adds metadata and serverless-registry coverage for Together AI GLM-5.3.

Reviews (3): Last reviewed commit: "fix(registry): add gemma 4 capability fl..." | Re-trigger Greptile

Comment thread model_prices_and_context_window.json Outdated
Comment on lines +54655 to +54656
"litellm_provider": "xai",
"mode": "video_generation",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Missing xAI video adapter

When a caller invokes the video-generation API with either newly registered xAI video model, provider dispatch cannot construct an xAI video configuration and raises ValueError: video generation is not supported for xai before sending an upstream request.

Knowledge Base Used: Provider adapters and capabilities

@mateo-berri

Copy link
Copy Markdown
Contributor Author

@greptileai

@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@codecov

codecov Bot commented Aug 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Autofix Details

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Gemma 4 missing capability flags
    • Added supports_function_calling, supports_tool_choice, supports_response_schema, and supports_vision flags to the gemini/gemma-4-26b-a4b-it and gemini/gemma-4-31b-it entries in both registry files to match the sibling gemma-3-27b-it capability set.

Create PR

Or push these changes by commenting:

@cursor push c3c4912329
Preview (c3c4912329)
diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json
--- a/litellm/model_prices_and_context_window_backup.json
+++ b/litellm/model_prices_and_context_window_backup.json
@@ -23614,7 +23614,11 @@
         "max_output_tokens": 32768,
         "max_tokens": 32768,
         "mode": "chat",
+        "supports_function_calling": true,
         "supports_reasoning": true,
+        "supports_response_schema": true,
+        "supports_tool_choice": true,
+        "supports_vision": true,
         "source": "https://ai.google.dev/gemini-api/docs/pricing"
     },
     "gemini/gemma-4-31b-it": {
@@ -23625,7 +23629,11 @@
         "max_output_tokens": 32768,
         "max_tokens": 32768,
         "mode": "chat",
+        "supports_function_calling": true,
         "supports_reasoning": true,
+        "supports_response_schema": true,
+        "supports_tool_choice": true,
+        "supports_vision": true,
         "source": "https://ai.google.dev/gemini-api/docs/pricing"
     },
     "gemini/imagen-3.0-fast-generate-001": {

diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json
--- a/model_prices_and_context_window.json
+++ b/model_prices_and_context_window.json
@@ -23614,7 +23614,11 @@
         "max_output_tokens": 32768,
         "max_tokens": 32768,
         "mode": "chat",
+        "supports_function_calling": true,
         "supports_reasoning": true,
+        "supports_response_schema": true,
+        "supports_tool_choice": true,
+        "supports_vision": true,
         "source": "https://ai.google.dev/gemini-api/docs/pricing"
     },
     "gemini/gemma-4-31b-it": {
@@ -23625,7 +23629,11 @@
         "max_output_tokens": 32768,
         "max_tokens": 32768,
         "mode": "chat",
+        "supports_function_calling": true,
         "supports_reasoning": true,
+        "supports_response_schema": true,
+        "supports_tool_choice": true,
+        "supports_vision": true,
         "source": "https://ai.google.dev/gemini-api/docs/pricing"
     },
     "gemini/imagen-3.0-fast-generate-001": {

You can send follow-ups to the cloud agent here.

Comment thread model_prices_and_context_window.json
@mateo-berri mateo-berri added run-ci and removed run-ci labels Aug 29, 2026
@mateo-berri

Copy link
Copy Markdown
Contributor Author

@greptileai

@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit cfb7a26. Configure here.

@mateo-berri
mateo-berri merged commit a979c89 into litellm_internal_staging Aug 29, 2026
125 of 127 checks passed
@mateo-berri
mateo-berri deleted the litellm_registry_audit_rolling_38693 branch August 29, 2026 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants