Skip to content

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

MethodPathDescriptionAuth
GET/connectorsList connector definitionsJWT
GET/connectors/:keyGet a connector definitionJWT
POST/connectors/definitionsCreate a custom definitionJWT
DELETE/connectors/definitions/:keyDelete a custom definitionJWT

GET /connectors

List all available connector definitions. Built-in and custom definitions are returned together, with sensitive connector configuration omitted.

Request

Query Parameters

ParameterTypeRequiredDescription
categorystringNoFilter by category: communication, productivity, database, developer, design, mcp, custom
isActivebooleanNoFilter by active status
localestringNoReturn translated displayName and description for this locale (e.g. tr)

Response

Response Example

json
{
  "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

FieldTypeDescription
keystringUnique connector identifier
displayNamestringHuman-readable name
descriptionstringShort description
categorystringOne of: communication, productivity, database, developer, design, mcp, custom
authTypestringAuthentication method: none, api_key, oauth2, basic_auth, bearer_token, custom
configSchemaobjectJSON Schema for instance-level configuration
isSystembooleantrue for built-in Chainabit connectors
isActivebooleanWhether the connector is available for use
versionstringConnector definition version
supportedFeaturesstring[]Advertised capabilities such as tool_discovery or health_check
subTypestring | nullConnector subtype, when present

Code Examples

bash
curl https://api.chainabit.com/api/v1/connectors \
  -H "Authorization: Bearer $TOKEN"
bash
curl "https://api.chainabit.com/api/v1/connectors?category=communication&isActive=true" \
  -H "Authorization: Bearer $TOKEN"
javascript
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();
python
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

ParameterTypeDescription
keystringConnector key (e.g. slack, gmail, sql-database)

Response

Response Example

json
{
  "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

bash
curl https://api.chainabit.com/api/v1/connectors/slack \
  -H "Authorization: Bearer $TOKEN"
javascript
const response = await fetch(`${BASE_URL}/connectors/slack`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await response.json();
python
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

FieldTypeRequiredDescription
keystringYesUnique identifier for the connector (e.g. my-crm). Must be unique within your account.
displayNamestringYesHuman-readable name
descriptionstringNoShort description of what the connector does
iconUrlstringNoURL to the connector's icon image
authTypestringYesAuthentication method: none, api_key, oauth2, basic_auth, bearer_token, custom
authConfigobjectNoAuth provider configuration — for oauth2: client_id, token_url, authorization_url, scopes
configSchemaobjectNoJSON Schema for instance-level configuration fields

Response

Response Example

json
{
  "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

bash
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"]
    }
  }'
javascript
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();
python
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

ParameterTypeDescription
keystringThe custom connector key to delete

Response

Response Example

json
{
  "data": {
    "deleted": true
  }
}

Code Examples

bash
curl -X DELETE https://api.chainabit.com/api/v1/connectors/definitions/my-crm \
  -H "Authorization: Bearer $TOKEN"
javascript
const response = await fetch(`${BASE_URL}/connectors/definitions/my-crm`, {
  method: "DELETE",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await response.json();
python
response = requests.delete(
    f"{BASE_URL}/connectors/definitions/my-crm",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]

Built-in Connectors

KeyDisplay NameCategoryAuth Type
slackSlackcommunicationoauth2
gmailGmailcommunicationoauth2
google-driveGoogle Driveproductivityoauth2
google-calendarGoogle Calendarproductivityoauth2
notionNotionproductivityoauth2
canvaCanvadesignoauth2
sql-databaseSQL Databasedatabaseconnection_string
mcp-genericMCP Servermcpapi_key / bearer_token

See the Connector Guides for step-by-step setup instructions for each built-in connector.

Built with purpose.