[providers.gemini]
display_name = "Gemini"
adapter = "gemini"
api_key_url = "https://aistudio.google.com/apikey"
base_url = "https://generativelanguage.googleapis.com/v1beta"
priority = 80

[providers.gemini.auth]
credentials = ["env:GEMINI_API_KEY", "env:GOOGLE_API_KEY", "vault:GEMINI_API_KEY"]
header = { custom = "x-goog-api-key" }

[providers.gemini.models."gemini-3.1-pro-preview"]
display_name = "Gemini 3.1 Pro (Preview)"
family = "gemini-3"
training = "2025-01-01"
knowledge_cutoff = "January 2025"
estimated_output_tps = 85
aliases = ["gemini-pro"]

[providers.gemini.models."gemini-3.1-pro-preview".limits]
context_window = 1048576
max_output = 65536

[providers.gemini.models."gemini-3.1-pro-preview".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "levels"

[providers.gemini.models."gemini-3.1-pro-preview".costs]
input_cost_per_mtok = 2.0
output_cost_per_mtok = 12.0
cache_input_cost_per_mtok = 0.5

[providers.gemini.models."gemini-3.1-pro-preview-customtools"]
display_name = "Gemini 3.1 Pro Custom Tools (Preview)"
family = "gemini-3"
training = "2025-01-01"
knowledge_cutoff = "January 2025"
estimated_output_tps = 85
aliases = ["gemini-customtools"]

[providers.gemini.models."gemini-3.1-pro-preview-customtools".limits]
context_window = 1048576
max_output = 65536

[providers.gemini.models."gemini-3.1-pro-preview-customtools".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "levels"

[providers.gemini.models."gemini-3.1-pro-preview-customtools".costs]
input_cost_per_mtok = 2.0
output_cost_per_mtok = 12.0
cache_input_cost_per_mtok = 0.5

[providers.gemini.models."gemini-3.5-flash"]
display_name = "Gemini 3.5 Flash"
family = "gemini-3"
training = "2025-01-01"
knowledge_cutoff = "January 2025"
default = true
estimated_output_tps = 150
aliases = ["gemini-35-flash"]

[providers.gemini.models."gemini-3.5-flash".limits]
context_window = 1048576
max_output = 65536

[providers.gemini.models."gemini-3.5-flash".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "levels"

[providers.gemini.models."gemini-3.5-flash".costs]
input_cost_per_mtok = 1.5
output_cost_per_mtok = 9.0
cache_input_cost_per_mtok = 0.15

[providers.gemini.models."gemini-3-flash-preview"]
display_name = "Gemini 3 Flash (Preview)"
family = "gemini-3"
training = "2025-01-01"
knowledge_cutoff = "January 2025"
estimated_output_tps = 150
aliases = ["gemini-flash"]

[providers.gemini.models."gemini-3-flash-preview".limits]
context_window = 1048576
max_output = 65536

[providers.gemini.models."gemini-3-flash-preview".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "levels"

[providers.gemini.models."gemini-3-flash-preview".costs]
input_cost_per_mtok = 0.5
output_cost_per_mtok = 3.0
cache_input_cost_per_mtok = 0.125

[providers.gemini.models."gemini-3.1-flash-lite"]
display_name = "Gemini 3.1 Flash Lite"
family = "gemini-3"
training = "2025-01-01"
knowledge_cutoff = "January 2025"
estimated_output_tps = 200
aliases = ["gemini-flash-lite", "gemini-3.1-flash-lite-preview"]
small_default = true

[providers.gemini.models."gemini-3.1-flash-lite".limits]
context_window = 1048576
max_output = 65536

[providers.gemini.models."gemini-3.1-flash-lite".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "levels"

[providers.gemini.models."gemini-3.1-flash-lite".costs]
input_cost_per_mtok = 0.25
output_cost_per_mtok = 1.5
cache_input_cost_per_mtok = 0.025
