> ## 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.

# OpenAI

> Route your OpenAI requests through Metrion to track token usage, costs, and latency — with a one-line SDK change.

Use Metrion as a drop-in proxy for OpenAI's API. Point the OpenAI SDK at Metrion's endpoint and use your `sk-metrion-xxx` token as the API key. Everything else stays the same.

## Prerequisites

* A Metrion account with your `sk-metrion-xxx` token (find it on the [Integrate page](https://www.metrion.dev/integrate))
* An OpenAI 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 OpenAI proxy and pass your `sk-metrion-xxx` token as `apiKey`. The proxy forwards requests to `https://api.openai.com/v1/chat/completions` and logs usage to your dashboard.

  <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/openai',
    })
    ```

    ```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/openai",
    )
    ```
  </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/openai',
    })

    const message = await client.chat.completions.create({
      model: 'gpt-4o',
      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/openai",
    )

    message = client.chat.completions.create(
        model="gpt-4o",
        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/openai/v1/chat/completions \
  -H 'Authorization: Bearer sk-metrion-xxx' \
  -H 'content-type: application/json' \
  -d '{
    "model": "gpt-4o",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, world!"}]
  }'
```

## Supported models

| Model ID        | Notes                      |
| --------------- | -------------------------- |
| `gpt-4o`        | Latest multimodal flagship |
| `gpt-4o-mini`   | Fast and cost-efficient    |
| `gpt-4-turbo`   | High-context window        |
| `gpt-3.5-turbo` | Low-cost general purpose   |
| `o1`            | Advanced reasoning         |
| `o3-mini`       | Compact reasoning model    |

Metrion uses prefix matching for versioned model IDs (e.g. `gpt-4o-mini-2024-07-18` resolves to `gpt-4o-mini` pricing).

## Pass-through mode

To use your own OpenAI 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.OPENAI_API_KEY,      // your OpenAI key directly
    baseURL: 'https://www.metrion.dev/api/proxy/openai',
    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["OPENAI_API_KEY"],
      base_url="https://www.metrion.dev/api/proxy/openai",
      default_headers={"x-metrion-token": "sk-metrion-xxx"},
  )
  ```
</CodeGroup>

<Note>
  In pass-through mode, your OpenAI key is forwarded directly to OpenAI'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": "agent-classifier"` or `"x-metrion-user": "user-99"`.
</Tip>

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

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