curl --request POST \
--url https://api.arize.com/v2/ai-integrations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Production OpenAI",
"provider": "OPEN_AI",
"api_key": "sk-abc123...",
"model_names": [
"gpt-4",
"gpt-4o"
],
"enable_default_models": true,
"scopings": [
{
"organization_id": "QWNjb3VudE9yZzoxMjM6YWJj",
"space_id": null
}
]
}
'import requests
url = "https://api.arize.com/v2/ai-integrations"
payload = {
"name": "Production OpenAI",
"provider": "OPEN_AI",
"api_key": "sk-abc123...",
"model_names": ["gpt-4", "gpt-4o"],
"enable_default_models": True,
"scopings": [
{
"organization_id": "QWNjb3VudE9yZzoxMjM6YWJj",
"space_id": None
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Production OpenAI',
provider: 'OPEN_AI',
api_key: 'sk-abc123...',
model_names: ['gpt-4', 'gpt-4o'],
enable_default_models: true,
scopings: [{organization_id: 'QWNjb3VudE9yZzoxMjM6YWJj', space_id: null}]
})
};
fetch('https://api.arize.com/v2/ai-integrations', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Production OpenAI',
'provider' => 'OPEN_AI',
'api_key' => 'sk-abc123...',
'model_names' => [
'gpt-4',
'gpt-4o'
],
'enable_default_models' => true,
'scopings' => [
[
'organization_id' => 'QWNjb3VudE9yZzoxMjM6YWJj',
'space_id' => null
]
]
]),
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"
payload := strings.NewReader("{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.arize.com/v2/ai-integrations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/ai-integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\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"
}Create an AI integration
Create a new AI integration for an external LLM provider.
Payload Requirements
nameandproviderare required.- The integration name must be unique within the account.
providermust be one of:OPEN_AI,AZURE_OPEN_AI,AWS_BEDROCK,VERTEX_AI,ANTHROPIC,NVIDIA_NIM,GEMINI,CUSTOM,LITELLM.- If
scopingsis omitted, the integration defaults to account-wide visibility. enable_default_modelsdefaults tofalseif not provided.function_calling_enableddefaults totrueif not provided.auth_typedefaults toDEFAULTif not provided.- For
AWS_BEDROCKprovider,provider_metadatamust includerole_arn. - For
VERTEX_AIprovider,provider_metadatamust includeproject_id,location, andproject_access_label.
Valid example
{
"name": "Production OpenAI",
"provider": "OPEN_AI",
"api_key": "sk-abc123...",
"model_names": ["gpt-4", "gpt-4o"],
"enable_default_models": true
}
Invalid example (missing required provider)
{
"name": "My Integration"
}
curl --request POST \
--url https://api.arize.com/v2/ai-integrations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Production OpenAI",
"provider": "OPEN_AI",
"api_key": "sk-abc123...",
"model_names": [
"gpt-4",
"gpt-4o"
],
"enable_default_models": true,
"scopings": [
{
"organization_id": "QWNjb3VudE9yZzoxMjM6YWJj",
"space_id": null
}
]
}
'import requests
url = "https://api.arize.com/v2/ai-integrations"
payload = {
"name": "Production OpenAI",
"provider": "OPEN_AI",
"api_key": "sk-abc123...",
"model_names": ["gpt-4", "gpt-4o"],
"enable_default_models": True,
"scopings": [
{
"organization_id": "QWNjb3VudE9yZzoxMjM6YWJj",
"space_id": None
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Production OpenAI',
provider: 'OPEN_AI',
api_key: 'sk-abc123...',
model_names: ['gpt-4', 'gpt-4o'],
enable_default_models: true,
scopings: [{organization_id: 'QWNjb3VudE9yZzoxMjM6YWJj', space_id: null}]
})
};
fetch('https://api.arize.com/v2/ai-integrations', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Production OpenAI',
'provider' => 'OPEN_AI',
'api_key' => 'sk-abc123...',
'model_names' => [
'gpt-4',
'gpt-4o'
],
'enable_default_models' => true,
'scopings' => [
[
'organization_id' => 'QWNjb3VudE9yZzoxMjM6YWJj',
'space_id' => null
]
]
]),
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"
payload := strings.NewReader("{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.arize.com/v2/ai-integrations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/ai-integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Production OpenAI\",\n \"provider\": \"OPEN_AI\",\n \"api_key\": \"sk-abc123...\",\n \"model_names\": [\n \"gpt-4\",\n \"gpt-4o\"\n ],\n \"enable_default_models\": true,\n \"scopings\": [\n {\n \"organization_id\": \"QWNjb3VudE9yZzoxMjM6YWJj\",\n \"space_id\": null\n }\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
Body
Body containing AI integration creation parameters
Integration name
The AI provider for this integration
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM, NVIDIA_NIM, GEMINI, LITELLM API key for the provider (write-only, never returned)
Custom base URL for the provider
Supported model names
Custom headers to include in requests. The serialized header map must not exceed 8,175 bytes.
Show child attributes
Show child attributes
Enable provider's default model list (default false)
Enable function/tool calling (default true)
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 AWS Bedrock provider metadata in a write request (strict form of AwsProviderMetadata).
- Option 1
- Option 2
Show child attributes
Show child attributes
Visibility scoping rules. Defaults to account-wide.
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?