Skip to main content
AI provider integrations connect Arize AX to an LLM provider so you can run prompt playground sessions, LLM-as-a-judge evaluations and managed agents without pasting a key into every tool. This guide covers the mutations for creating and rotating those integrations, and the separate, narrower credential records the schema also exposes.

Find the IDs you need

LLM integrations hang off an account, an organization, or a space. Start from viewer for the space ID and account for the account and organization IDs. See using global node IDs for how these opaque IDs work.

Understand the three resource types

  1. LlmIntegration: backs the AI Providers UI, prompt playground, evals and agent runtimes. It carries its own apiKey, baseUrl and modelNames, is scoped via scopings, and is listed on Account.llmIntegrations and Space.llmIntegrations.
  2. ExternalLlmApiKey and CustomLlmEndpoint: narrower records scoped by accountOrganizationId directly (no further scoping, unlike LlmIntegration’s scopings), listed on AccountOrganization.externalLlmApiKeys and .customLlmEndpoints. Nothing links either back to an LlmIntegration; creating one does not create a usable playground integration.
  3. GoogleCloudIntegration: an organization-scoped record that verifies access to a Google Cloud project. It has no query field, so the only way to see one again is the ID the mutation returned.
For most automation, create an LlmIntegration directly with createLlmIntegration. Reach for ExternalLlmApiKey or CustomLlmEndpoint only if you specifically need that narrower record.

List configured LLM integrations

List the integrations available to the account and to a space. Space-level results include integrations scoped to that space, its organization, or the whole account.
Never select apiKey in a listing query; use hasApiKey to check whether a key is set without round-tripping the secret.

Add a provider API key and connect it as an LLM integration

An ExternalLlmApiKey only stores a raw credential at the organization level. To actually use the provider in the playground, evals or agents, create an LlmIntegration as a separate step, passing the key straight to it.
The second mutation’s input reuses the same key: { "accountId": "QWNjb3VudDo5", "provider": "anthropic", "name": "Team Anthropic key", "apiKey": "sk-ant-REPLACE_ME", "enableDefaultModels": true, "scopings": [{ "spaceId": "U3BhY2U6MTIz" }] }. Omit scopings for an account-wide integration. For AWS or GCP, add providerMetadata (AWS: roleArn, externalId; GCP: projectId, location, projectAccessLabel). Reference: createExternalLlmApiKey, createLlmIntegration.

Register a custom OpenAI-compatible endpoint

Point Arize at a self-hosted or third-party OpenAI-compatible model server with createCustomLlmEndpoint, or use createLlmIntegration with provider: "custom" and a baseUrl if you want it usable directly in the playground.
Enter the base URL including the version path (for example, /v1) but without an endpoint path like /chat/completions; Arize appends that automatically. Add headers (a list of { key, value } pairs) for anything else your proxy requires. Reference: createCustomLlmEndpoint.

Set up a Google Cloud (Vertex) integration

Verify access to a Google Cloud project before using Vertex AI models. Set an arize-integration-key label on the GCP project first, then register that same value as projectAccessLabel.
GoogleCloudIntegration has no list query and does not implement Node, so it cannot be refetched by ID either. Save the id this mutation returns. To use Vertex models in the playground or evals, also create an LlmIntegration with provider: "googleCloud" and the same projectId/location/projectAccessLabel in providerMetadata.
Reference: createGoogleCloudIntegration.

Rotate or remove a key

Update the stored key on an LlmIntegration without recreating it, or delete the integration outright once it is no longer in use.
Passing null or an empty string for apiKey on updateLlmIntegration removes the stored key instead of rotating it. updateExternalLlmApiKey, deleteExternalLlmApiKey, deleteCustomLlmEndpoint and deleteGoogleCloudIntegration follow the same shape for the narrower resource types. Reference: updateLlmIntegration, deleteLlmIntegration.

Gotchas and behavior notes

createLlmIntegration and updateLlmIntegration take provider: LlmProvider (lowercase values like openai, azureopenai, aws, googleCloud). Reading an integration back returns provider: LLMIntegrationProvider, a differently-cased and differently-spelled enum (openAI, azureOpenAI, awsBedrock, vertexAI). Do not echo a value you read straight back into a mutation.
On updateLlmIntegration, switching authType to oauth2_client_credentials requires oauthConfig with tokenUrl, clientId and clientSecret; switching away from it deletes the stored config. Omitting oauthConfig while authType is unchanged keeps whatever is already stored.
createCustomLlmEndpoint and createLlmIntegration both type compatibleFormat as ExternalLlmApiKeyProvider, which has only 8 values and does not include custom, googleCloud, aws, cursor or typeSafeAi. It defaults to openai.

LLM integration mutations

Full argument and return-type reference for all twelve mutations.

All mutations

Index of every GraphQL mutation grouped by domain.

API explorer

Run queries and mutations interactively against your own account.