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:
| Parameter | Description | Type | Required/ Optional |
|---|---|---|---|
| name | The unique name for the integration provider. Cannot be changed after creation. | string | Required. |
| type | The integration type. Cannot be changed after creation. Supported values:
| string | Required. |
| category | The category of the integration. Supported values:
| string | Optional. |
| description | A description for the integration. | string | Optional. |
| enabled | Whether the integration is active and available for use. | boolean | Optional. |
| configuration | A 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. | object | Optional. |
| tags | A list of key-value tag objects for organizing or filtering integrations. Each tag contains a key (string) and value (string). | array | Optional. |
| apis | A list of models or APIs to associate with this integration provider. See Integration model object. | array | Optional. |
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:
| Parameter | Description | Type | Required/ Optional |
|---|---|---|---|
| apis.integrationName | Name of the parent integration provider to which the model must be attached to. Must match the enclosing integration's name. | string | Required. |
| apis.api | Name of the specific model or API under the provider (e.g., gpt-4o, text-embedding-3-small). | string | Required. |
| apis.description | A human-readable description of this model or API. | string | Required. |
| apis.enabled | Whether this model/API is active and available for use. | boolean | Optional. |
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.
| Parameter | Required keys | Optional keys |
|---|---|---|
| ollama | endpoint | header, api_key |
| azure_openai | api_key, endpoint | - |
| openai | api_key | endpoint,organizationId |
| perplexity | api_key | – |
| grok | api_key | - |
| cohere | api_key, endpoint | – |
| mistral | api_key, endpoint | – |
| anthropic | api_key, endpoint | completionsPath, version, betaVersion |
| vertex_ai | projectName, environment, publisher, file | – |
| vertex_ai_gemini | projectName, environment, file | – |
| huggingface | api_key, namespace | – |
| aws_bedrock_anthropic | connectionType, region Based on the connectionType value, the following additional keys may be required:
| awsAccountId |
| aws_bedrock_cohere | connectionType, region Based on the connectionType value, the following additional keys may be required:
| awsAccountId |
| aws_bedrock_titan | connectionType, region Based on the connectionType value, the following additional keys may be required:
| awsAccountId |
| pineconedb | api_key, projectName, environment | – |
| weaviatedb | api_key, endpoint | – |
| pgvectordb | user, password, datasourceURL, dimensions, distance_metric, indexing_method | inverted_list_count |
| mongovectordb | endpoint, namespace, dimensions, distance_metric | inverted_list_count |
| amqp | protocol, user, password, endpoint, port, namespace | – |
| kafka | endpoint, connectionType, protocol | groupId |
| nats | endpoint, connectionType, authenticationType, protocol, tls | – |
| aws_sqs | connectionType, region Based on the connectionType value, the following additional keys may be required:
| awsAccountId |
| azure_service_bus | connectionType | endpoint, namespace |
| gcp_pubsub | projectName, location, file | – |
| ibm_mq | endpoint, port, queueManager, channel, protocol, pubSubMethod, authenticationType, tls | – |
| aws | connectionType, region Based on the connectionType value, the following additional keys may be required:
| awsAccountId |
| gcp | projectName, environment, file | – |
| relational_db | jdbcDriver, user, password, datasourceURL | – |
| sendgrid | api_key | – |
| git | user, 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
| Status | Description |
|---|---|
| 200 OK | Indicates that the integration is saved successfully. |
| 400 Bad Request | Returns for an invalid input. For example, attempting to change the type of an existing integration. |
| 401 Unauthorized | Indicates that the request is not authenticated. |
| 403 Forbidden | Indicates 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.