> ## Documentation Index
> Fetch the complete documentation index at: https://metrion.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Gemini

> Route your Google Gemini requests through Metrion using the OpenAI-compatible SDK — with a one-line change.

Use Metrion as a proxy for Google Gemini. Because Metrion connects to Gemini's OpenAI-compatible endpoint, you can use the standard OpenAI SDK — only the `baseURL` changes.

<Info>
  Metrion routes Gemini requests through Google's OpenAI-compatible API endpoint (`generativelanguage.googleapis.com/v1beta/openai/chat/completions`). You use the OpenAI SDK, and Metrion handles the translation.
</Info>

## Prerequisites

* A Metrion account with your `sk-metrion-xxx` token (find it on the [Integrate page](https://www.metrion.dev/integrate))
* A Google Gemini API key saved in Metrion's Integrate page

## Setup

<Steps>
  ### Install the OpenAI SDK

  <CodeGroup>
    ```bash TypeScript theme={null}
    npm install openai
    ```

    ```bash Python theme={null}
    pip install openai
    ```
  </CodeGroup>

  ### Configure the client

  Set `baseURL` to Metrion's Gemini proxy and pass your `sk-metrion-xxx` token as `apiKey`. Metrion injects your Gemini key and forwards the request to Google's API.

  <CodeGroup>
    ```typescript TypeScript theme={null}
    import OpenAI from 'openai'

    const client = new OpenAI({
      apiKey: 'sk-metrion-xxx',       // your Metrion token
      baseURL: 'https://www.metrion.dev/api/proxy/gemini',
    })
    ```

    ```python Python theme={null}
    from openai import OpenAI

    client = OpenAI(
        api_key="sk-metrion-xxx",     # your Metrion token
        base_url="https://www.metrion.dev/api/proxy/gemini",
    )
    ```
  </CodeGroup>

  ### Send a request

  <CodeGroup>
    ```typescript TypeScript theme={null}
    import OpenAI from 'openai'

    const client = new OpenAI({
      apiKey: 'sk-metrion-xxx',
      baseURL: 'https://www.metrion.dev/api/proxy/gemini',
    })

    const message = await client.chat.completions.create({
      model: 'gemini-2.0-flash',
      max_tokens: 1024,
      messages: [{ role: 'user', content: 'Hello, world!' }],
    })

    console.log(message.choices[0].message.content)
    ```

    ```python Python theme={null}
    from openai import OpenAI

    client = OpenAI(
        api_key="sk-metrion-xxx",
        base_url="https://www.metrion.dev/api/proxy/gemini",
    )

    message = client.chat.completions.create(
        model="gemini-2.0-flash",
        max_tokens=1024,
        messages=[{"role": "user", "content": "Hello, world!"}],
    )

    print(message.choices[0].message.content)
    ```
  </CodeGroup>
</Steps>

## Direct HTTP

```bash theme={null}
curl https://www.metrion.dev/api/proxy/gemini/v1/chat/completions \
  -H 'Authorization: Bearer sk-metrion-xxx' \
  -H 'content-type: application/json' \
  -d '{
    "model": "gemini-2.0-flash",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, world!"}]
  }'
```

## Supported models

| Model ID           | Notes                      |
| ------------------ | -------------------------- |
| `gemini-2.0-flash` | Fast, multimodal, low cost |
| `gemini-2.5-pro`   | Most capable Gemini model  |
| `gemini-2.5-flash` | Fast and cost-efficient    |
| `gemini-1.5-pro`   | Long context (1M tokens)   |
| `gemini-1.5-flash` | Fast and lightweight       |

## Pass-through mode

To use your own Gemini key without storing it in Metrion, pass it in `Authorization: Bearer` and identify your Metrion account with the `x-metrion-token` header:

<CodeGroup>
  ```typescript TypeScript theme={null}
  import OpenAI from 'openai'

  const client = new OpenAI({
    apiKey: process.env.GEMINI_API_KEY,      // your Gemini key directly
    baseURL: 'https://www.metrion.dev/api/proxy/gemini',
    defaultHeaders: {
      'x-metrion-token': 'sk-metrion-xxx',   // identifies your Metrion account
    },
  })
  ```

  ```python Python theme={null}
  from openai import OpenAI
  import os

  client = OpenAI(
      api_key=os.environ["GEMINI_API_KEY"],
      base_url="https://www.metrion.dev/api/proxy/gemini",
      default_headers={"x-metrion-token": "sk-metrion-xxx"},
  )
  ```
</CodeGroup>

<Note>
  In pass-through mode, your Gemini key is forwarded directly to Google's API and is never stored by Metrion.
</Note>

## Track requests by user or service

Add the optional `x-metrion-user` header to tag individual requests. These labels appear in your Metrion logs and dashboards.

<Tip>
  Use `x-metrion-user` to break down costs by team member, bot, or application — for example `"x-metrion-user": "pipeline-rag"` or `"x-metrion-user": "user-12"`.
</Tip>

<CodeGroup>
  ```typescript TypeScript theme={null}
  const client = new OpenAI({
    apiKey: 'sk-metrion-xxx',
    baseURL: 'https://www.metrion.dev/api/proxy/gemini',
    defaultHeaders: {
      'x-metrion-user': 'user-12',
    },
  })
  ```

  ```python Python theme={null}
  client = OpenAI(
      api_key="sk-metrion-xxx",
      base_url="https://www.metrion.dev/api/proxy/gemini",
      default_headers={"x-metrion-user": "user-12"},
  )
  ```
</CodeGroup>
