Skip to main content
PUT
/
v2
/
integrations
/
custom
/
{name}
Create or update a named custom integration
curl --request PUT \
  --url https://api.galileo.ai/v2/integrations/custom/{name} \
  --header 'Content-Type: application/json' \
  --header 'Splunk-AO-API-Key: <api-key>' \
  --data '
{
  "endpoint": "<string>",
  "multi_modal_config": {
    "max_files": 2,
    "max_file_size_bytes": 2
  },
  "authentication_type": "oauth2",
  "models": [
    "<string>"
  ],
  "model_properties": [
    {
      "name": "<string>",
      "alias": "<string>",
      "based_on": "<string>",
      "supported_parameters": [
        "<string>"
      ]
    }
  ],
  "is_legacy_format": false,
  "default_model": "<string>",
  "authentication_scope": "<string>",
  "oauth2_token_url": "<string>",
  "api_key_header": "<string>",
  "api_key_value": "<string>",
  "custom_llm_config": {
    "file_name": "<string>",
    "class_name": "<string>",
    "init_kwargs": {}
  },
  "custom_header_mapping": {},
  "headers": {},
  "token": "<string>"
}
'
import requests

url = "https://api.galileo.ai/v2/integrations/custom/{name}"

payload = {
"endpoint": "<string>",
"multi_modal_config": {
"max_files": 2,
"max_file_size_bytes": 2
},
"authentication_type": "oauth2",
"models": ["<string>"],
"model_properties": [
{
"name": "<string>",
"alias": "<string>",
"based_on": "<string>",
"supported_parameters": ["<string>"]
}
],
"is_legacy_format": False,
"default_model": "<string>",
"authentication_scope": "<string>",
"oauth2_token_url": "<string>",
"api_key_header": "<string>",
"api_key_value": "<string>",
"custom_llm_config": {
"file_name": "<string>",
"class_name": "<string>",
"init_kwargs": {}
},
"custom_header_mapping": {},
"headers": {},
"token": "<string>"
}
headers = {
"Splunk-AO-API-Key": "<api-key>",
"Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {'Splunk-AO-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
endpoint: '<string>',
multi_modal_config: {max_files: 2, max_file_size_bytes: 2},
authentication_type: 'oauth2',
models: ['<string>'],
model_properties: [
{
name: '<string>',
alias: '<string>',
based_on: '<string>',
supported_parameters: ['<string>']
}
],
is_legacy_format: false,
default_model: '<string>',
authentication_scope: '<string>',
oauth2_token_url: '<string>',
api_key_header: '<string>',
api_key_value: '<string>',
custom_llm_config: {file_name: '<string>', class_name: '<string>', init_kwargs: {}},
custom_header_mapping: {},
headers: {},
token: '<string>'
})
};

fetch('https://api.galileo.ai/v2/integrations/custom/{name}', 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.galileo.ai/v2/integrations/custom/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'endpoint' => '<string>',
'multi_modal_config' => [
'max_files' => 2,
'max_file_size_bytes' => 2
],
'authentication_type' => 'oauth2',
'models' => [
'<string>'
],
'model_properties' => [
[
'name' => '<string>',
'alias' => '<string>',
'based_on' => '<string>',
'supported_parameters' => [
'<string>'
]
]
],
'is_legacy_format' => false,
'default_model' => '<string>',
'authentication_scope' => '<string>',
'oauth2_token_url' => '<string>',
'api_key_header' => '<string>',
'api_key_value' => '<string>',
'custom_llm_config' => [
'file_name' => '<string>',
'class_name' => '<string>',
'init_kwargs' => [

]
],
'custom_header_mapping' => [

],
'headers' => [

],
'token' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Splunk-AO-API-Key: <api-key>"
],
]);

$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.galileo.ai/v2/integrations/custom/{name}"

payload := strings.NewReader("{\n \"endpoint\": \"<string>\",\n \"multi_modal_config\": {\n \"max_files\": 2,\n \"max_file_size_bytes\": 2\n },\n \"authentication_type\": \"oauth2\",\n \"models\": [\n \"<string>\"\n ],\n \"model_properties\": [\n {\n \"name\": \"<string>\",\n \"alias\": \"<string>\",\n \"based_on\": \"<string>\",\n \"supported_parameters\": [\n \"<string>\"\n ]\n }\n ],\n \"is_legacy_format\": false,\n \"default_model\": \"<string>\",\n \"authentication_scope\": \"<string>\",\n \"oauth2_token_url\": \"<string>\",\n \"api_key_header\": \"<string>\",\n \"api_key_value\": \"<string>\",\n \"custom_llm_config\": {\n \"file_name\": \"<string>\",\n \"class_name\": \"<string>\",\n \"init_kwargs\": {}\n },\n \"custom_header_mapping\": {},\n \"headers\": {},\n \"token\": \"<string>\"\n}")

req, _ := http.NewRequest("PUT", url, payload)

req.Header.Add("Splunk-AO-API-Key", "<api-key>")
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.put("https://api.galileo.ai/v2/integrations/custom/{name}")
.header("Splunk-AO-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"endpoint\": \"<string>\",\n \"multi_modal_config\": {\n \"max_files\": 2,\n \"max_file_size_bytes\": 2\n },\n \"authentication_type\": \"oauth2\",\n \"models\": [\n \"<string>\"\n ],\n \"model_properties\": [\n {\n \"name\": \"<string>\",\n \"alias\": \"<string>\",\n \"based_on\": \"<string>\",\n \"supported_parameters\": [\n \"<string>\"\n ]\n }\n ],\n \"is_legacy_format\": false,\n \"default_model\": \"<string>\",\n \"authentication_scope\": \"<string>\",\n \"oauth2_token_url\": \"<string>\",\n \"api_key_header\": \"<string>\",\n \"api_key_value\": \"<string>\",\n \"custom_llm_config\": {\n \"file_name\": \"<string>\",\n \"class_name\": \"<string>\",\n \"init_kwargs\": {}\n },\n \"custom_header_mapping\": {},\n \"headers\": {},\n \"token\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.galileo.ai/v2/integrations/custom/{name}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Splunk-AO-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"endpoint\": \"<string>\",\n \"multi_modal_config\": {\n \"max_files\": 2,\n \"max_file_size_bytes\": 2\n },\n \"authentication_type\": \"oauth2\",\n \"models\": [\n \"<string>\"\n ],\n \"model_properties\": [\n {\n \"name\": \"<string>\",\n \"alias\": \"<string>\",\n \"based_on\": \"<string>\",\n \"supported_parameters\": [\n \"<string>\"\n ]\n }\n ],\n \"is_legacy_format\": false,\n \"default_model\": \"<string>\",\n \"authentication_scope\": \"<string>\",\n \"oauth2_token_url\": \"<string>\",\n \"api_key_header\": \"<string>\",\n \"api_key_value\": \"<string>\",\n \"custom_llm_config\": {\n \"file_name\": \"<string>\",\n \"class_name\": \"<string>\",\n \"init_kwargs\": {}\n },\n \"custom_header_mapping\": {},\n \"headers\": {},\n \"token\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": "<string>",
  "name": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "created_by": "<string>",
  "permissions": [],
  "is_selected": false,
  "is_disabled": false
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}

Authorizations

Splunk-AO-API-Key
string
header
required

Path Parameters

name
string
required

Slug identifying this named custom integration

Body

application/json

Schema for creating custom integrations.

Inherits api_key field validation from CustomConfig:

  • api_key_header and api_key_value are required when authentication_type is api_key

Token field is only used for oauth2 authentication (contains OAuth2 client credentials). For api_key auth, the api_key_value field is used instead.

endpoint
string
required

Endpoint URL for the custom integration.

multi_modal_config
MultiModalModelIntegrationConfig · object | null

Configuration for multi-modal (file upload) capabilities.

authentication_type
enum<string>
default:oauth2

Authentication types for custom integrations.

Values:

  • none: No authentication required
  • oauth2: OAuth2 token-based authentication
  • api_key: API key header-based authentication
Available options:
api_key,
none,
oauth2
models
string[] | null

List of model names for the custom integration. Deprecated: use model_properties instead.

model_properties
ModelProperties · object[] | null

List of model properties with name and alias for the custom integration.

is_legacy_format
boolean
default:false

Internal: whether this config was created from the legacy 'models' field.

default_model
string | null

Default model to use. If not provided, defaults to the first model.

authentication_scope
string | null

Optional scope for OAuth2 authentication.

oauth2_token_url
string | null

OAuth2 token URL for custom OAuth2 authentication. If not provided, defaults to the endpoint.

api_key_header
string | null

HTTP header name to use for API key authentication (e.g., 'X-API-Key', 'Authorization').

api_key_value
string | null

API key value to send in the specified header for authentication.

custom_llm_config
CustomLLMConfig · object | null

Optional configuration for a custom LiteLLM handler class. When specified, the handler's acompletion() method is used instead of the default litellm.acompletion().

custom_header_mapping
Custom Header Mapping · object | null

Custom header mapping from internal fields (job_id, user_id, project_id, run_id) to custom header names to be included in LLM requests.

headers
Headers · object | null

Optional custom HTTP headers to include in requests to the integration endpoint. Stored encrypted at rest.

token
string | null

Response

Successful Response

id
string<uuid4>
required
name
string
required
provider
enum<string>
required
Available options:
anthropic,
aws_bedrock,
aws_sagemaker,
azure,
custom,
databricks,
mistral,
nvidia,
openai,
vegas_gateway,
vertex_ai,
writer
created_at
string<date-time>
required
updated_at
string<date-time>
required
created_by
string<uuid4>
required
permissions
Permission · object[]
is_selected
boolean
default:false
is_disabled
boolean
default:false