# Use the Responses API with Azure OpenAI deployments

> Agno's new AzureOpenAIResponses model runs agents on Azure OpenAI through the Responses API, with API key or Entra ID authentication and the same tools, streaming and structured output as OpenAIResponses.

- Published: 2026-09-16
- Author: basil-chen
- Categories: Changelog
- Canonical: https://www.agno.com/articles/use-the-responses-api-with-azure-openai-deployments
- Markdown: https://www.agno.com/articles/use-the-responses-api-with-azure-openai-deployments.md

Agno's `AzureOpenAIResponses` points the `AzureOpenAI` client at your `AZURE_OPENAI_ENDPOINT` and gives your deployment the tools, structured output, streaming and background responses of `OpenAIResponses`. Until now, Agno's `AzureOpenAI` model gave Azure users Chat Completions only.

<Video
  src="/videos/changelog-azure-openai-responses.mp4"
  controls
  preload="metadata"
  aria-label="A short video on running Agno agents on Azure OpenAI deployments with AzureOpenAIResponses"
/>

```python
from agno.agent import Agent
from agno.models.azure import AzureOpenAIResponses

agent = Agent(
    model=AzureOpenAIResponses(id="gpt-5.6-luna"),  # your Azure deployment name
    markdown=True,
)
agent.print_response("Explain why regression tests matter in one paragraph.")
```

Set `id` to your Azure deployment name. Azure's Responses endpoint reads the deployment from the request body, and `AzureOpenAIResponses` sends your `id` there unchanged. The model raises a `ValueError` at startup if `id` is missing.

![OpenAIResponses and AzureOpenAIResponses side by side. OpenAIResponses takes a model name as its id, uses the OpenAI client and signs in with an OpenAI API key. AzureOpenAIResponses takes your Azure deployment name as its id, uses the AzureOpenAI client at your AZURE_OPENAI_ENDPOINT and signs in with an Azure API key or Entra ID. Both share tools, structured output, streaming and background responses.](https://www.agno.com/images/v3-0-10-azure-openai-responses.png)

`AzureOpenAIResponses` reads its connection from the environment when you don't pass it:

| Setting          | Environment variable    | Default              |
| ---------------- | ----------------------- | -------------------- |
| `api_key`        | `AZURE_OPENAI_API_KEY`  | None                 |
| `azure_endpoint` | `AZURE_OPENAI_ENDPOINT` | None                 |
| `api_version`    | `OPENAI_API_VERSION`    | `2025-04-01-preview` |
| `azure_ad_token` | `AZURE_OPENAI_AD_TOKEN` | None                 |

For Entra ID, pass `azure_ad_token_provider` or `azure_ad_token`. `AzureOpenAIResponses` uses one authentication method at a time, so an Entra ID credential never gets mixed with an API key from your environment.

Deployment names are yours to choose, so Agno can't always tell a reasoning model from its name. If your deployment serves a reasoning model and its name doesn't start with the model name, set `is_reasoning_model=True`.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/90_models/azure/openai/responses.py), and learn more about [Azure OpenAI](https://docs.agno.com/models/providers/cloud/azure-openai/overview) and the [OpenAI Responses model](https://docs.agno.com/models/providers/native/openai/responses/overview) in the documentation.
