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

# OpenAI

> Use OpenAI models through the ngrok AI Gateway.

This guide walks through using [OpenAI](https://openai.com) models with the AI Gateway. OpenAI is a **built-in provider**, so ngrok.ai offers managed inference for it—you can use OpenAI models without an OpenAI account of your own, or bring your own key.

## Use ngrok.ai inference (no OpenAI account)

You can use OpenAI models without your own OpenAI account—ngrok.ai inference supplies the upstream credentials and bills the model cost through credits.

<Steps>
  <Step title="Create an access key and add credits">
    Follow the [quickstart](/ai-gateway/quickstart) to create an [access key](/ai-gateway/concepts/access-keys) and purchase [credits](/ai-gateway/concepts/credits) in [app.ngrok.ai](https://app.ngrok.ai).
  </Step>

  <Step title="Send requests">
    Point your SDK at the gateway with your access key:

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

      client = OpenAI(
          base_url="https://gateway.ngrok.ai/v1",
          api_key="ng-xxxxx-g1-xxxxx"  # Access key
      )

      response = client.chat.completions.create(
          model="gpt-4o",
          messages=[{"role": "user", "content": "Hello!"}]
      )
      ```

      ```bash cURL theme={null}
      curl https://gateway.ngrok.ai/v1/chat/completions \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer ng-xxxxx-g1-xxxxx" \
        -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello!"}]}'
      ```
    </CodeGroup>
  </Step>
</Steps>

## Bring your own OpenAI key

Want requests billed to your own OpenAI account instead of through credits? Store your OpenAI key once—the gateway attaches it for you on every request.

<Steps>
  <Step title="Create an access key">
    Follow the [quickstart](/ai-gateway/quickstart) to create an [access key](/ai-gateway/concepts/access-keys) in [app.ngrok.ai](https://app.ngrok.ai) if you don't have one yet.
  </Step>

  <Step title="Add your OpenAI key">
    [Add a provider key](/ai-gateway/guides/attaching-provider-keys#add-a-provider-key) for OpenAI. ngrok stores it encrypted, so it never has to live in your application or get shared around—and you can reuse it across as many access keys as you need.
  </Step>

  <Step title="Route to it with a configuration">
    [Create an access key configuration](/ai-gateway/guides/access-key-configurations#create-a-configuration) with an OpenAI routing rule set to **Bring your own API key**, then assign it to your access key.
  </Step>

  <Step title="Keep sending your access key">
    Your code doesn't change. Send the same access key as before—the gateway swaps in your OpenAI key before the request leaves for OpenAI.
  </Step>
</Steps>

## Explicit provider routing

```python theme={null}
response = client.chat.completions.create(
    model="openai:gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}]
)
```

## Available models

Browse the [model catalog](/ai-gateway/reference/model-catalog#openai) for the full list of OpenAI models you can call through the gateway.

## Next steps

* [Access Keys](/ai-gateway/concepts/access-keys)
* [Access Key Configurations](/ai-gateway/guides/access-key-configurations)
* [Provider Keys](/ai-gateway/guides/attaching-provider-keys)
