Provider fields 

Providers represent API connections with credentials.

LLM providers list with connection status

Provider list showing adapter type, endpoint, API key status, and action buttons.

Required 

identifier
Type
string
Required

true

Unique slug for programmatic access (e.g., openai-prod, ollama-local).

name
Type
string
Required

true

Display name shown in the backend.

adapter_type
Type
string
Required

true

The protocol to use:

  • openai — OpenAI API
  • anthropic — Anthropic Claude API
  • gemini — Google Gemini API
  • ollama — Local Ollama instance
  • openrouter — OpenRouter multi-model API
  • mistral — Mistral AI API
  • groq — Groq inference API
  • azure_openai — Azure OpenAI Service
  • custom — OpenAI-compatible endpoint
  • typesafe — TypeSafe decision API (decisions only, Decision service)
  • decision_sidecar — local decision sidecar (decisions only, no API key)
api_key
Type
string

API key for authentication. Stored as a nr-vault UUID identifier (envelope encryption). nr-llm never stores raw API keys in the database. Required for cloud providers (OpenAI, Claude, Gemini, etc.); not required for local providers like Ollama.

Optional 

endpoint_url
Type
string
Default
(adapter default)

Custom API endpoint URL.

For azure_openai it is required and names the URL shape (ADR-247):

  • the resource URL, for example https://contoso.openai.azure.com: requests go to /openai/deployments/<model id>/<operation>?api-version=<version>, so the model record's model id is the deployment name;
  • a URL ending in /openai/v1: requests go to the OpenAI paths below it, the deployment name travels as the body's model, and no api-version is sent.

Both send the key in the api-key header.

Name a deployment after the model it serves (gpt-5.2): nr-llm reads the model's capabilities, such as a reasoning profile, from the model id, and a custom deployment name does not carry them. For reasoning models prefer the v1 URL or set a recent apiVersion; older versions of the deployment API reject newer request fields. Enter the resource URL, not the portal's full target URI with /chat/completions in it. A resource behind a private endpoint resolves to a private address, which the nr-vault host filter refuses until the host is listed in its allowed_hosts.

organization_id
Type
string
Default
(empty)

Organization ID (OpenAI). Sent as the OpenAI-Organization request header by the OpenAI-compatible adapters (openai, together, fireworks, perplexity, custom). Azure OpenAI does not read it, and azure_openai does not send it.

timeout
Type
integer
Default
120

Maximum time in seconds to wait for the complete API response. A configuration- or model-level timeout overrides this value per request.

max_retries
Type
integer
Default
3

Number of retries after the first failed request (0 = try once, no retries). Timed-out requests are not retried.

options
Type
JSON
Default
{}

Additional adapter-specific options. Supported keys:

customHeaders

Object mapping header names to values, sent on every API request (including streaming), for example:

{"customHeaders": {"X-Custom-Header": "value"}}
Copied!

Custom headers are applied after the adapter's own headers, so a colliding name overrides the adapter value — a mistyped Content-Type breaks that provider's calls.

apiVersion
azure_openai on the deployment API only: the api-version to send, for example {"apiVersion": "2025-04-01-preview"}. Default 2024-10-21; a value not shaped like a version falls back to it.