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

# OpenAI

> Route OpenAI requests through Inference Catalyst for full observability.

Route your OpenAI requests through the Inference Catalyst gateway to get cost tracking, latency monitoring, and analytics. You keep your existing OpenAI API key — just point the SDK at the gateway and add a few headers.

<Info>Prefer automatic setup? Run `inf instrument` to instrument your codebase in seconds. [Learn more](/integrations/install-with-ai)</Info>

## Setup

<Steps>
  <Step title="Get your API keys">
    You need two keys:

    * **Inference Catalyst project API key** — from your [dashboard](https://inference.net/dashboard) under **API Keys**
    * **OpenAI API key** — from your [OpenAI account](https://platform.openai.com/api-keys)
  </Step>

  <Step title="Set environment variables">
    <Metadata text="integrations/openai/env-vars" />

    ```bash theme={"system"}
    export INFERENCE_API_KEY=<your-project-api-key>
    export OPENAI_API_KEY=<your-openai-api-key>
    ```
  </Step>

  <Step title="Update your code">
    Point the SDK at the gateway. Your project API key goes in `apiKey` to authenticate with the gateway, and your OpenAI key goes in `x-inference-provider-api-key` so the gateway can forward it to OpenAI.

    <CodeGroup>
      <Metadata text="integrations/openai/setup" />

      ```typescript TypeScript theme={"system"}
      import OpenAI from "openai";

      const client = new OpenAI({
        baseURL: "https://api.inference.net/v1",
        apiKey: process.env.INFERENCE_API_KEY,
        defaultHeaders: {
          "x-inference-provider-api-key": process.env.OPENAI_API_KEY,
          "x-inference-provider": "openai",
          "x-inference-environment": process.env.NODE_ENV,
        },
      });

      const response = await client.chat.completions.create({
        model: "gpt-4.1",
        messages: [{ role: "user", content: "Hello" }],
      }, {
        headers: { "x-inference-task-id": "default" },
      });
      ```

      <Metadata text="integrations/openai/setup" />

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

      client = OpenAI(
          base_url="https://api.inference.net/v1",
          api_key=os.environ["INFERENCE_API_KEY"],
          default_headers={
              "x-inference-provider-api-key": os.environ["OPENAI_API_KEY"],
              "x-inference-provider": "openai",
              "x-inference-environment": env = os.getenv("APP_ENV", "development"),
          },
      )

      response = client.chat.completions.create(
          model="gpt-4.1",
          messages=[{"role": "user", "content": "Hello"}],
          extra_headers={"x-inference-task-id": "default"},
      )
      ```

      <Metadata text="integrations/openai/setup-curl" />

      ```bash cURL theme={"system"}
      curl https://api.inference.net/v1/chat/completions \
        -H "Authorization: Bearer $INFERENCE_API_KEY" \
        -H "x-inference-provider-api-key: $OPENAI_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-inference-provider: openai" \
        -H "x-inference-environment: production" \
        -H "x-inference-task-id: default" \
        -d '{
          "model": "gpt-4.1",
          "messages": [{"role": "user", "content": "Hello"}]
        }'
      ```
    </CodeGroup>
  </Step>
</Steps>
