skip to content
Add Azure OpenAI

Setup

Add Azure OpenAI

Your Azure credits, the same Conifer wire.


Azure OpenAI is not a normal OpenAI key. The gateway needs the resource URL and the key. Deployment names are not stored. Call each one as the request model.

Save the endpoint

In the console keys view, pick Azure OpenAI and paste:

  • Resource URL: https://{resource}.openai.azure.com/openai/v1
  • The Azure API key for that resource

The store is PUT /v1/keys/azure with {"api_key":"...","base_url":"https://{resource}.openai.azure.com/openai/v1"}. No deployments field (retired). A 422 names azure if the row fails; a 404 means no row. The header the gateway sends upstream is api-key.

Same values from the CLI, stored on the gateway (callers keep using CONIFER_API_KEY):

terminal
printf %s "$AZURE_KEY" | conifer keys add azure --url https://{resource}.openai.azure.com/openai/v1

To register Azure as a local CLI endpoint instead, so conifer run can hit the resource directly:

terminal
printf %s "$AZURE_KEY" | conifer endpoints add byok azure --url https://{resource}.openai.azure.com/openai/v1

The key is verified live against the resource and stored sealed. You can see it (provider, last four, resource URL) and remove it on the same console page. Mint a Conifer API key first at the console if callers will hit api.conifer.build.

Call a deployment

terminal
curl https://api.conifer.build/v1/chat/completions \
  -H "Authorization: Bearer $CONIFER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_DEPLOYMENT_NAME",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "three names for a build cache"}]
  }'

Set model to the Azure deployment name, or azure/<deployment>. The gateway maps nothing. Your deployments are not listed in GET /v1/models. A name the resource does not serve returns Azure’s own error.

One collision rule: a deployment named exactly like a catalog model (for example gpt-4o) routes to the catalog, not your resource. Give deployments distinct names.