Skip to content

Back to API List

External Model Connection APIs

Use the Connections API to programmatically manage external model connections for OpenAI, Azure OpenAI, Anthropic, custom API providers, and other integrations.

Prerequisites

Before using these APIs, ensure your API App has the following scopes enabled:

  • View Connections – Required for viewing connection details
  • Manage Connections – Required for creating and updating connections

Base URL

https://{host}/api/public

Common Request Headers

Header Required Description
x-api-key Yes API key for authentication
Content-Type Yes application/json

API List

API Description Method Endpoint
List All Connections Retrieves all configured connections GET /connections
Get Connection by ID Retrieves a specific connection GET /connections/{connectionId}
Create Connection Creates a new connection POST /connections
Update Connection Updates an existing connection PATCH /connections/{connectionId}

List All Connections

Retrieves a list of all configured connections with optional filtering.

Method Endpoint
GET https://{{host}}/api/public/connections

Query Parameters

Parameter Required Type Description
provider No String Filter by provider. Accepted values: Open AI, Anthropic, Azure Open AI, API
status No String Filter by status. Accepted values: ACTIVE, INACTIVE
limit No Integer Maximum number of results to return

Sample Request

curl --location 'https://{{host}}/api/public/connections?limit=10' \
--header 'x-api-key: {{apiKey}}` \
--header 'Content-Type: application/json'

Sample Response

{

  "connections": [
    {
      "connectionId": "cn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "connectionName": "OpenAI GPT-4o",
      "provider": "Open AI",
      "model": "gpt-4o",
      "status": "ACTIVE",
      "createdOn": "2024-01-15T10:30:00.000Z",
      "modifiedOn": "2024-01-15T10:30:00.000Z"
    }
  ],
  "total": 1
}

Get Connection by ID

Retrieves the details of a specific connection using its unique identifier.

Method Endpoint
GET https://{{host}}/api/public/connections/{connectionId}

Path Parameters

Parameter Required Type Description
connectionId Yes String The unique identifier of the connection

Sample Request

curl --location 'https://{{host}}/api/public/connections/{{connectionId}}` \
--header 'x-api-key: {{apiKey}}' \
--header 'Content-Type: application/json'

Sample Response

{
  "connectionId": "cn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "connectionName": "OpenAI GPT-4o",
  "provider": "Open AI",
  "model": "gpt-4o",
  "status": "ACTIVE",
  "fields": {
    "API_KEY": "sk-***************"
  },
  "createdOn": "2024-01-15T10:30:00.000Z",
  "modifiedOn": "2024-01-15T10:30:00.000Z"
}

Create Connection

Creates a new connection to an external model provider. Supports creation of Custom API, OpenAI, Azure OpenAI, Anthropic, and other external model connections.

Method Endpoint
POST https://{{host}}/api/public/connections

Body Parameters

Parameter Required Type Description
provider Yes String The provider type. Accepted values: API, Open AI, Azure Open AI, or Anthropic
connectionName Yes String Display name for the connection
model Conditional String Model identifier. Required for Open AI, Azure Open AI, and Anthropic providers
modelType Conditional String Set to EASY_INTEGRATION for Azure Open AI and Anthropic providers
fields Yes Object Provider-specific configuration fields

Sample Request – Custom API Connection - Default Provider

curl --location '{{BASE_URL}}/api/public/connections' \
--header 'x-api-key: {{API_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
  "model": "CustomProvider",
  "provider": "API",
  "connectionName": "CustomProvider",
  "promptVars": [
    {
      "name": "prompt",
      "displayName": "Prompt",
      "status": true,
      "dataType": "String",
      "elementType": "textBox",
      "defaultValue": "hlo",
      "required": true
    },
    {
      "name": "system_prompt",
      "displayName": "System prompt",
      "status": false,
      "dataType": "String",
      "elementType": "textBox",
      "defaultValue": "",
      "required": false
    },
    {
      "name": "examples",
      "displayName": "Examples",
      "status": false,
      "dataType": "String",
      "elementType": "textBox",
      "examples": true,
      "defaultValue": "",
      "required": false
    }
  ],
  "customVars": [],
  "endpointUrl": "{{LLM_API_URL}}",
  "headers": [
    {
      "key": "x-api-key",
      "value": "{{LLM_API_KEY}}"
    }
  ],
  "payload": {
    "model": "{{MODEL_NAME}}",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "What is the weather like in San Francisco?"
      }
    ]
  },
  "outputPath": "content[0].text",
  "inputTokensPath": "usage.input_tokens",
  "outputTokensPath": "usage.output_tokens",
  "status": "FINALIZED",
  "isEnable": true
}'

Custom API Fields (provider: "API")

Field Required Type Description
fields.BASE_URL Yes String Base URL of the API endpoint
fields.API_KEY Yes String API key for authentication
fields.MODEL_NAME Yes String Model name
LLM_API_URL Yes String URL for the model endpoint
LLM_API_KEY Yes String API key of the model

Sample Request – Custom API Connection - Existing Provider

curl --location '{{BASE_URL}}/api/public/connections' \
--header 'x-api-key: {{API_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
  "model": "{{MODEL_NAME}}",
  "provider": "API",
  "connectionName": "Custom_Existingnew",
  "endpointUrl": "{{LLM_API_URL}}",
  "headers": [
    {
      "key": "x-api-key",
      "value": "{{LLM_API_KEY}}"
    }
  ],
  "status": "FINALIZED",
  "isEnable": true,
  "idp": "none",
  "bodyTab": "providerReferences",
  "mapProvider": "anthropicModel",
  "llmFeatures": {
    "toolCalling": false,
    "supportTools": true,
    "parallelToolCalling": true,
    "structuredResponse": true,
    "dataGeneration": false,
    "streaming": true
  },
  "IOMappings": [
    "textToText",
    "textToImage"
  ]
}'

Custom API Fields (provider: "API")

Field Required Type Description
fields.BASE_URL Yes String Base URL of the API endpoint
fields.API_KEY Yes String API key for authentication
fields.MODEL_NAME Yes String Model name
LLM_API_URL Yes String URL for the model endpoint
LLM_API_KEY Yes String API key of the model
fields.IOMapping Yes String Supported values: "textToText", "textToImage", "imageToText", and "audioToText"
fields.mapProvider Yes String Supported values: "anthropicModel", "geminiModel", and "openAIModel"

Sample Request – OpenAI Connection

curl --location 'https://{{host}}/api/public/connections' \
--header 'x-api-key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--data '{
  "provider": "Open AI",
  "connectionName": "OpenAI GPT-4o",
  "model": "gpt-4o",
  "fields": {
    "API_KEY": "sk-***************"
  }
}'

OpenAI Field (provider: "Open AI")

Field Required Type Description
fields.API_KEY Yes String Your OpenAI API key

Sample Request – Azure OpenAI Connection

curl --location 'https://{{host}}/api/public/connections' \
--header 'x-api-key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--data '{
  "connectionName": "Azure GPT-4",
  "provider": "Azure Open AI",
  "model": "GPT-4",
  "fields": {
    "API_KEY": "***************",
    "api_version": "2024-08-01-preview",
    "your_resource_name": "your-azure-resource",
    "deployment_id": "your-deployment-id"
  },
  "modelType": "EASY_INTEGRATION"
}'

Azure OpenAI Fields (provider: "Azure Open AI")

Field Required Type Description
fields.API_KEY Yes String Your Azure OpenAI API key
fields.api_version Yes String API version (for example, 2024-08-01-preview)
fields.your_resource_name Yes String Your Azure resource name
fields.deployment_id Yes String Your deployment ID

Sample Request – Anthropic Connection

curl --location 'https://{{host}}/api/public/connections' \
--header 'x-api-key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--data '{
  "connectionName": "Anthropic Claude",
  "provider": "Anthropic",
  "model": "claude-3-5-haiku-20241022",
  "fields": {
    "API_KEY": "***************"
  },
  "modelType": "EASY_INTEGRATION"
}'

Anthropic Field (provider: "Anthropic")

Field Required Type Description
fields.API_KEY Yes String Your Anthropic API key

Sample Response

{
  "connectionId": "cn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"fields": {
       "API_KEY": "sk***************MQAA"
   },
  "connectionName": "OpenAI GPT-4o",
  "provider": "Open AI",
  "model": "gpt-4o",
  "status": "ACTIVE",
  "createdOn": "2024-01-15T10:30:00.000Z"
}

Update Connection

Updates the configuration of an existing connection. Supported only for external provider connections where provider is not API.

Method Endpoint
PATCH https://{{host}}/api/public/connections/{connectionId}

Path Parameters

Parameter Required Type Description
connectionId Yes String The unique identifier of the connection

Sample Request

curl --location --request PATCH 'https://{{host}}/api/public/connections/{{connectionId}}' \
--header 'x-api-key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--data '{
  "fields": {
    "API_KEY": "sk-***************************"
  }
}'

Body Parameters

Parameter Required Type Description
fields Yes Object Updated configuration field, API_KEY

Sample Response

{
  "connectionId": "cn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"fields": {
       "API_KEY": "sk*****************MQAA"
   },
  "connectionName": "OpenAI GPT-4o",
  "provider": "Open AI",
  "model": "gpt-4o",
  "status": "ACTIVE",
  "modifiedOn": "2024-01-16T14:45:00.000Z"
}

Custom API Connection

Custom API connections let you integrate external models by configuring your own API endpoint. You control the endpoint URL, authentication, request payload, and response mappings. This functionality applies only when the provider type is set to API.

Connection Types

Custom API connections come in two types:

Default Provider

  • You define the complete request structure from scratch.
  • Full control over payload format, variable placeholders, and response parsing.
  • Use when integrating with a custom or proprietary API that doesn't follow standard LLM provider formats.

Existing Provider

  • Uses an existing provider's request/response format such as OpenAI, Anthropic, Cohere, or Gemini.
  • You only specify the endpoint and which provider format to use.
  • Use when integrating with OpenAI-compatible APIs (like Groq, Together AI) or other providers that follow standard formats.

Endpoint

Method Endpoint Update Type Description
PATCH https://{{host}}/api/public/connections/{connectionId} Partial Modifies only specified fields; preserves everything else.
PUT https://{{host}}/api/public/connections/{connectionId} Full Replaces the entire config. Requires all mandatory fields.

Path Parameters

Parameter Required Type Description
connectionId Yes String The unique identifier of the Custom API connection

Partial Update (PATCH)

Use PATCH for quick changes, such as rotating an API key or updating a model name, without sending the entire configuration object. Only the fields you include in the request will be updated.

Sample Request: Default Provider (Updating Endpoint and Headers)

This example shows how to update connections where you define the complete request structure.

curl --request PATCH 'https://{{host}}/api/public/connections/{connectionId}' \
  --header 'x-api-key: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "connectionName": "Updated Custom Provider",
    "endpointUrl": "https://api.example.com/v2",
    "headers": [{"key": "x-api-key", "value": "new-key-123"}],
    "outputPath": "result.text"
  }'

Body Parameters

Parameter Type Description
connectionName String Display name for the connection
model String Model identifier
endpointUrl String API endpoint URL
headers Array HTTP headers to include in requests
status String Connection status: DRAFT or FINALIZED

API Fields

Field Type Description
promptVars array Variable definitions for prompts
customVars array Custom variable definitions
payload object Request body template with variable placeholders
outputPath string JSONPath to extract response text
inputTokensPath string JSONPath to extract input token count
outputTokensPath string JSONPath to extract output token count

Sample Request: Existing Provider (Updating Features)

This example shows how to update connections that use standard provider formats (OpenAI, Anthropic, etc.).

curl --request PATCH 'https://{{host}}/api/public/connections/{connectionId}' \
  --header 'x-api-key: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "connectionName": "Groq LLaMA Updated",
    "model": "llama3-8b-8192",
    "llmFeatures": {
      "toolCalling": true,
      "streaming": true,
      "supportTools": true,
      "parallelToolCalling": false,
      "structuredResponse": false,
      "dataGeneration": false
    }
  }'

Body Parameters

Parameter Type Description
connectionName String Display name for the connection
model String Model identifier
endpointUrl String API endpoint URL
headers Array HTTP headers to include in requests
status String Connection status: DRAFT or FINALIZED

API Fields

Field Type Description
mapProvider String Tells the system which template to use: openAIModel or anthropicModel.
llmFeatures Object A set of boolean flags (e.g., streaming: true, toolCalling: true).
IOMappings Array List of supported modalities (e.g., ["textToText", "imageToText"]).
idp string Identity provider setting; usually set to "none".

Full Replace (PUT)

Use PUT when you need to completely reconfigure a connection or when moving a connection status from DRAFT to FINALIZED. You must provide all mandatory fields for the connection type.

Sample Request: Default Provider (Full Payload)

This example shows how to use PUT for a Default Provider connection. You must include the complete configuration, including all prompt variables, payload structure, and output paths.

curl --request PUT 'https://{{host}}/api/public/connections/{connectionId}' \
  --header 'x-api-key: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "CustomProvider-v2",
    "connectionName": "Fully Updated Custom Provider",
    "endpointUrl": "https://api.newprovider.com/v1/completions",
    "headers": [
      {"key": "Authorization", "value": "Bearer new-secret-key"},
      {"key": "Content-Type", "value": "application/json"}
    ],
    "promptVars": [
      {"name": "prompt", "displayName": "Prompt", "status": true, "dataType": "String", "elementType": "textBox", "defaultValue": "", "required": true},
      {"name": "system_prompt", "displayName": "System Prompt", "status": true, "dataType": "String", "elementType": "textBox", "defaultValue": "You are a helpful assistant", "required": false},
      {"name": "examples", "displayName": "Examples", "status": false, "dataType": "String", "elementType": "textBox", "examples": true, "defaultValue": "", "required": false}
    ],
    "customVars": [],
    "payload": {
      "model": "gpt-4-turbo",
      "max_tokens": 4096,
      "temperature": 0.8,
      "messages": [
        {"role": "system", "content": "{{system_prompt}}"},
        {"role": "user", "content": "{{prompt}}"}
      ]
    },
    "outputPath": "choices[0].message.content",
    "inputTokensPath": "usage.prompt_tokens",
    "outputTokensPath": "usage.completion_tokens",
    "status": "FINALIZED"
  }'

Body Parameters

Parameter Type Description
connectionName String Display name for the connection
model String Model identifier
endpointUrl String API endpoint URL
headers Array HTTP headers to include in requests
status String Connection status: DRAFT or FINALIZED

API Fields

Field Type Description
promptVars array Variable definitions for prompts
customVars array Custom variable definitions
payload object Request body template with variable placeholders
outputPath string JSONPath to extract response text
inputTokensPath string JSONPath to extract input token count
outputTokensPath string JSONPath to extract output token count

Sample Request: Existing Provider (Full Payload)

This example shows how to use PUT for an Existing Provider connection. You must specify the provider format to use and the LLM capabilities.

curl --request PUT 'https://{{host}}/api/public/connections/{connectionId}' \
  --header 'x-api-key: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "llama3-70b-8192-updated",
    "connectionName": "Groq LLaMA Full Update",
    "endpointUrl": "https://api.groq.com/openai/v1/chat/completions",
    "headers": [
      {"key": "Authorization", "value": "Bearer gsk_newkey12345"},
      {"key": "Content-Type", "value": "application/json"}
    ],
    "mapProvider": "openAIModel",
    "llmFeatures": {
      "toolCalling": true,
      "supportTools": true,
      "parallelToolCalling": true,
      "structuredResponse": true,
      "dataGeneration": false,
      "streaming": true
    },
    "IOMappings": ["textToText", "imageToText"],
    "status": "FINALIZED",
    "idp": "none"
  }'

Body Parameters

Parameter Type Description
connectionName String Display name for the connection
model String Model identifier
endpointUrl String API endpoint URL
headers Array HTTP headers to include in requests
status String Connection status: DRAFT or FINALIZED

API Fields

Field Type Description
mapProvider String Tells the system which template to use: openAIModel or anthropicModel.
llmFeatures Object A set of boolean flags (for example: streaming: true, toolCalling: true).
IOMappings Array List of supported modalities (for example: ["textToText", "imageToText"]).
idp string Identity provider setting; usually set to "none".