curl --request PATCH \
--url https://api.arize.com/v2/ai-integrations/{integration_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Updated OpenAI Integration",
"api_key": null,
"model_names": [
"gpt-4o",
"gpt-4o-mini"
]
}
'import requests
url = "https://api.arize.com/v2/ai-integrations/{integration_id}"
payload = {
"name": "Updated OpenAI Integration",
"api_key": None,
"model_names": ["gpt-4o", "gpt-4o-mini"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Updated OpenAI Integration',
api_key: null,
model_names: ['gpt-4o', 'gpt-4o-mini']
})
};
fetch('https://api.arize.com/v2/ai-integrations/{integration_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arize.com/v2/ai-integrations/{integration_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated OpenAI Integration',
'api_key' => null,
'model_names' => [
'gpt-4o',
'gpt-4o-mini'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/ai-integrations/{integration_id}"
payload := strings.NewReader("{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.arize.com/v2/ai-integrations/{integration_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/ai-integrations/{integration_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "TGxtSW50ZWdyYXRpb246MTI6YUJjRA==",
"name": "My OpenAI Integration",
"provider": "OPEN_AI",
"has_api_key": true,
"model_names": [
"gpt-4",
"gpt-4o"
],
"enable_default_models": true,
"function_calling_enabled": true,
"auth_type": "DEFAULT",
"scopings": [
{}
],
"created_at": "2026-02-13T21:27:19.055Z",
"updated_at": "2026-02-13T21:27:19.279Z",
"created_by_user_id": "VXNlcjoxOm5OYkM="
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Update an AI integration
Update an AI integration’s configuration. At least one field must be provided. Omitted fields are left unchanged.
Payload Requirements
- At least one of the updatable fields must be provided.
name, if provided, must be unique within the account.api_keycan be set tonullto remove the existing key, or omitted to keep it unchanged.scopings, if provided, replaces all existing scoping rules.provider_metadata, if provided, replaces existing metadata. Set tonullto remove.
Valid example
{
"name": "Updated Integration",
"model_names": ["gpt-4o", "gpt-4o-mini"]
}
Invalid example (empty body)
{}
curl --request PATCH \
--url https://api.arize.com/v2/ai-integrations/{integration_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Updated OpenAI Integration",
"api_key": null,
"model_names": [
"gpt-4o",
"gpt-4o-mini"
]
}
'import requests
url = "https://api.arize.com/v2/ai-integrations/{integration_id}"
payload = {
"name": "Updated OpenAI Integration",
"api_key": None,
"model_names": ["gpt-4o", "gpt-4o-mini"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Updated OpenAI Integration',
api_key: null,
model_names: ['gpt-4o', 'gpt-4o-mini']
})
};
fetch('https://api.arize.com/v2/ai-integrations/{integration_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arize.com/v2/ai-integrations/{integration_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated OpenAI Integration',
'api_key' => null,
'model_names' => [
'gpt-4o',
'gpt-4o-mini'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/ai-integrations/{integration_id}"
payload := strings.NewReader("{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.arize.com/v2/ai-integrations/{integration_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/ai-integrations/{integration_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated OpenAI Integration\",\n \"api_key\": null,\n \"model_names\": [\n \"gpt-4o\",\n \"gpt-4o-mini\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "TGxtSW50ZWdyYXRpb246MTI6YUJjRA==",
"name": "My OpenAI Integration",
"provider": "OPEN_AI",
"has_api_key": true,
"model_names": [
"gpt-4",
"gpt-4o"
],
"enable_default_models": true,
"function_calling_enabled": true,
"auth_type": "DEFAULT",
"scopings": [
{}
],
"created_at": "2026-02-13T21:27:19.055Z",
"updated_at": "2026-02-13T21:27:19.279Z",
"created_by_user_id": "VXNlcjoxOm5OYkM="
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Path Parameters
The unique AI integration identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Body
Body containing AI integration update parameters. At least one field must be provided.
New integration name
The AI provider for this integration
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM, NVIDIA_NIM, GEMINI, LITELLM New API key. Pass null to remove the existing key. Omit to keep unchanged.
Custom base URL. Pass null to remove.
Supported model names (replaces all)
Custom headers. Pass null to remove. The serialized header map must not exceed 8,175 bytes.
Show child attributes
Show child attributes
Enable provider's default model list
Enable function/tool calling
The authentication method for this integration. OAUTH2_CLIENT_CREDENTIALS is returned for integrations configured with OAuth 2.0 client credentials in the Arize UI. Setting it through this API is not yet supported.
DEFAULT, PROXY_WITH_HEADERS, BEARER_TOKEN, OAUTH2_CLIENT_CREDENTIALS Provider-specific configuration. For AWS_BEDROCK, must include role_arn. For VERTEX_AI, must include project_id, location, and project_access_label. Pass null to remove.
- Option 1
- Option 2
Show child attributes
Show child attributes
Visibility scoping rules (replaces all existing scopings)
Show child attributes
Show child attributes
Response
An AI integration object
An AI integration configures access to an external LLM provider (e.g. OpenAI, Azure OpenAI, AWS Bedrock, Vertex AI). Integrations can be scoped to the entire account, a specific organization, or a specific space.
The integration ID
The integration name
The AI provider for this integration
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM, NVIDIA_NIM, GEMINI, LITELLM Whether an API key is configured (the key itself is never returned)
Whether the provider's default model list is enabled
Whether function/tool calling is enabled
The authentication method for this integration. OAUTH2_CLIENT_CREDENTIALS is returned for integrations configured with OAuth 2.0 client credentials in the Arize UI. Setting it through this API is not yet supported.
DEFAULT, PROXY_WITH_HEADERS, BEARER_TOKEN, OAUTH2_CLIENT_CREDENTIALS Visibility scoping rules
Show child attributes
Show child attributes
When the integration was created
When the integration was last updated
The user ID of the user who created the integration
Custom base URL for the provider
Supported model names
Custom headers included in requests
Show child attributes
Show child attributes
Provider-specific configuration. For AWS_BEDROCK, must include role_arn. For VERTEX_AI, must include project_id, location, and project_access_label.
- Option 1
- Option 2
Show child attributes
Show child attributes
Was this page helpful?