Summary
When routing through CLIProxyAPI to Antigravity, /v1/models exposes tier-specific IDs such as gemini-3.5-flash-low, but not the Google API-style surface:
- Base model:
gemini-3.5-flash (or gateway equivalent)
- Effort control via
thinking_level: minimal | low | medium | high
In Google Antigravity CLI, users can pick Gemini 3.5 Flash (Low / Medium / High) as separate product tiers. Through CLIProxyAPI (OpenAI-compatible), we only see gemini-3.5-flash-low routable; gemini-3.5-flash-medium, gemini-3.5-flash-high, and gemini-3.5-flash return 502 unknown provider for model.
We would like parity with the public Gemini API pattern documented at https://ai.google.dev/gemini-api/docs/whats-new-gemini-3.5 — one stable model ID plus generationConfig.thinkingConfig.thinking_level, instead of requiring separate hard-coded model names per tier when possible.
Environment
- CLIProxyAPI: v7.1.30 (Homebrew, built 2026-05-29)
- Provider: Antigravity OAuth (
owned_by: antigravity)
- Endpoint:
POST http://127.0.0.1:8317/v1/chat/completions (default local port)
- Client: OpenAI-compatible HTTP client via
@ai-sdk/openai-compatible (model: openai/gemini-3.5-flash-low)
Current behavior
/v1/models (Gemini-related excerpt)
Only one 3.5 Flash tier appears:
Missing from list / routing:
gemini-3.5-flash-medium ❌
gemini-3.5-flash-high ❌
gemini-3.5-flash ❌
Direct routing test
# Works
curl -sS -H "Authorization: Bearer $KEY" \
-d '{"model":"gemini-3.5-flash-low","messages":[{"role":"user","content":"hi"}],"stream":false}' \
http://127.0.0.1:8317/v1/chat/completions
# Fails (same for gemini-3.5-flash-high and gemini-3.5-flash)
curl -sS -H "Authorization: Bearer $KEY" \
-d '{"model":"gemini-3.5-flash-medium","messages":[{"role":"user","content":"hi"}],"stream":false}' \
http://127.0.0.1:8317/v1/chat/completions
# → {"error":{"message":"unknown provider for model gemini-3.5-flash-medium",...}}
Expected behavior
One or more of the following (happy to follow project conventions):
- Register
gemini-3.5-flash for Antigravity OpenAI-compatible routing and honor thinking_level from the request (OpenAI reasoning_effort mapping or generationConfig.thinkingConfig.thinkingLevel passthrough).
- Expose all Antigravity tiers (
gemini-3.5-flash-low|medium|high) in /v1/models when the OAuth catalog provides them.
- Document recommended mapping in
oauth-model-alias if separate tier IDs must remain upstream names.
Questions for maintainers
- Is
gemini-3.5-flash-low intended to be a fixed Low SKU, or should clients override effort via thinking_level on a single gemini-3.5-flash ID?
- If Medium/High exist in Antigravity CLI but not in
/v1/models, is that a discovery gap, version gap, or intentional until a newer release?
- Is there a supported way today to request
thinking_level=medium|high while using model gemini-3.5-flash-low through the OpenAI chat-completions translator?
References
Thanks!
Summary
When routing through CLIProxyAPI to Antigravity,
/v1/modelsexposes tier-specific IDs such asgemini-3.5-flash-low, but not the Google API-style surface:gemini-3.5-flash(or gateway equivalent)thinking_level:minimal|low|medium|highIn Google Antigravity CLI, users can pick Gemini 3.5 Flash (Low / Medium / High) as separate product tiers. Through CLIProxyAPI (OpenAI-compatible), we only see
gemini-3.5-flash-lowroutable;gemini-3.5-flash-medium,gemini-3.5-flash-high, andgemini-3.5-flashreturn502 unknown provider for model.We would like parity with the public Gemini API pattern documented at https://ai.google.dev/gemini-api/docs/whats-new-gemini-3.5 — one stable model ID plus
generationConfig.thinkingConfig.thinking_level, instead of requiring separate hard-coded model names per tier when possible.Environment
owned_by: antigravity)POST http://127.0.0.1:8317/v1/chat/completions(default local port)@ai-sdk/openai-compatible(model:openai/gemini-3.5-flash-low)Current behavior
/v1/models(Gemini-related excerpt)Only one 3.5 Flash tier appears:
gemini-3.5-flash-low✅Missing from list / routing:
gemini-3.5-flash-medium❌gemini-3.5-flash-high❌gemini-3.5-flash❌Direct routing test
Expected behavior
One or more of the following (happy to follow project conventions):
gemini-3.5-flashfor Antigravity OpenAI-compatible routing and honorthinking_levelfrom the request (OpenAIreasoning_effortmapping orgenerationConfig.thinkingConfig.thinkingLevelpassthrough).gemini-3.5-flash-low|medium|high) in/v1/modelswhen the OAuth catalog provides them.oauth-model-aliasif separate tier IDs must remain upstream names.Questions for maintainers
gemini-3.5-flash-lowintended to be a fixed Low SKU, or should clients override effort viathinking_levelon a singlegemini-3.5-flashID?/v1/models, is that a discovery gap, version gap, or intentional until a newer release?thinking_level=medium|highwhile using modelgemini-3.5-flash-lowthrough the OpenAI chat-completions translator?References
thinking_level): https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flashoauth-model-alias/oauth-excluded-models— https://help.router-for.me/configuration/basicThanks!