Base & Tables API
Manage bases, tables, fields, and records. This router provides full CRUD operations for your database infrastructure.
Endpoints
/api/v1/tables/createDatabaseCreate a new database (base). Returns the created database with its ID.
Parameters
name | stringrequired | Name for the new database/base |
description | string | Optional description of the database |
icon | string | Icon name (e.g., "database", "folder") |
color | string | Hex color code (e.g., "#3B82F6") |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/createDatabase \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "example",
"description": "example",
"icon": "example"
}'/api/v1/tables/listDatabasesList all databases (bases) for the current user. Returns array with id, name, description, tables[]. Use this first to get database IDs.
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/listDatabases \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/tables/getDatabaseByIdGet a specific database with its tables
Parameters
id | stringrequired | Database ID from listDatabases |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getDatabaseById \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/updateDatabaseUpdate database properties. Only provided fields are updated.
Parameters
id | stringrequired | Database ID from listDatabases |
name | string | New name for the database |
description | string | New description |
icon | string | New icon name |
color | string | New hex color code |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateDatabase \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"name": "example",
"description": "example"
}'/api/v1/tables/deleteDatabasePermanently delete a database and all its contents
Parameters
id | stringrequired | Database ID to delete. WARNING: This permanently deletes all tables and data. |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/deleteDatabase \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/createTableCreate a new table in a database. Returns the created table.
Parameters
databaseId | stringrequired | Database ID from listDatabases where the table will be created |
name | stringrequired | Name for the new table |
description | string | Optional description of the table |
icon | string | Icon name (e.g., "table", "users") |
color | string | Hex color code (e.g., "#10B981") |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/createTable \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"databaseId": "example",
"name": "example",
"description": "example"
}'/api/v1/tables/listTablesList all tables across all databases. Returns array with id, name, databaseId. Use getTableById for full details.
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/listTables \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/tables/getViewsByTableIdGet all views for a table
Parameters
tableId | stringrequired | Table ID from listTables |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getViewsByTableId \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example"
}'/api/v1/tables/getFieldsByTableIdGet all fields/columns for a table. Returns field IDs needed for createRow data keys.
Parameters
tableId | stringrequired | Table ID from listTables |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getFieldsByTableId \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example"
}'/api/v1/tables/getTableByIdGet table with fields and views. Returns field IDs needed for row data.
Parameters
id | stringrequired | Table ID from listTables |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getTableById \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/updateTableUpdate table properties. Only provided fields are updated.
Parameters
id | stringrequired | Table ID from listTables |
name | string | New name for the table |
description | string | New description |
icon | string | New icon name |
color | string | New hex color code |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateTable \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"name": "example",
"description": "example"
}'/api/v1/tables/deleteTablePermanently delete a table and all its data
Parameters
id | stringrequired | Table ID to delete. WARNING: This permanently deletes all rows and fields. |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/deleteTable \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/createFieldCreate a new field/column in a table
Parameters
tableId | stringrequired | Table ID from listTables |
name | stringrequired | Name for the new field/column |
fieldType | stringrequired | Field type: "text", "number", "select", "multiselect", "date", "datetime", "checkbox", "url", "email", "phone", "file", "formula", "rating", "currency", "percent", "duration", "status", "button", "link", "lookup", "rollup" |
description | string | Optional description of the field |
required | boolean | Must be false or omitted. Required fields are not supported - UI creates blank rows first. |
unique | boolean | Whether values must be unique (default: false) |
defaultValue | any | Default value for new rows |
options | array | For select/multiselect: [{value: "opt1", label: "Option 1", color: "#3b82f6"}] |
statusLabels | array | For status: [{value: "todo", label: "To Do", color: "#6b7280"}] |
formulaConfig | object | For formula: {formula: "field1 + field2", resultType: "number"} |
buttonConfig | object | For button: {actionType: "flow", flowId: "xxx"} |
numberFormatConfig | object | For number: {decimalPlaces: 2, useThousandSeparator: true} |
currencyFormatConfig | object | For currency: {currencySymbol: "$", symbolPosition: "before"} |
percentFormatConfig | object | For percent: {decimalPlaces: 1} |
lookupConfig | object | For lookup: {relationshipFieldId: "xxx", sourceFieldId: "xxx"} |
rollupConfig | object | For rollup: {relationshipFieldId: "xxx", sourceFieldId: "xxx", aggregationType: "SUM"} |
linkedTableId | string | For link field: target table ID |
linkType | string | Link relationship type |
displayOrder | string | Fractional order string (e.g., "a0", "b0") |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/createField \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"name": "example",
"fieldType": "example"
}'/api/v1/tables/updateFieldUpdate field properties. Only provided fields are updated.
Parameters
id | stringrequired | Field ID from getFieldsByTableId |
name | string | New name for the field |
fieldType | string | Field type |
description | string | New description |
required | boolean | Must be false or omitted. Required fields are not supported - UI creates blank rows first. |
unique | boolean | Whether values must be unique |
defaultValue | any | Default value for new rows |
options | array | For select/multiselect: [{value: "opt1", label: "Option 1", color: "#3b82f6"}] |
statusLabels | array | For status: [{value: "todo", label: "To Do", color: "#6b7280"}] |
formulaConfig | object | For formula: {formula: "field1 + field2", resultType: "number"} |
linkedTableId | string | For link field: target table ID |
linkType | string | Link relationship type |
linkDisplayMode | string | How to display linked records |
linkDisplayFieldId | string | Which field to show from linked records |
allowMultipleLinks | boolean | Whether multiple links are allowed |
buttonConfig | object | For button: {actionType: "flow", flowId: "xxx"} |
numberFormatConfig | object | For number: {decimalPlaces: 2, useThousandSeparator: true} |
currencyFormatConfig | object | For currency: {currencySymbol: "$", symbolPosition: "before"} |
percentFormatConfig | object | For percent: {decimalPlaces: 1} |
lookupConfig | object | For lookup: {relationshipFieldId: "xxx", sourceFieldId: "xxx"} |
rollupConfig | object | For rollup: {relationshipFieldId: "xxx", sourceFieldId: "xxx", aggregationType: "SUM"} |
displayOrder | number | Display order position |
isVisible | boolean | Whether field is visible |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateField \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"name": "example",
"fieldType": "example"
}'/api/v1/tables/deleteFieldPermanently delete a field/column and all its data
Parameters
id | stringrequired | Field ID to delete. WARNING: This permanently deletes all data in this column. |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/deleteField \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/createRowCreate a new row in a table. Data keys must be field IDs, not field names.
Parameters
tableId | stringrequired | Table ID from listTables |
data | objectrequired | Object where keys are FIELD IDs from getFieldsByTableId, values are cell values. Example: {"fieldId1": "text", "fieldId2": 123} |
rowOrder | string | Fractional order string for positioning. Leave empty to append at end. |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/createRow \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"data": {},
"rowOrder": "example"
}'/api/v1/tables/getRowCountGet total row count for a table. Lightweight operation.
Parameters
tableId | stringrequired | Table ID from listTables |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getRowCount \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example"
}'/api/v1/tables/getRowsGet rows from a table with pagination. Returns row data with field IDs as keys.
Parameters
tableId | stringrequired | Table ID from listTables |
limit | number | Max rows to return (default: 100) |
offset | number | Number of rows to skip for pagination |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getRows \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"limit": 0,
"offset": 0
}'/api/v1/tables/updateRowUpdate an existing row. Merges provided data with existing data.
Parameters
id | stringrequired | Row ID from getRows |
data | objectrequired | Object with field IDs as keys and new values. Only provided fields are updated. |
metadata | object | Optional metadata to merge with existing |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateRow \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"data": {},
"metadata": {}
}'/api/v1/tables/deleteRowPermanently delete a single row
Parameters
id | stringrequired | Row ID to delete |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/deleteRow \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/bulkDeleteRowsDelete multiple rows. Params: tableId, rowIds (array of row IDs).
Parameters
tableId | stringrequired | |
rowIds | arrayrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/bulkDeleteRows \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"rowIds": {}
}'/api/v1/tables/createViewCreate a new view. Params: tableId (required), name (required), viewType (required: "grid", "kanban", "calendar", "gallery", "form"), description, filterConfig, sortConfig, groupConfig, visibleFields (array of field IDs).
Parameters
tableId | stringrequired | |
name | stringrequired | |
viewType | stringrequired | |
description | string | |
filterConfig | any | |
sortConfig | any | |
groupConfig | any | |
visibleFields | array | |
columnWidths | any | |
isDefault | boolean |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/createView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"name": "example",
"viewType": "example"
}'/api/v1/tables/updateViewUpdate view settings. Params: id (view ID), name, filterConfig, sortConfig, groupConfig, visibleFields, etc.
Parameters
id | stringrequired | |
name | string | |
description | string | |
filterConfig | any | |
sortConfig | any | |
groupConfig | any | |
visibleFields | array | |
columnWidths | any | |
isDefault | boolean | |
metadata | any |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"name": "example",
"description": "example"
}'/api/v1/tables/getViewsList all views for a table. Param "tableId". Returns array with id, name, viewType, filterConfig, sortConfig.
Parameters
tableId | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getViews \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example"
}'/api/v1/tables/reorderViewChange view position. Params: viewId, newOrderIndex (string).
Parameters
viewId | stringrequired | |
newOrderIndex | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/reorderView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"viewId": "example",
"newOrderIndex": "example"
}'/api/v1/tables/duplicateViewCopy a view. Params: id (view ID to copy), name (optional, for the copy).
Parameters
id | stringrequired | |
name | string |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/duplicateView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"name": "example"
}'/api/v1/tables/setDefaultViewSet which view opens by default. Params: id (view ID), tableId.
Parameters
id | stringrequired | |
tableId | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/setDefaultView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example",
"tableId": "example"
}'/api/v1/tables/deleteViewDelete a view. Param "id" is the view ID.
Parameters
id | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/deleteView \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"id": "example"
}'/api/v1/tables/updateFieldOrderChange field position. Params: fieldId, newOrder (fractional string).
Parameters
fieldId | stringrequired | |
newOrder | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateFieldOrder \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"fieldId": "example",
"newOrder": "example"
}'/api/v1/tables/updateTableOrderChange table position in database. Params: tableId, newOrder (string like "a0", "b0" for fractional ordering).
Parameters
tableId | stringrequired | |
newOrder | stringrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateTableOrder \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"newOrder": "example"
}'/api/v1/tables/updateFieldWidthSet column width in pixels. Params: fieldId, width (number, e.g., 200).
Parameters
fieldId | stringrequired | |
width | numberrequired |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateFieldWidth \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"fieldId": "example",
"width": 0
}'/api/v1/tables/updateRowOrderUpdate row display order for row drag-and-drop
Parameters
rowId | stringrequired | Row ID to reorder |
newOrder | stringrequired | New fractional order string |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/updateRowOrder \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"rowId": "example",
"newOrder": "example"
}'/api/v1/tables/bulkUpdateRowsUpdate multiple rows at once
Parameters
tableId | stringrequired | Table ID from listTables |
updates | arrayrequired | Array of row updates |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/bulkUpdateRows \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"updates": {}
}'/api/v1/tables/exportTableExport all table data for download
Parameters
tableId | stringrequired | Table ID to export |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/exportTable \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example"
}'/api/v1/tables/importRowsBulk import rows. Use matchFieldsByName=true (default) to use field names as keys.
Parameters
tableId | stringrequired | Table ID from listTables |
rows | arrayrequired | Array of row data. When matchFieldsByName=true, use field NAMES as keys. When false, use field IDs. |
matchFieldsByName | boolean | If true, match columns by field name. If false, use field IDs as keys (default: true) |
fieldDefinitions | array | Optional field definitions to create new fields during import |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/importRows \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"rows": {},
"matchFieldsByName": true
}'/api/v1/tables/searchRowsFull-text search across all text fields in a table. Returns matching rows with optional readable format.
Parameters
tableId | stringrequired | Table ID to search in |
query | stringrequired | Search query string |
limit | number | Max results (default: 50) |
offset | number | Skip results for pagination |
includeReadable | boolean | Include human-readable field names in output |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/searchRows \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"query": "example",
"limit": 0
}'/api/v1/tables/upsertRowCreate a row if no match found, or update existing row if match exists. Useful for sync operations.
Parameters
tableId | stringrequired | Table ID |
matchFieldId | stringrequired | Field ID to match on (must be unique or will update first match) |
matchValue | any | Value to match against |
data | objectrequired | Row data with field IDs as keys |
includeReadable | boolean | Include human-readable output |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/upsertRow \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"matchFieldId": "example",
"matchValue": {}
}'/api/v1/tables/getTableSchemaGet table structure/schema. Useful for understanding table layout before creating/updating rows.
Parameters
tableId | stringrequired | Table ID |
format | string | Output format: json (full), array (simple), markdown (documentation) |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getTableSchema \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"format": "example"
}'/api/v1/tables/duplicateTableClone a table with its structure (fields) and optionally data (rows) and views.
Parameters
tableId | stringrequired | Source table ID to duplicate |
newName | stringrequired | Name for the new table |
targetDatabaseId | string | Target database ID (defaults to same database) |
includeRows | boolean | Copy all rows from source table |
includeViews | boolean | Copy views configuration |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/duplicateTable \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"tableId": "example",
"newName": "example",
"targetDatabaseId": "example"
}'/api/v1/tables/getHelpGet help for Tables API. Call with topic to get focused guidance.
Parameters
topic | string | Topic: "overview", "fields", "rows", "views", "linked" |
Example Request
curl -X POST https://app.serenitiesai.com/api/v1/tables/getHelp \
-H "Authorization: Bearer mk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"topic": "example"
}'