Skip to content

Gemini

Connect the AI Gateway to Google's Gemini API. You end up with an LLM Provider that holds your Gemini credentials, exposes the API through the gateway, and can be consumed by any LLM proxy.

Google defines the endpoint URL and the header that carries your API key, so the provider takes those values from Google's documentation rather than from a fixed configuration here.

This page is for platform administrators, who hold the upstream credentials.

What you need from Gemini

Collect these three values from Google before you deploy the provider:

Value Where it comes from
Endpoint URL The base URL Google publishes for the Gemini API. See the Gemini API reference.
Auth header and scheme The header Google expects a request to carry the key in. The Generating content reference shows it on a complete request.
API key The key you create for the Gemini API. See Using Gemini API keys.

Template details

The gateway ships a gemini template that tells it where to find token counts and model names in Gemini traffic. Name it in the provider's template field.

The template extracts the following:

apiVersion: gateway.api-platform.wso2.com/v1
kind: LlmProviderTemplate
metadata:
  name: gemini
spec:
  displayName: Gemini
  groupId: wso2-gemini
  managedBy: wso2
  version: v1.0
  promptTokens:
    location: payload
    identifier: $.usageMetadata.promptTokenCount
  completionTokens:
    location: payload
    identifier: $.usageMetadata.candidatesTokenCount
  totalTokens:
    location: payload
    identifier: $.usageMetadata.totalTokenCount
  remainingTokens:
    location: header
    identifier: x-ratelimit-remaining-tokens
  requestModel:
    location: pathParam
    identifier: (?<=models/)[a-zA-Z0-9.\-]+
  responseModel:
    location: payload
    identifier: $.modelVersion

Gemini reports usage in its own response shape, so this template reads $.usageMetadata.promptTokenCount and $.usageMetadata.candidatesTokenCount where every other template reads $.usage.prompt_tokens and $.usage.completion_tokens. Two more paths differ for the same reason: the request model comes from the request path, matched after models/, rather than from the payload, and the response model comes from $.modelVersion. The remaining-token count comes from the x-ratelimit-remaining-tokens response header, as it does for every template.

Configure the provider

Deploy the provider through the management API, following the procedure in Create and configure an LLM provider. A Gemini provider takes this shape:

apiVersion: gateway.api-platform.wso2.com/v1
kind: LlmProvider
metadata:
  name: gemini-provider
spec:
  displayName: Gemini Provider
  version: v1.0
  template: gemini
  context: /providers/gemini
  upstream:
    url: <gemini-endpoint>
    auth:
      type: api-key
      header: <gemini-auth-header>
      value: <gemini-api-key>
  accessControl:
    mode: deny_all
    exceptions:
      - path: <generate-content-path>
        methods: [POST]

Replace the four placeholders with the values you collected:

  • <gemini-endpoint> — the base URL from Google's Gemini API reference.
  • <gemini-auth-header> — the header name that reference specifies for API key authentication.
  • <gemini-api-key> — your Gemini API key, formatted as that same reference specifies.
  • <generate-content-path> — the request path you expose through the gateway.

The context value sets the URL prefix the provider answers on, so this provider serves its exposed paths under /providers/gemini. The accessControl block denies every upstream path except those listed as exceptions.

OpenAI-format compatibility

Gemini uses its own request and response format. When an LLM proxy routes OpenAI-format requests to this provider, apply the openai-to-gemini-transformer policy, which converts between the two.

The transformer takes two parameters. model is required. apiVersion is optional and defaults to v1beta. This parameter configures the transformer only, and does not supply any part of the endpoint URL.

For the request, response and streaming behavior the transformer covers, see the Gemini entry in the provider capability matrix.

Google documents OpenAI compatibility for the Gemini API as well.