Connector Definitions
Connector definitions describe the available integrations - their authentication method, category, and the tools they provide. Built-in definitions (Slack, Gmail, etc.) are managed by Chainabit. You can also create your own custom definitions.
Definition responses are public metadata only. They do not include
auth_config, client secrets, token URLs, or any other provider credentials.
Endpoints
| Method | Path | Description | Auth |
|---|---|---|---|
| GET | /connectors | List connector definitions | JWT |
| GET | /connectors/:key | Get a connector definition | JWT |
| POST | /connectors/definitions | Create a custom definition | JWT |
| DELETE | /connectors/definitions/:key | Delete a custom definition | JWT |
GET /connectors
List all available connector definitions. Built-in and custom definitions are returned together, with sensitive connector configuration omitted.
Request
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | No | Filter by category: communication, productivity, database, developer, design, mcp, custom |
isActive | boolean | No | Filter by active status |
locale | string | No | Return translated displayName and description for this locale (e.g. tr) |
Response
Response Example
{
"data": [
{
"key": "slack",
"displayName": "Slack",
"description": "Send messages, manage channels, and search your Slack workspace",
"category": "communication",
"authType": "oauth2",
"configSchema": {},
"isSystem": true,
"isActive": true,
"version": "1.0.0",
"supportedFeatures": ["tool_discovery", "health_check"],
"subType": null
},
{
"key": "gmail",
"displayName": "Gmail",
"description": "Send and read emails, manage drafts and labels",
"category": "communication",
"authType": "oauth2",
"isSystem": true,
"isActive": true,
"version": "1.0.0"
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
key | string | Unique connector identifier |
displayName | string | Human-readable name |
description | string | Short description |
category | string | One of: communication, productivity, database, developer, design, mcp, custom |
authType | string | Authentication method: none, api_key, oauth2, basic_auth, bearer_token, custom |
configSchema | object | JSON Schema for instance-level configuration |
isSystem | boolean | true for built-in Chainabit connectors |
isActive | boolean | Whether the connector is available for use |
version | string | Connector definition version |
supportedFeatures | string[] | Advertised capabilities such as tool_discovery or health_check |
subType | string | null | Connector subtype, when present |
Code Examples
curl https://api.chainabit.com/api/v1/connectors \
-H "Authorization: Bearer $TOKEN"curl "https://api.chainabit.com/api/v1/connectors?category=communication&isActive=true" \
-H "Authorization: Bearer $TOKEN"const BASE_URL = process.env.BASE_URL;
const TOKEN = process.env.TOKEN;
const response = await fetch(`${BASE_URL}/connectors?category=communication`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await response.json();import requests, os
BASE_URL = os.environ["BASE_URL"]
TOKEN = os.environ["TOKEN"]
response = requests.get(
f"{BASE_URL}/connectors",
params={"category": "communication"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]GET /connectors/:key
Get the full public metadata for a specific connector.
Request
Path Parameters
| Parameter | Type | Description |
|---|---|---|
key | string | Connector key (e.g. slack, gmail, sql-database) |
Response
Response Example
{
"data": {
"key": "slack",
"displayName": "Slack",
"description": "Send messages, manage channels, and search your Slack workspace",
"category": "communication",
"authType": "oauth2",
"configSchema": {},
"isSystem": true,
"isActive": true,
"version": "1.0.0",
"supportedFeatures": ["tool_discovery", "health_check"],
"subType": null
}
}If you need connector tools, use the instance tools endpoint for an installed connector.
Code Examples
curl https://api.chainabit.com/api/v1/connectors/slack \
-H "Authorization: Bearer $TOKEN"const response = await fetch(`${BASE_URL}/connectors/slack`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await response.json();response = requests.get(
f"{BASE_URL}/connectors/slack",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]POST /connectors/definitions
Create a custom connector definition for a service not covered by built-in connectors. Custom definitions belong to your account and are only visible within your workspaces.
Request
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Unique identifier for the connector (e.g. my-crm). Must be unique within your account. |
displayName | string | Yes | Human-readable name |
description | string | No | Short description of what the connector does |
iconUrl | string | No | URL to the connector's icon image |
authType | string | Yes | Authentication method: none, api_key, oauth2, basic_auth, bearer_token, custom |
authConfig | object | No | Auth provider configuration — for oauth2: client_id, token_url, authorization_url, scopes |
configSchema | object | No | JSON Schema for instance-level configuration fields |
Response
Response Example
{
"data": {
"key": "my-crm",
"displayName": "My CRM",
"description": "Internal CRM integration",
"category": "custom",
"authType": "api_key",
"isSystem": false,
"isActive": true,
"version": "1.0.0"
}
}Code Examples
curl -X POST https://api.chainabit.com/api/v1/connectors/definitions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "my-crm",
"displayName": "My CRM",
"description": "Internal CRM integration",
"authType": "api_key",
"configSchema": {
"type": "object",
"properties": {
"baseUrl": { "type": "string" }
},
"required": ["baseUrl"]
}
}'const response = await fetch(`${BASE_URL}/connectors/definitions`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
key: "my-crm",
displayName: "My CRM",
description: "Internal CRM integration",
authType: "api_key",
configSchema: {
type: "object",
properties: {
baseUrl: { type: "string" },
},
required: ["baseUrl"],
},
}),
});
const { data } = await response.json();response = requests.post(
f"{BASE_URL}/connectors/definitions",
headers={"Authorization": f"Bearer {TOKEN}"},
json={
"key": "my-crm",
"displayName": "My CRM",
"description": "Internal CRM integration",
"authType": "api_key",
"configSchema": {
"type": "object",
"properties": {"baseUrl": {"type": "string"}},
"required": ["baseUrl"],
},
},
)
data = response.json()["data"]DELETE /connectors/definitions/:key
Delete a custom connector definition. This also removes all instances and associated data. Built-in (isSystem: true) definitions cannot be deleted.
Only the account owner or an account admin can delete a custom definition.
Request
Path Parameters
| Parameter | Type | Description |
|---|---|---|
key | string | The custom connector key to delete |
Response
Response Example
{
"data": {
"deleted": true
}
}Code Examples
curl -X DELETE https://api.chainabit.com/api/v1/connectors/definitions/my-crm \
-H "Authorization: Bearer $TOKEN"const response = await fetch(`${BASE_URL}/connectors/definitions/my-crm`, {
method: "DELETE",
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await response.json();response = requests.delete(
f"{BASE_URL}/connectors/definitions/my-crm",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]Built-in Connectors
| Key | Display Name | Category | Auth Type |
|---|---|---|---|
slack | Slack | communication | oauth2 |
gmail | Gmail | communication | oauth2 |
google-drive | Google Drive | productivity | oauth2 |
google-calendar | Google Calendar | productivity | oauth2 |
notion | Notion | productivity | oauth2 |
canva | Canva | design | oauth2 |
sql-database | SQL Database | database | connection_string |
mcp-generic | MCP Server | mcp | api_key / bearer_token |
See the Connector Guides for step-by-step setup instructions for each built-in connector.