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,FIREWORKS,TOGETHER_AI,DEEP_SEEK,TYPE_SAFE_AI,PERPLEXITY,CLOUDFLARE.- 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. TYPE_SAFE_AI,PERPLEXITY, andCLOUDFLAREintegrations are used only by Decision Judge evaluators. They requireapi_key. Abase_url, a non-emptymodel_namesorheaders,enable_default_models: true,function_calling_enabled: true, or anauth_typeother thanDEFAULTreturns422. Creating one returns400when this deployment has not enabled the provider. That is a deployment setting, separate from the accountās Decision Judge access that the evaluator and task endpoints report as403.- For
CLOUDFLAREprovider,provider_metadatamust be{"kind": "CLOUDFLARE", "account_id": "<32-character account ID>"}.
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
Service accounts may instead present an access token issued by an external identity provider (Microsoft Entra ID) when the account admin has configured that provider. Send it in the same header: Authorization: Bearer <access-token>.
Body
Body containing AI integration creation parameters
The AI provider for this integration. TYPE_SAFE_AI, PERPLEXITY, and CLOUDFLARE integrations are used only by Decision Judge evaluators, and each is available only when that provider is enabled.
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM, NVIDIA_NIM, GEMINI, LITELLM, FIREWORKS, TOGETHER_AI, DEEP_SEEK, TYPE_SAFE_AI, PERPLEXITY, CLOUDFLARE 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 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 AI provider for this integration. TYPE_SAFE_AI, PERPLEXITY, and CLOUDFLARE integrations are used only by Decision Judge evaluators, and each is available only when that provider is enabled.
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM, NVIDIA_NIM, GEMINI, LITELLM, FIREWORKS, TOGETHER_AI, DEEP_SEEK, TYPE_SAFE_AI, PERPLEXITY, CLOUDFLARE 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 Was this page helpful?