Skip to content

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 OpenAIINFRO
Base URLhttps://{resource}.openai.azure.com/openai/v1/ or /openai/deployments/{name}/...?api-version=.https://api.infro.io/v1
Credentialapi-key, or an Entra ID bearer token.An INFRO gateway key. INFRO holds the resource name and key as a connection, sealed.
Model idYour deployment name, for example gpt-prod.openai/gpt-5.6-terra; the connection maps it to gpt-prod. Or a route name.
Fieldsuser, 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 OpenAIWhat it does thereIn INFRO
Resource and keydifferentAn Azure OpenAI resource with keys or Entra ID.An Azure connection with the resource name and key, sealed. No Entra ID.
Deploymentssame shapeNamed deployments of each model, with a deployment type.A model map from catalog ids to your deployment names.
FailoverdifferentAcross resources is your application's job.Routes across Azure resources and other providers, with failure rules per kind.
Quotas and PTUdifferentTokens-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 shapeConfigured per resource, attached per deployment.They still run on your resource. INFRO adds its own guardrails on top if you want them.
Prompt cachingsame shapeAutomatic 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 APIdifferentRecommended; 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.
CostdifferentAzure 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.