Skip to main content

Save All Integrations

Endpoint: POST /api/integrations

Creates or updates one or more integrations in bulk. Each integration in the array is upserted along with its associated models or APIs. If an integration already exists, its type cannot be changed.

Password-type configuration values (such as api_key and password) are automatically stored as secrets.

Request body

Format the request body as an array of integration objects:

ParameterDescriptionTypeRequired/ Optional
nameThe unique name for the integration provider. Cannot be changed after creation.stringRequired.
typeThe integration type. Cannot be changed after creation. Supported values:
  • ollama
  • azure_openai
  • openai
  • perplexity
  • grok
  • cohere
  • mistral
  • anthropic
  • vertex_ai
  • vertex_ai_gemini
  • huggingface
  • aws_bedrock_anthropic
  • aws_bedrock_cohere
  • aws_bedrock_titan
  • pineconedb
  • weaviatedb
  • pgvectordb
  • mongovectordb
  • amqp
  • kafka
  • nats
  • aws_sqs
  • azure_service_bus
  • gcp_pubsub
  • ibm_mq
  • aws
  • gcp
  • relational_db
  • sendgrid
  • git
stringRequired.
categoryThe category of the integration. Supported values:stringOptional.
descriptionA description for the integration.stringOptional.
enabledWhether the integration is active and available for use.booleanOptional.
configurationA key-value map of provider-specific configuration, such as API keys and endpoints. Keys and required values vary by integration type. See Configuration keys by integration type.objectOptional.
tagsA list of key-value tag objects for organizing or filtering integrations. Each tag contains a key (string) and value (string).arrayOptional.
apisA list of models or APIs to associate with this integration provider. See Integration model object.arrayOptional.

Integration model object

While adding integrations for AI/LLMs, Vector databases or Relational databases, you must add the associated models, indexes, or tables, respectively. They must be formatted within the apis field as an array of the following object:

ParameterDescriptionTypeRequired/ Optional
apis.integrationNameName of the parent integration provider to which the model must be attached to. Must match the enclosing integration's name.stringRequired.
apis.apiName of the specific model or API under the provider (e.g., gpt-4o, text-embedding-3-small).stringRequired.
apis.descriptionA human-readable description of this model or API.stringRequired.
apis.enabledWhether this model/API is active and available for use.booleanOptional.

For example, if you are adding an OpenAI integration with gpt-4o as the model; format the request body as follows:

{
"name": "<YOUR-INTEGRATION-NAME>",
"type": "openai",
"category": "AI_MODEL",
"description": "<YOUR-DESCRIPTION>",
"enabled": true,
"configuration": {
"api_key": "<YOUR-API-KEY>"
},
"apis": [
{
"integrationName": "<YOUR-INTEGRATION-NAME>",
"api": "gpt-4o", // model name
"description": "GPT-4o model", // model description
"enabled": true
}
]
}

Configuration keys by integration type

The configuration object is a key-value map of provider-specific configuration, such as API keys and endpoints. Keys and required values vary by integration type.

ParameterRequired keysOptional keys
ollamaendpointheader, api_key
azure_openaiapi_key, endpoint-
openaiapi_keyendpoint,organizationId
perplexityapi_key
grokapi_key-
cohereapi_key, endpoint
mistralapi_key, endpoint
anthropicapi_key, endpointcompletionsPath, version, betaVersion
vertex_aiprojectName, environment, publisher, file
vertex_ai_geminiprojectName, environment, file
huggingfaceapi_key, namespace
aws_bedrock_anthropicconnectionType, region
Based on the connectionType value, the following additional keys may be required:
  • ACCESS_KEY: Requires user (access key) and api_key (access secret).
  • EXTERNAL_ROLE: Requires roleArn and externalId.
  • CONDUCTOR_ROLE: No additional keys required.
awsAccountId
aws_bedrock_cohereconnectionType, region
Based on the connectionType value, the following additional keys may be required:
  • ACCESS_KEY: Requires user (access key) and api_key (access secret).
  • EXTERNAL_ROLE: Requires roleArn and externalId.
  • CONDUCTOR_ROLE: No additional keys required.
awsAccountId
aws_bedrock_titanconnectionType, region
Based on the connectionType value, the following additional keys may be required:
  • ACCESS_KEY: Requires user (access key) and api_key (access secret).
  • EXTERNAL_ROLE: Requires roleArn and externalId.
  • CONDUCTOR_ROLE: No additional keys required.
awsAccountId
pineconedbapi_key, projectName, environment
weaviatedbapi_key, endpoint
pgvectordbuser, password, datasourceURL, dimensions, distance_metric, indexing_methodinverted_list_count
mongovectordbendpoint, namespace, dimensions, distance_metricinverted_list_count
amqpprotocol, user, password, endpoint, port, namespace
kafkaendpoint, connectionType, protocolgroupId
natsendpoint, connectionType, authenticationType, protocol, tls
aws_sqsconnectionType, region
Based on the connectionType value, the following additional keys may be required:
  • ACCESS_KEY: Requires user (access key) and api_key (access secret).
  • EXTERNAL_ROLE: Requires roleArn and externalId.
  • CONDUCTOR_ROLE: No additional keys required.
awsAccountId
azure_service_busconnectionTypeendpoint, namespace
gcp_pubsubprojectName, location, file
ibm_mqendpoint, port, queueManager, channel, protocol, pubSubMethod, authenticationType, tls
awsconnectionType, region
Based on the connectionType value, the following additional keys may be required:
  • ACCESS_KEY: Requires user (access key) and api_key (access secret).
  • EXTERNAL_ROLE: Requires roleArn and externalId.
  • CONDUCTOR_ROLE: No additional keys required.
awsAccountId
gcpprojectName, environment, file
relational_dbjdbcDriver, user, password, datasourceURL
sendgridapi_key
gituser, api_key

For example, if you are adding an Anthropic Claude integration, the configuration looks like this:

{
"name": "<YOUR-INTEGRATION-NAME>",
"type": "anthropic",
"category": "AI_MODEL",
"description": "<YOUR-DESCRIPTION>",
"enabled": true,
"configuration": {
"api_key": "<YOUR-API-KEY>",
"endpoint": "https://api.anthropic.com/v1"
},
"apis": [
{
"integrationName": "<YOUR-INTEGRATION-NAME>",
"api": "claude-sonnet-4-6", // model name
"description": "claude-sonnet-4-6 model", // model description
"enabled": true
}
]
}

Response

StatusDescription
200 OKIndicates that the integration is saved successfully.
400 Bad RequestReturns for an invalid input. For example, attempting to change the type of an existing integration.
401 UnauthorizedIndicates that the request is not authenticated.
403 ForbiddenIndicates that the authenticated user does not have permission to update one or more integrations.

Examples

Save all integrations

Request

curl -X 'POST' \
'https://<YOUR-SERVER-URL>/api/integrations/' \
-H 'accept: */*' \
-H 'X-Authorization: <TOKEN>' \
-H 'Content-Type: application/json' \
-d '[
{
"name": "open-ai-test",
"type": "openai",
"category": "AI_MODEL",
"description": "OpenAI integration for LLM tasks",
"enabled": true,
"configuration": {
"api_key": "sk-..."
},
"apis": [
{
"integrationName": "open-ai-test",
"api": "gpt-4o",
"description": "GPT-4o model",
"enabled": true
}
]
},
{
"name": "sendgrid-test",
"type": "sendgrid",
"category": "EMAIL",
"description": "SendGrid integration for email tasks",
"enabled": true,
"configuration": {
"api_key": "SG...."
},
"apis": []
}
]'

Response

Returns 200 OK, indicating that the integrations have been saved successfully.