Migration guidesFrom Azure OpenAI
From Azure OpenAI alone, to Azure as one of your providers
Azure OpenAI runs OpenAI models on your Azure subscription, under your enterprise agreement and Azure's content filters. INFRO keeps all of that: it calls your resource with your key. What changes is that your application calls INFRO, which can fail over from Azure to OpenAI or another provider, enforce budgets before the call and record cost per request.
Azure OpenAI in Microsoft Foundry Models; v1 API without api-version since August 2025
INFRO accounts are self-serve. The catalog, the docs, and the API contract are public, the gateway is deployed, and anything beyond v1 is marked Later. Plans and trial
Where things stand
Naming
Microsoft's docs now call it Azure OpenAI in Microsoft Foundry Models; the platform, formerly Azure AI Foundry, is Microsoft Foundry.
The v1 API
Since August 2025 the /openai/v1/ path needs no api-version and works with the plain OpenAI client. It also serves other Foundry models sold by Azure through the same chat completions syntax.
What INFRO calls
https://{resource}.openai.azure.com/openai/v1 with the resource's api-key. The model sent is your deployment name, from the connection's model map, else the model name. Responses requests go to Azure as written.
If Azure is your only provider and your controls already live in Azure, a gateway may add little. Stay if one of these holds.
- You use Entra ID only and keys are disabled on the resource. INFRO's Azure connection uses the resource's API key.
- Everything must stay inside your Azure tenant or a data zone. INFRO runs on Cloudflare's network between your app and Azure; residency is on the roadmap.
- You use Azure's evals, stored completions, background Responses or the Assistants and Realtime APIs. INFRO does not serve them.
- Azure is your only provider and Azure Monitor already answers your cost questions.
The edits, one row each. Everything not listed here stays as it is.
| Azure OpenAI | INFRO | |
|---|---|---|
| Base URL | https://{resource}.openai.azure.com/openai/v1/ or /openai/deployments/{name}/...?api-version=. | https://api.infro.io/v1 |
| Credential | api-key, or an Entra ID bearer token. | An INFRO gateway key. INFRO holds the resource name and key as a connection, sealed. |
| Model id | Your deployment name, for example gpt-prod. | openai/gpt-5.6-terra; the connection maps it to gpt-prod. Or a route name. |
| Fields | user, metadata, store; content_filter_results in responses. | metadata { user_id, session_id, tags } recorded by INFRO and not forwarded. Azure's content filter still runs on your resource. |
Before · Azure OpenAI v1
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://my-company.openai.azure.com/openai/v1/",
apiKey: process.env.AZURE_OPENAI_API_KEY,
});
await client.chat.completions.create({
model: "gpt-prod", // deployment name
messages: [{ role: "user", content: "Hello" }],
});After · INFRO
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.infro.io/v1",
apiKey: process.env.INFRO_API_KEY,
});
await client.chat.completions.create({
// A route: Azure deployment first, OpenAI second
model: "gpt-prod",
messages: [{ role: "user", content: "Hello" }],
});Deployments in the model map
On the Azure connection, map openai/gpt-5.6-terra to your deployment gpt-prod. An unmapped model is sent with its own name as the deployment name.
Content filters keep working
Azure applies your filters on your resource. A request Azure refuses follows the route's moderation rule: return the refusal, or fail over to the next target if you choose.
Several resources
Connect each Azure resource (one per region or data zone) as its own connection, and a route can fail over between them before trying another provider.
Azure OpenAI's objects against INFRO's, from Azure OpenAI's public documentation read on 19 October 2026 and checked against what the gateway implements. One row says INFRO has nothing.
| Azure OpenAI | What it does there | In INFRO |
|---|---|---|
| Resource and keydifferent | An Azure OpenAI resource with keys or Entra ID. | An Azure connection with the resource name and key, sealed. No Entra ID. |
| Deploymentssame shape | Named deployments of each model, with a deployment type. | A model map from catalog ids to your deployment names. |
| Failoverdifferent | Across resources is your application's job. | Routes across Azure resources and other providers, with failure rules per kind. |
| Quotas and PTUdifferent | Tokens-per-minute per deployment; Provisioned Throughput. | Unchanged on Azure's side. INFRO adds dollar budgets that refuse before the call. |
| Content filters and Prompt Shieldssame shape | Configured per resource, attached per deployment. | They still run on your resource. INFRO adds its own guardrails on top if you want them. |
| Prompt cachingsame shape | Automatic prefix caching, prompt_cache_key, explicit breakpoints on newer models. | Passed to Azure as sent; caching happens on Azure. INFRO adds an opt-in exact-match response cache. |
| Responses APIdifferent | Recommended; background tasks, stored responses. | /v1/responses sent to Azure as written; previous_response_id and background are refused because INFRO keeps no responses. |
| Evals and stored completionsnothing | /openai/v1/evals, store and metadata. | Nothing. |
| Costdifferent | Azure Cost Management. | Estimated cost per request by project, key, user and tag. Not reconciled against Azure billing. |
Our reading of Azure OpenAI’s published documentation, not a trial or a benchmark. If we have read something wrong, tell us and we will fix the row.
What INFRO does not do
- Authenticate to Azure with Entra ID or managed identities.
- Serve Assistants, Realtime, evals, batches, fine-tuning or embeddings.
- Keep traffic inside your Azure tenant or a data zone.
- Reconcile against Azure billing.
What does not come across
- Azure Monitor metrics and logs from before the switch; they stay in Azure.
- Stored completions and stored responses.
Questions
- Do my Azure content filters still apply?
- Yes. INFRO calls your own resource, and Azure applies its filters there as before.
- Who bills me for usage?
- Microsoft, on your Azure subscription. INFRO is a subscription and adds 0% to model spend.
- Can I keep my deployment names in code?
- Yes. Create INFRO routes named after your deployments; callers keep sending the same
model.
Move with us, or on your own
The migration program maps your Azure OpenAI setup to INFRO connections, routes and budgets on a call and moves the first service with you. Your providers keep billing you directly; INFRO is a subscription and adds 0% to model spend.
Sources
Every statement on this page about Azure OpenAI comes from one of these, read on 19 October 2026. Nothing is inferred from a trial, a benchmark, or a conversation.
- Microsoft Learn — API lifecycle and the v1 APIread 2026-10-19
- Microsoft Learn — REST referenceread 2026-10-19
- Microsoft Learn — Deployment typesread 2026-10-19
- Microsoft Learn — Content filteringread 2026-10-19
- Microsoft Learn — Prompt cachingread 2026-10-19