> For the complete documentation index, see [llms.txt](https://docs.umbraco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.umbraco.com/ai-in-umbraco/providers/openai.md).

# OpenAI

Configure OpenAI as an AI provider for chat, embedding, speech-to-text, and image generation capabilities.

OpenAI provides access to GPT, text-embedding, and image models, supporting Chat, Embedding, Speech-to-Text, and Image Generation capabilities. Image Generation is experimental. See [Enabling image generation](/ai-in-umbraco/using-the-api/image-generation.md#enabling-image-generation).

## Installation

{% code title="Package Manager Console" %}

```powershell
Install-Package Umbraco.AI.OpenAI
```

{% endcode %}

Or via .NET CLI:

{% code title="Terminal" %}

```bash
dotnet add package Umbraco.AI.OpenAI
```

{% endcode %}

## Connection Settings

| Setting         | Required | Description                                                                 |
| --------------- | -------- | --------------------------------------------------------------------------- |
| API Key         | Yes      | Your OpenAI API key from [platform.openai.com](https://platform.openai.com) |
| Organization ID | No       | Optional organization identifier for usage tracking                         |
| Endpoint        | No       | Custom endpoint URL (defaults to `https://api.openai.com/v1`)               |

### Getting an API Key

1. Sign up at [platform.openai.com](https://platform.openai.com)
2. Navigate to **API keys** in the sidebar
3. Click **Create new secret key**
4. Copy the key (it won't be shown again)

{% hint style="warning" %}
Keep your API key secure. Never commit it to source control or expose it in client-side code.
{% endhint %}

### Azure OpenAI

OpenAI models are also available through Azure OpenAI Service. To use Azure:

1. Set the **Endpoint** to your Azure OpenAI resource URL: `https://{resource-name}.openai.azure.com/`
2. Use your Azure API key instead of an OpenAI key
3. Model names may differ (deployment names vs model names)

{% hint style="info" %}
Azure OpenAI provides data residency, enterprise compliance, and integration with Azure security features.
{% endhint %}

![OpenAI connection detail showing API Key and Organization fields](https://583970477-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCHKT9bQhbR3swAdBvil4%2Fuploads%2Fgit-blob-a9044f62de6ff2c893e93d904ad25edb3fbde39f%2Fopenai-create-connection.png?alt=media)

## Related

* [Providers Overview](/ai-in-umbraco/providers/providers.md)
* [Managing Connections](/ai-in-umbraco/backoffice/managing-connections.md)
* [Image Generation API](/ai-in-umbraco/using-the-api/image-generation.md) - Generate images with OpenAI


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.umbraco.com/ai-in-umbraco/providers/openai.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
