Integration API
The Integration API gives external systems direct access to a table's rows without going through the CMS interface. Use it to sync data from another application, automate row updates via scripts, or connect a pipeline that populates the table on a schedule.
Each table (collection) has its own pair of API keys — a primary key and a secondary key — for independent management.
Navigate to Actions → Plugins → Dynamic Table → Tables, open the table, and go to the Integration tab to find the API keys and endpoint documentation.
Authentication
All Integration API requests must include the API key in the request header:
X-Secret-Key: <primary-or-secondary-key>
The primary and secondary keys are interchangeable. Use one for your main integration and keep the other as a backup for key rotation.
API keys are scoped to a single table. A key for one table cannot be used to access another.
Base URL
All Integration API endpoints follow this structure:
{plugin-host}/api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}
The agentId, configurationId, and collectionId values are shown in the Integration tab for your table.
Endpoints
Get All Rows
Retrieve a paginated list of rows from the table.
GET /api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}
Query parameters:
| Parameter | Type | Description |
|---|---|---|
skip | integer | Number of rows to skip (for pagination). Default: 0. |
take | integer | Number of rows to return per page. Default: 20. |
sortColumn | string | Column name to sort by. |
sortDirection | string | asc or desc. |
searchTerm | string | Text to filter rows by. |
searchColumn | string | Column to apply the search term against. |
Response: Array of row objects, each containing the row id, rowNumber, and a data dictionary with column name–value pairs.
Get a Single Row
Retrieve one row by its row ID.
GET /api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}/{rowId}
Response: A single row object with id, rowNumber, and data.
Bulk Insert Rows
Insert multiple new rows in a single request.
POST /api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}/bulk
Request body:
{
"rows": [
{ "column_name_1": "value", "column_name_2": 123 },
{ "column_name_1": "another value", "column_name_2": 456 }
]
}
Each row in the array is a dictionary of column names to values. Column names must match the internal column names (snake_case) defined in the table schema.
Validation rules:
- Required columns must have values.
- Primary key values must be unique within the request and not already exist in the table.
- Values must match their column's type.
Response: The list of created rows with their assigned id and rowNumber.
Bulk Update Rows
Update multiple rows in a single request by row ID.
PUT /api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}/bulk
Request body:
{
"rows": [
{ "id": "row-uuid-1", "data": { "status": "active", "score": 99 } },
{ "id": "row-uuid-2", "data": { "status": "inactive" } }
]
}
Only the columns provided in data are updated. Columns not included in the payload retain their current values.
Response: The list of updated rows.
Bulk Delete Rows
Delete multiple rows in a single request by row ID.
DELETE /api/dynamic-table/integration/{agentId}/{configurationId}/{collectionId}/bulk
Request body:
{
"rowIds": ["row-uuid-1", "row-uuid-2", "row-uuid-3"]
}
Response: HTTP 204 No Content on success.
Rotating API Keys
If an API key is compromised or you need to revoke access for a specific integration, rotate the key:
- Open the table's Integration tab.
- Click Refresh Primary Key or Refresh Secondary Key.
- Confirm the rotation.
The old key is immediately invalidated. Update your integration to use the new key before rotating.
Rotating the secondary key while the primary key is in active use (or vice versa) lets you rotate without any downtime.
Example: Bulk Insert with curl
curl -X POST "https://your-plugin-host/api/dynamic-table/integration/agent-123/config-456/collection-789/bulk" \
-H "X-Secret-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"rows": [
{ "product_name": "Laptop Pro 14", "category": "Electronics", "price": 4500, "in_stock": true },
{ "product_name": "Wireless Mouse", "category": "Accessories", "price": 89, "in_stock": true }
]
}'
Notes
- Rows inserted or updated via the Integration API are embedded and indexed automatically. There is no need to trigger regeneration for individual row operations.
- The Integration API enforces the same schema validation as the CMS interface. Type mismatches and missing required fields will return a
400 Bad Requestwith details. - The Integration API does not require a plugin token (JWT). It uses the collection-scoped API key only.
Related Pages
- Manage Data — manually add and edit rows from the CMS.
- Import and Export Data — bulk load rows from files.
- Create a Table — view column names used in API payloads.
- Dynamic Table Overview