Skip to main content
Integrations in NocoDB allow you to connect external services and databases to your workspace. The Integrations API provides endpoints to create, configure, and manage these connections.

List Integrations

Retrieve all integrations in a workspace.
GET /api/v2/meta/integrations
curl -X GET "https://app.nocodb.com/api/v2/meta/integrations" \
  -H "xc-auth: YOUR_API_TOKEN"
type
string
Filter by integration type:
  • database - Database integrations
  • ai - AI service integrations
  • auth - Authentication providers
  • sync - Data synchronization services
  • communication - Communication tools
  • spread-sheet - Spreadsheet services
  • project-management - Project management tools
  • crm - CRM systems
  • marketing - Marketing platforms
  • ats - Applicant tracking systems
  • development - Development tools
  • finance - Financial services
  • ticketing - Ticketing systems
  • storage - Storage services
  • others - Other integrations
includeDatabaseInfo
string
Include database configuration info (“true” or “false”)
limit
string
Number of results to return
offset
string
Number of results to skip
query
string
Search query for filtering integrations
list
array
Array of integration objects
id
string
Unique Integration ID
title
string
Integration name/title
type
string
Integration type (database, ai, auth, etc.)
sub_type
string
Integration sub-type (e.g., “mysql2”, “pg”, “openai”)
enabled
boolean
Whether the integration is enabled
is_private
boolean
Whether the integration is private to the creator
is_default
boolean
Whether this is the default integration
created_by
string
User ID of the creator
fk_workspace_id
string
Workspace ID this integration belongs to

Get Integration

Retrieve details of a specific integration.
GET /api/v2/meta/integrations/{integrationId}
curl -X GET "https://app.nocodb.com/api/v2/meta/integrations/{integrationId}" \
  -H "xc-auth: YOUR_API_TOKEN"
integrationId
string
required
Unique Integration ID
includeConfig
string
Include integration configuration (“true” or “false”). Only available if you are the creator or have appropriate permissions.
includeSources
string
Include associated data sources (“true” or “false”)

Create Integration

Create a new integration in the workspace.
POST /api/v2/meta/integrations
curl -X POST "https://app.nocodb.com/api/v2/meta/integrations" \
  -H "xc-auth: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Database Integration",
    "type": "database",
    "sub_type": "pg",
    "config": {
      "client": "pg",
      "connection": {
        "host": "localhost",
        "port": 5432,
        "user": "postgres",
        "password": "password",
        "database": "mydb"
      }
    }
  }'
title
string
required
Integration name (max 128 characters)
type
string
required
Integration type (database, ai, auth, sync, etc.)
sub_type
string
Integration sub-type specific to the type
config
object
required
Integration configuration (varies by type)
meta
object
Additional metadata for the integration
copy_from_id
string
ID of another integration to copy settings from

Database Integration Example

{
  "title": "PostgreSQL Production",
  "type": "database",
  "sub_type": "pg",
  "config": {
    "client": "pg",
    "connection": {
      "host": "db.example.com",
      "port": 5432,
      "user": "app_user",
      "password": "secure_password",
      "database": "production_db",
      "ssl": {
        "rejectUnauthorized": false
      }
    },
    "pool": {
      "min": 2,
      "max": 10
    }
  }
}

AI Integration Example

{
  "title": "OpenAI Integration",
  "type": "ai",
  "sub_type": "openai",
  "config": {
    "apiKey": "sk-...",
    "model": "gpt-4",
    "temperature": 0.7
  }
}

Update Integration

Update an existing integration.
PATCH /api/v2/meta/integrations/{integrationId}
curl -X PATCH "https://app.nocodb.com/api/v2/meta/integrations/{integrationId}" \
  -H "xc-auth: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Integration Name",
    "config": {
      "connection": {
        "host": "new-host.example.com"
      }
    }
  }'
integrationId
string
required
Unique Integration ID
title
string
Updated integration name
config
object
Updated configuration (merged with existing config)
meta
object
Updated metadata

Delete Integration

Delete an integration from the workspace.
DELETE /api/v2/meta/integrations/{integrationId}
curl -X DELETE "https://app.nocodb.com/api/v2/meta/integrations/{integrationId}" \
  -H "xc-auth: YOUR_API_TOKEN"
integrationId
string
required
Unique Integration ID
force
string
Force delete even if integration has associated sources (“true” or “false”)

Available Integrations

Get a list of all available integration types that can be configured.
GET /api/v2/integrations
curl -X GET "https://app.nocodb.com/api/v2/integrations" \
  -H "xc-auth: YOUR_API_TOKEN"

Response Example

[
  {
    "type": "database",
    "sub_type": "mysql2",
    "manifest": {
      "title": "MySQL",
      "description": "MySQL Database",
      "icon": "mysql-icon"
    }
  },
  {
    "type": "database",
    "sub_type": "pg",
    "manifest": {
      "title": "PostgreSQL",
      "description": "PostgreSQL Database",
      "icon": "postgresql-icon"
    }
  },
  {
    "type": "ai",
    "sub_type": "openai",
    "manifest": {
      "title": "OpenAI",
      "description": "OpenAI API Integration",
      "icon": "openai-icon"
    }
  }
]

Get Integration Metadata

Get the configuration schema and metadata for a specific integration type.
GET /api/v2/integrations/{type}/{subType}
curl -X GET "https://app.nocodb.com/api/v2/integrations/database/pg" \
  -H "xc-auth: YOUR_API_TOKEN"
type
string
required
Integration type
subType
string
required
Integration sub-type

Response Example

{
  "integrationType": "database",
  "integrationSubType": "pg",
  "manifest": {
    "title": "PostgreSQL",
    "description": "PostgreSQL Database",
    "icon": "postgresql-icon"
  },
  "form": [
    {
      "key": "host",
      "label": "Host",
      "type": "text",
      "required": true
    },
    {
      "key": "port",
      "label": "Port",
      "type": "number",
      "default": 5432
    },
    {
      "key": "database",
      "label": "Database",
      "type": "text",
      "required": true
    }
  ]
}

Integration Store

Interact with integration-specific storage and data.
POST /api/v2/integrations/{integrationId}/store
curl -X POST "https://app.nocodb.com/api/v2/integrations/{integrationId}/store" \
  -H "xc-auth: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "op": "list",
    "limit": 10,
    "offset": 0
  }'
integrationId
string
required
Unique Integration ID
op
string
required
Operation to perform: list, get, or sum
limit
number
Number of records to return (for list operation)
offset
number
Number of records to skip (for list operation)
fields
array
Fields to sum (for sum operation)

Call Integration Endpoint

Execute integration-specific API endpoints.
POST /api/v2/integrations/{integrationId}/{endpoint}
curl -X POST "https://app.nocodb.com/api/v2/integrations/{integrationId}/execute" \
  -H "xc-auth: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "query",
    "params": {
      "sql": "SELECT * FROM users LIMIT 10"
    }
  }'
integrationId
string
required
Unique Integration ID
endpoint
string
required
Integration-specific endpoint to call
*
any
Endpoint-specific parameters

Supported Database Types

NocoDB supports the following database integrations:
  • MySQL (mysql2) - MySQL 5.7+
  • PostgreSQL (pg) - PostgreSQL 9.6+
  • SQLite (sqlite3) - SQLite 3
  • SQL Server (mssql) - SQL Server 2012+
  • Oracle (oracledb) - Oracle Database
  • Snowflake (snowflake) - Snowflake Data Cloud
  • Databricks (databricks) - Databricks SQL

Integration Security

Private Integrations

Integrations can be marked as private, making them only accessible to their creator:
{
  "title": "My Private DB",
  "type": "database",
  "sub_type": "pg",
  "is_private": true,
  "config": {...}
}

Configuration Access

Integration configurations (containing sensitive data like passwords) are:
  • Only returned when includeConfig=true is specified
  • Only accessible to the integration creator or workspace admins
  • Encrypted at rest in the database
  • Masked in API responses when displayed to non-owners

Best Practices

Connection Pooling

For database integrations, configure appropriate connection pool settings:
{
  "config": {
    "pool": {
      "min": 2,
      "max": 10,
      "acquireTimeoutMillis": 30000,
      "idleTimeoutMillis": 30000
    }
  }
}

SSL Configuration

Always use SSL for production database connections:
{
  "config": {
    "connection": {
      "ssl": {
        "rejectUnauthorized": true,
        "ca": "-----BEGIN CERTIFICATE-----\n..."
      }
    }
  }
}

Integration Naming

Use descriptive names that indicate:
  • Environment (Production, Staging, Development)
  • Purpose (Analytics DB, Customer Data, etc.)
  • Database type
Example: PostgreSQL - Production - Customer Data