diff --git a/docs/providers/openai.md b/docs/providers/openai.md index e3c9a1891eb..c4efcfb63f0 100644 --- a/docs/providers/openai.md +++ b/docs/providers/openai.md @@ -393,6 +393,134 @@ Legacy `plugins.entries.openai.config.personality` is still read as a compatibil +## Azure OpenAI endpoints + +The bundled `openai` provider can target an Azure OpenAI resource for image +generation by overriding the base URL. On the image-generation path, OpenClaw +detects Azure hostnames on `models.providers.openai.baseUrl` and switches to +Azure's request shape automatically. + + +Realtime voice uses a separate configuration path +(`plugins.entries.voice-call.config.realtime.providers.openai.azureEndpoint`) +and is not affected by `models.providers.openai.baseUrl`. See the **Realtime +voice** accordion under [Voice and speech](#voice-and-speech) for its Azure +settings. + + +Use Azure OpenAI when: + +- You already have an Azure OpenAI subscription, quota, or enterprise agreement +- You need regional data residency or compliance controls Azure provides +- You want to keep traffic inside an existing Azure tenancy + +### Configuration + +For Azure image generation through the bundled `openai` provider, point +`models.providers.openai.baseUrl` at your Azure resource and set `apiKey` to +the Azure OpenAI key (not an OpenAI Platform key): + +```json5 +{ + models: { + providers: { + openai: { + baseUrl: "https://.openai.azure.com", + apiKey: "", + }, + }, + }, +} +``` + +OpenClaw recognizes these Azure host suffixes for the Azure image-generation +route: + +- `*.openai.azure.com` +- `*.services.ai.azure.com` +- `*.cognitiveservices.azure.com` + +For image-generation requests on a recognized Azure host, OpenClaw: + +- Sends the `api-key` header instead of `Authorization: Bearer` +- Uses deployment-scoped paths (`/openai/deployments/{deployment}/...`) +- Appends `?api-version=...` to each request + +Other base URLs (public OpenAI, OpenAI-compatible proxies) keep the standard +OpenAI image request shape. + + +Azure routing for the `openai` provider's image-generation path requires +OpenClaw 2026.4.22 or later. Earlier versions treat any custom +`openai.baseUrl` like the public OpenAI endpoint and will fail against Azure +image deployments. + + +### API version + +Set `AZURE_OPENAI_API_VERSION` to pin a specific Azure preview or GA version +for the Azure image-generation path: + +```bash +export AZURE_OPENAI_API_VERSION="2024-12-01-preview" +``` + +The default is `2024-12-01-preview` when the variable is unset. + +### Model names are deployment names + +Azure OpenAI binds models to deployments. For Azure image-generation requests +routed through the bundled `openai` provider, the `model` field in OpenClaw +must be the **Azure deployment name** you configured in the Azure portal, not +the public OpenAI model id. + +If you create a deployment called `gpt-image-2-prod` that serves `gpt-image-2`: + +``` +/tool image_generate model=openai/gpt-image-2-prod prompt="A clean poster" size=1024x1024 count=1 +``` + +The same deployment-name rule applies to image-generation calls routed through +the bundled `openai` provider. + +### Regional availability + +Azure image generation is currently available only in a subset of regions +(for example `eastus2`, `swedencentral`, `polandcentral`, `westus3`, +`uaenorth`). Check Microsoft's current region list before creating a +deployment, and confirm the specific model is offered in your region. + +### Parameter differences + +Azure OpenAI and public OpenAI do not always accept the same image parameters. +Azure may reject options that public OpenAI allows (for example certain +`background` values on `gpt-image-2`) or expose them only on specific model +versions. These differences come from Azure and the underlying model, not +OpenClaw. If an Azure request fails with a validation error, check the +parameter set supported by your specific deployment and API version in the +Azure portal. + + +Azure OpenAI uses native transport and compat behavior but does not receive +OpenClaw's hidden attribution headers. See the **Native vs OpenAI-compatible +routes** accordion under [Advanced configuration](#advanced-configuration) +for details. + + + +For a separate Azure OpenAI Responses provider (distinct from the `openai` +provider), see the `azure-openai-responses/*` model refs in the +[Server-side compaction](#server-side-compaction-responses-api) accordion. + + + +Azure chat and Responses traffic need Azure-specific provider/API config in +addition to a base URL override. If you want Azure model calls beyond image +generation, use the onboarding flow or a provider config that sets the +appropriate Azure API/auth shape rather than assuming `openai.baseUrl` alone +is enough. + + ## Advanced configuration diff --git a/docs/tools/image-generation.md b/docs/tools/image-generation.md index 4b7a0789bdc..a09842f9fa9 100644 --- a/docs/tools/image-generation.md +++ b/docs/tools/image-generation.md @@ -160,6 +160,10 @@ Edit with multiple references: /tool image_generate action=generate model=openai/gpt-image-2 prompt="Combine the character identity from the first image with the color palette from the second" images='["/path/to/character.png","/path/to/palette.jpg"]' size=1536x1024 ``` +To route OpenAI image generation through an Azure OpenAI deployment instead +of `api.openai.com`, see [Azure OpenAI endpoints](/providers/openai#azure-openai-endpoints) +in the OpenAI provider docs. + MiniMax image generation is available through both bundled MiniMax auth paths: - `minimax/image-01` for API-key setups