Skip to main content

Proxy Gemini Requests

Google Gemini provides an OpenAI-compatible API that allows you to access Gemini models using the familiar OpenAI API format.

This guide shows how to integrate APISIX with Google Gemini using the ai-proxy plugin. With provider set to gemini, you do not need to set a custom endpoint.

Prerequisite(s)

  • Install Docker.
  • Install cURL to send requests to the services for validation.
  • Follow the Getting Started Tutorial to start a new APISIX instance in Docker or on Kubernetes.

Obtain a Google API Key

Create an account and API key by following the Google AI Studio. Optionally save the key to an environment variable:

export GEMINI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # replace with your API key

Create a Route to Gemini

Create a route with the ai-proxy plugin as such:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT --data-binary @- <<EOF
{
"id": "gemini-chat",
"uri": "/anything",
"plugins": {
"ai-proxy": {
"provider": "gemini",
"auth": {
"header": {
"Authorization": "Bearer $GEMINI_API_KEY"
}
},
"options": {
"model": "gemini-2.5-flash"
}
}
}
}
EOF

❶ Set the provider to gemini.

❷ Attach the Google API key using the Authorization header.

❸ Set a model supported by Gemini, for example gemini-2.5-flash.

Verify

Send a request with the following prompts to the route:

curl "http://127.0.0.1:9080/anything" -X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "system", "content": "You are a helpful AI assistant" },
{ "role": "user", "content": "What is the capital of France?" }
]
}'

You should receive a response similar to the following:

{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The capital of France is **Paris**.",
"role": "assistant"
}
}
],
"model": "gemini-2.5-flash",
"object": "chat.completion",
"usage": {
"completion_tokens": 8,
"prompt_tokens": 15,
"total_tokens": 41
},
...
}

Next Steps

You have learned how to integrate APISIX with Google Gemini. See the Google AI for Developers and Models pages for more details.