---
title: "Update an integration"
method: PATCH
path: "/v2/integrations/{integration_id}"
tags: ["Integrations"]
---

# Update an integration

`PATCH /v2/integrations/{integration_id}`

Partially update an integration. `type` is immutable (and, for `LLM`,
`config.provider`). At least one field must be provided.

<Warning>This endpoint is in alpha, read more [here](https://arize.com/docs/ax/rest-reference#api-version-stages).</Warning>

## Path parameters

- `integration_id` string, required — A universally unique identifier (base64-encoded opaque string).

## Request body

- union — Partial update of an integration, discriminated by `type` (immutable). The `type` field selects the per-type PATCH shape. Provide at least one updatable field in addition to `type`.
  - object — PATCH body for an `LLM` integration. `type` is required (it selects the union member) and immutable. Provide at least one updatable field (`name`, `scopings`, or `config`) in addition to `type`. `scopings` replaces on provide.
    - `type` 'LLM', required — Discriminator. Immutable; must match the integration's type.
    - `name` string — New integration name.
    - `scopings` IntegrationScopingRequest[] — Replaces the existing scoping rules.
      - `organization_id` string, nullable — Organization identifier (base64). Null means account-wide.
      - `space_id` string, nullable — Space identifier (base64). Null means organization-wide (or account-wide when organization_id is also null).
    - `config` UpdateLlmConfig — Partial LLM config for PATCH. `provider` is immutable; if present it must match the stored value. Field applicability is provider-specific and enforced by the handler with 422: `api_key` and `is_function_calling_enabled` do not apply to `AWS_BEDROCK` or `VERTEX_AI`; `auth` applies to `AWS_BEDROCK` only; `base_url` applies to `CUSTOM`, `NVIDIA_NIM`, and `ANTHROPIC` only; `headers` apply to `CUSTOM` and `NVIDIA_NIM` only; `is_default_models_enabled` and `model_names` apply to `AWS_BEDROCK`, `CUSTOM`, and `NVIDIA_NIM` only; `project_id`, `location`, and `project_access_label` apply to `VERTEX_AI` only.
      - `provider` 'OPEN_AI' | 'ANTHROPIC' | 'GEMINI' | 'AWS_BEDROCK' | 'CUSTOM' | 'VERTEX_AI' | 'NVIDIA_NIM' — The LLM vendor for an `LLM` integration. Selects the per-provider `config` member. `OPEN_AI`, `ANTHROPIC`, `GEMINI`, `AWS_BEDROCK`, `CUSTOM`, `VERTEX_AI`, and `NVIDIA_NIM` are implemented; additional providers are added non-breakingly.
      - `api_key` string, nullable — Rotate the API key. Pass null to clear it. Omit to keep unchanged. Not valid for `AWS_BEDROCK` (bearer tokens are rotated via `auth`) or `VERTEX_AI`.
      - `is_function_calling_enabled` boolean — Enable or disable function/tool calling. Omit to keep unchanged. Not valid for `AWS_BEDROCK` or `VERTEX_AI`.
      - `auth` union — AWS Bedrock auth settings for create and update, discriminated by `auth_type`. On PATCH this object replaces the stored auth settings wholesale (auth_type may change); omitted fields of the previous auth mode are cleared.
        - object — Create role-assumption auth. `role_arn` is required.
          - `auth_type` 'DEFAULT', required
          - `role_arn` string, required — AWS IAM role ARN Arize assumes for cross-account access.
          - `external_id` string — External ID on the assume-role policy. Defaults to not set.
          - `base_url` string — Custom Bedrock endpoint URL. Defaults to the provider default endpoint.
        - object — Create bearer-token auth. `api_key` is required and write-only (never returned; surfaces as `has_api_key` on read).
          - `auth_type` 'BEARER_TOKEN', required
          - `api_key` string, required — Bearer token for Bedrock (write-only, never returned).
          - `base_url` string — Custom Bedrock endpoint URL. Defaults to the provider default endpoint.
        - object — Create proxy auth. `base_url` is required. `headers` is write-only; names are returned as `header_names` on read.
          - `auth_type` 'PROXY_WITH_HEADERS', required
          - `base_url` string, required — Proxy URL requests are forwarded to (HTTPS).
          - `headers` object — Custom request headers sent to the proxy, as a name-to-value map. Write-only: values are never returned; names are exposed as `header_names` on read. Defaults to no headers. The serialized header map must not exceed 8,175 bytes.
      - `base_url` string, nullable — (`CUSTOM`, `NVIDIA_NIM`, and `ANTHROPIC` only) New endpoint URL. For `NVIDIA_NIM` and `ANTHROPIC` the field is optional on the resource, so null clears it (falling back to the provider default endpoint). For `CUSTOM` it is required on the resource — null is rejected with 422. Omit to keep unchanged.
      - `headers` object, nullable — (`CUSTOM` and `NVIDIA_NIM` only) Replaces the configured custom request headers: the provided map becomes the full header set. Pass null to clear all headers. Omit to keep unchanged. Write-only; names are exposed as `header_names` on read. The serialized header map must not exceed 8,175 bytes.
      - `is_default_models_enabled` boolean — (`AWS_BEDROCK`, `CUSTOM`, and `NVIDIA_NIM` only) Enable or disable Arize's default model catalog. The effective config must keep at least one model source or the request is rejected with 422. Omit to keep unchanged.
      - `model_names` string[] — (`AWS_BEDROCK`, `CUSTOM`, and `NVIDIA_NIM` only) Replaces the custom model list. The effective config must keep at least one model source or the request is rejected with 422. Omit to keep unchanged.
      - `project_id` string — (`VERTEX_AI` only) New GCP project ID. Required on the resource, so it may be changed but never cleared; omitted fields keep their stored values (per-scalar deep-merge).
      - `location` string — (`VERTEX_AI` only) New GCP region. Required on the resource, so it may be changed but never cleared; omitted fields keep their stored values (per-scalar deep-merge).
      - `project_access_label` string — (`VERTEX_AI` only) New project-access label. Required on the resource, so it may be changed but never cleared; omitted fields keep their stored values (per-scalar deep-merge).
  - object — Partial update body for `type=AGENT`. `type` is immutable; if present it must equal `AGENT` (422 otherwise).
    - `type` 'AGENT', required — Discriminator. Immutable; must match the integration's type.
    - `name` string
    - `description` string, nullable
    - `scopings` IntegrationScopingRequest[] — Replace-on-provide. Empty array reverts to account-wide.
      - `organization_id` string, nullable — Organization identifier (base64). Null means account-wide.
      - `space_id` string, nullable — Space identifier (base64). Null means organization-wide (or account-wide when organization_id is also null).
    - `config` UpdateAgentConfig — Partial agent config for PATCH. All collection fields are replace-on-provide.
      - `endpoint` string, uri
      - `headers` object, nullable — Replace-on-provide. Pass `null` (or `{}`) to clear all headers. Encrypted at rest; never returned in responses.
      - `input_schema` object — New JSON Schema for the request payload shape.
      - `request_presets` UpdateAgentRequestPresetInput[] — Replace-on-provide preset list, matched by `name`: existing names update in place (preserving id/timestamps), new names insert, removed names delete.
        - `name` string, required — Preset name (unique within the integration). Length 1-255.
        - `description` string, nullable — Optional preset description (length 0-1024).
        - `config` object, required — Partial request body. Validated against the parent integration's `input_schema` with `required` dropped.

## Response `200`

An integration object.

- union — A polymorphic integration resource. The `type` field selects the `config` shape; for `LLM`, `config.provider` selects the per-provider config.
  - object — An LLM integration (type=LLM).
    - `id` string, required — The unique identifier for the integration.
    - `type` 'LLM', required — Discriminator identifying an LLM integration.
    - `name` string, required — The integration name. Unique per (account, type).
    - `scopings` IntegrationScoping[], required — Visibility scoping rules. Account-wide when empty.
      - `organization_id` string, nullable — Organization identifier (base64). Null means account-wide.
      - `space_id` string, nullable — Space identifier (base64). Null means organization-wide (or account-wide when organization_id is also null).
    - `created_at` string, date-time, required — When the integration was created.
    - `updated_at` string, date-time, required — When the integration was last updated.
    - `created_by_user_id` string, required — Unique identifier of the user who created the integration.
    - `config` union, required — Per-provider LLM config, discriminated by `provider`.
      - object — Config for an OpenAI LLM integration.
        - `is_function_calling_enabled` boolean, required — Whether function/tool calling is enabled.
        - `provider` 'OPEN_AI', required — Discriminator identifying the OpenAI provider.
        - `has_api_key` boolean, required — Whether an API key is configured (the key itself is never returned).
      - object — Config for an Anthropic LLM integration.
        - `is_function_calling_enabled` boolean, required — Whether function/tool calling is enabled.
        - `provider` 'ANTHROPIC', required — Discriminator identifying the Anthropic provider.
        - `has_api_key` boolean, required — Whether an API key is configured (the key itself is never returned).
        - `base_url` string, nullable — Endpoint URL serving the Anthropic Messages API, including the version path. Null when not set.
      - object — Config for a Google Gemini LLM integration.
        - `is_function_calling_enabled` boolean, required — Whether function/tool calling is enabled.
        - `provider` 'GEMINI', required — Discriminator identifying the Gemini provider.
        - `has_api_key` boolean, required — Whether an API key is configured (the key itself is never returned).
      - object — Config for an AWS Bedrock LLM integration. The model catalog is caller-controlled via `is_default_models_enabled` and `model_names`. Function/tool-calling settings do not apply to Bedrock and are omitted.
        - `provider` 'AWS_BEDROCK', required — Discriminator identifying the AWS Bedrock provider.
        - `is_default_models_enabled` boolean, required — Whether Arize's default Bedrock model catalog is enabled.
        - `model_names` string[], required — Custom model names configured on this integration. Empty when none.
        - `auth` union, required — AWS Bedrock auth settings, discriminated by `auth_type`.
          - object — Role-assumption auth for AWS Bedrock: Arize assumes the provided IAM role to call Bedrock. The role ARN and external ID are not secrets and are returned on read.
            - `auth_type` 'DEFAULT', required — Discriminator identifying role-assumption auth.
            - `role_arn` string, required — AWS IAM role ARN Arize assumes for cross-account access.
            - `external_id` string, nullable, required — External ID on the assume-role policy. Null when not set.
            - `base_url` string, nullable, required — Custom Bedrock endpoint URL. Null when not set.
          - object — Bearer-token auth for AWS Bedrock. The token surfaces as `has_api_key` on read; the token itself is never returned.
            - `auth_type` 'BEARER_TOKEN', required — Discriminator identifying bearer-token auth.
            - `has_api_key` boolean, required — Whether a bearer token is configured (the token itself is never returned). Always true for integrations created through this API; may be false for integrations created through the Arize UI without a token.
            - `base_url` string, nullable, required — Custom Bedrock endpoint URL. Null when not set.
          - object — Proxy auth for AWS Bedrock: requests are forwarded to a proxy URL with custom headers. Header values are write-only; configured names are returned as `header_names`.
            - `auth_type` 'PROXY_WITH_HEADERS', required — Discriminator identifying proxy auth.
            - `base_url` string, required — Proxy URL requests are forwarded to.
            - `header_names` string[], required — Names of the custom request headers configured on this integration. Empty when none are configured. Header values are write-only and never returned.
      - object — Config for a custom OpenAI-compatible endpoint integration. `base_url` is the endpoint Arize sends requests to; it must implement the OpenAI API shape. Secrets are write-only: the API key surfaces as `has_api_key` and custom request headers surface as `header_names` (names only).
        - `is_function_calling_enabled` boolean, required — Whether function/tool calling is enabled.
        - `provider` 'CUSTOM', required — Discriminator identifying a custom OpenAI-compatible endpoint.
        - `has_api_key` boolean, required — Whether an API key is configured (the key itself is never returned).
        - `base_url` string, required — Endpoint URL requests are sent to.
        - `header_names` string[], required — Names of the custom request headers configured on this integration. Empty when none are configured. Header values are write-only and never returned.
        - `is_default_models_enabled` boolean, required — Whether Arize's default model catalog is enabled.
        - `model_names` string[], required — Custom model names configured on this integration. Empty when none.
      - object — Config for a Google Vertex AI integration. Vertex stores no credentials: Arize accesses Vertex through the configured GCP project. All fields are returned on read.
        - `provider` 'VERTEX_AI', required — Discriminator identifying the Vertex AI provider.
        - `project_id` string, required — GCP project ID Arize accesses Vertex through.
        - `location` string, required — GCP region (e.g. us-central1).
        - `project_access_label` string, required — Label used to verify Arize's access to the GCP project.
      - object — Config for an NVIDIA NIM integration. Every connection field is optional: `base_url` targets a self-hosted NIM endpoint (null when using the provider default). Secrets are write-only: the API key surfaces as `has_api_key` and custom request headers surface as `header_names` (names only).
        - `is_function_calling_enabled` boolean, required — Whether function/tool calling is enabled.
        - `provider` 'NVIDIA_NIM', required — Discriminator identifying the NVIDIA NIM provider.
        - `has_api_key` boolean, required — Whether an API key is configured (the key itself is never returned).
        - `base_url` string, nullable, required — Self-hosted NIM endpoint URL. Null when not set.
        - `header_names` string[], required — Names of the custom request headers configured on this integration. Empty when none are configured. Header values are write-only and never returned.
        - `is_default_models_enabled` boolean, required — Whether Arize's default model catalog is enabled.
        - `model_names` string[], required — Custom model names configured on this integration. Empty when none.
  - object — An agent integration (type=AGENT): a customer-hosted HTTPS endpoint plus a JSON Schema describing the request payload.
    - `id` string, required — The unique identifier for the integration.
    - `type` 'AGENT', required — Discriminator identifying an agent integration.
    - `name` string, required — The integration name. Unique per (account, type).
    - `description` string, nullable — Optional human-readable description of the integration.
    - `scopings` IntegrationScoping[], required — Visibility scoping rules. Account-wide when empty.
      - `organization_id` string, nullable — Organization identifier (base64). Null means account-wide.
      - `space_id` string, nullable — Space identifier (base64). Null means organization-wide (or account-wide when organization_id is also null).
    - `created_at` string, date-time, required — When the integration was created.
    - `updated_at` string, date-time, required — When the integration was last updated.
    - `created_by_user_id` string, nullable, required — Unique identifier of the user who created the integration. Null if that user has since been deleted.
    - `config` AgentConfig, required — Configuration for `type: AGENT` integrations: a customer-hosted HTTPS endpoint plus a JSON Schema describing the request payload.
      - `endpoint` string, uri, required — HTTPS endpoint URL Arize calls for replay. Validated server-side for SSRF (must resolve to a public address).
      - `has_headers` boolean, required — Whether any headers are configured. Read-only — derived from `headers` on write. Header values are never returned.
      - `input_schema` object, required — JSON Schema (Draft-07) the endpoint's request body conforms to.
      - `request_presets` AgentRequestPreset[], required — Named, reusable request payloads. Replace-on-provide on PATCH. Always present; an integration with no presets returns `[]`.
        - `id` string — Server-generated, opaque preset identifier. Read-only.
        - `name` string, required — Preset name (unique within the integration). Length 1-255.
        - `description` string, nullable — Optional preset description (length 0-1024).
        - `config` object, required — Partial request body. Validated against the parent integration's `input_schema` with `required` dropped.
        - `created_at` string, date-time
        - `updated_at` string, date-time

## Other responses

- `400` — Invalid request
- `401` — Authentication is required
- `403` — Insufficient permissions to access this resource
- `404` — Not found
- `409` — Resource conflict
- `422` — Unprocessable entity
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/arize-ai/apis/arize-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-rest-api/versions/2ce448f1de13/schema)
