Reference · Tools
NocoDB
Read, create, update, and delete rows in NocoDB tables with binary attachment support.
The NocoDB node performs row-level CRUD against NocoDB tables and handles binary attachments in both directions. A typical build is appending form submissions as rows with the uploaded file attached, then updating the row as each item is processed.
- Node type
- Action (binary)
- Parameters
- 18
- Outputs
- Output, Error
- Credentials
- NocoDB API
NocoDB
Read, create, update, and delete NocoDB rows with attachments
Overview
The NocoDB tool performs CRUD operations on NocoDB table rows. Supports three NocoDB API versions (v1 for pre-0.90.0, v2 for 0.90.0+, v3 for 0.200.0+). Operations include: create rows (bulk, with optional binary attachment upload), get a single row (with optional attachment download), get all rows (with pagination, filtering, sorting, and optional attachment download), update rows (bulk, with optional binary attachment upload), and delete rows (bulk). Binary attachments are uploaded to NocoDB storage and linked as field values. Attachment fields can be downloaded as binary data. Supports both API Token (xc-token) and User Token (xc-auth) authentication.
Category: Data & Storage
Tool Name: nocodb
Version: 1
Appearance: Icon: lucide-Database | Color: #36BFBF
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires NocoDB API credentials. See the Credentials Guide for setup instructions.
Operations
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a row |
| Delete | delete | Delete a row |
| Get | get | Retrieve a row |
| Get Many | getAll | Retrieve many rows |
| Update | update | Update a row |
Parameters
Create (create)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Data to Send | options | No | defineBelow | How to populate row field values. |
Options: autoMapInputData (use when node input properties match destination column names), defineBelow (set the value for each destination column manually) | ||||
| Inputs to Ignore | string | No | — | Comma-separated list of input properties to exclude when using auto-map mode. (shown when Data to Send is autoMapInputData) |
| Fields to Send | json | No | [] | JSON array of field definitions: [{ “fieldName”: “Name”, “fieldValue”: “John” }, { “fieldName”: “Photo”, “binaryData”: true, “binaryProperty”: “data” }]. Set binaryData=true to upload a binary property as an attachment. (shown when Data to Send is defineBelow) |
Delete (delete)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Row ID | string | Yes | — | The value of the row ID field. Supports expressions like {{ $json.id }}. |
| Primary Key Type | options | No | id | The primary key field to use for identifying rows. |
Options: id (default auto-increment ID added when the table was created via the UI), ncRecordId (select if the table was imported from Airtable), custom (enter a custom primary key field name) | ||||
| Custom Primary Key Field | string | No | — | Name of the custom primary key field. (shown when Primary Key Type is custom) |
Get (get)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Row ID | string | Yes | — | The value of the row ID field. Supports expressions like {{ $json.id }}. |
| Download Attachments | boolean | No | false | Whether to download attachment fields as binary data. |
| Download Fields | string | No | — | Comma-separated names of attachment fields to download. Case sensitive. (shown when Download Attachments is true) |
Get Many (getAll)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of rows to return. Accepts 1–100. (shown when Return All is false) |
| Download Attachments | boolean | No | false | Whether to download attachment fields as binary data. |
| Download Fields | string | No | — | Comma-separated names of attachment fields to download. Case sensitive. (shown when Download Attachments is true) |
| Options | collection | No | {} | Additional getAll query options. |
| — View ID | string | No | — | Filter results to a specific NocoDB view. |
| — Fields | string | No | — | Comma-separated column names to include in the response. |
| — Sort | json | No | [] | JSON array of sort rules: [{ “field”: “Name”, “direction”: “asc” }]. Direction can be “asc” or “desc”. |
| — Filter By Formula | string | No | — | NocoDB filter formula, e.g. (name,like,example%)~or(name,eq,test). |
Update (update)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Row ID | string | Yes | — | The value of the row ID field. Supports expressions like {{ $json.id }}. |
| Primary Key Type | options | No | id | The primary key field to use for identifying rows. |
Options: id (default auto-increment ID added when the table was created via the UI), ncRecordId (select if the table was imported from Airtable), custom (enter a custom primary key field name) | ||||
| Custom Primary Key Field | string | No | — | Name of the custom primary key field. (shown when Primary Key Type is custom) |
| Data to Send | options | No | defineBelow | How to populate row field values. |
Options: autoMapInputData (use when node input properties match destination column names), defineBelow (set the value for each destination column manually) | ||||
| Inputs to Ignore | string | No | — | Comma-separated list of input properties to exclude when using auto-map mode. (shown when Data to Send is autoMapInputData) |
| Fields to Send | json | No | [] | JSON array of field definitions: [{ “fieldName”: “Name”, “fieldValue”: “John” }, { “fieldName”: “Photo”, “binaryData”: true, “binaryProperty”: “data” }]. Set binaryData=true to upload a binary property as an attachment. (shown when Data to Send is defineBelow) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Authentication Type | options | No | apiToken | How to authenticate with NocoDB. API Token uses xc-token header; User Token uses xc-auth header. |
Options: apiToken (authenticate with an API token), userToken (authenticate with a user JWT token) | ||||
| API Version | options | No | 3 | NocoDB API version to use. Choose based on your NocoDB instance version. |
Options: 1 (before v0.90.0), 2 (v0.90.0 onwards), 3 (v0.200.0 onwards) | ||||
| Workspace ID | string | No | — | NocoDB workspace ID. Only required for v3 in workspace-based deployments. (shown when API Version is 3) |
| Base (Project) ID | string | Yes | — | The NocoDB base (project) ID. Find it in the NocoDB UI under base settings. Supports expressions. |
| Table | string | Yes | — | Table ID (v2/v3) or table name (v1). Find the table ID in the NocoDB UI or via the API. Supports expressions. |
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. Accepts 1–100. |
Output Data
The row lands directly on the output item’s JSON — there is no wrapper property, and the input item’s JSON does not pass through except where noted below. Binary data already on the input item is forwarded. Get Many fans out one output item per row, so a query returning 200 rows produces 200 items from one input item; every other operation produces exactly one output item per input item.
The exact shape depends on the API Version you selected, because the three NocoDB APIs answer write calls differently.
| Operation | Output items per input item | Item JSON |
|---|---|---|
create | One | The row you sent. On API Version 3 the service’s response is merged over it; on 1 and 2 the new auto-increment id is added |
delete | One | On API Version 1, the input item JSON plus deleted: true. On 2, success: true. On 3, the service’s delete response |
get | One | The row as NocoDB returns it |
getAll | One per row | The row as NocoDB returns it. When nothing matches, a single item with _noResults: true and a message |
update | One | On API Version 1, the row you sent. On 2, success: true. On 3, the row you sent with the service’s response merged over it |
Attachments. With Download Attachments on, each file found in the fields you named in Download Fields is written to a binary property called {fieldName}_{index} — the first file in a photo field becomes photo_0, the second photo_1. Files that cannot be fetched are skipped rather than failing the item. Uploads work the other way: a Fields to Send entry with binaryData set to true reads the named binary property, stores the file in NocoDB, and writes the resulting attachment reference into that column.
Reference the result downstream by expression, e.g. {{ $json.id }} or {{ $json.Name }}.
Usage Examples
- Create a row in a NocoDB table with file attachments
- Get all rows from a NocoDB table and download attachment fields
- Update a row and upload a new attachment
- Delete rows from a NocoDB table
- Query NocoDB with a where filter formula
Example Configuration
Read a single row by its ID:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "get",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"id": "1",
"downloadAttachments": false
}
}
Read a row and pull two of its attachment fields down as binary data:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "get",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"id": "1",
"downloadAttachments": true,
"downloadFieldNames": "profile_photo,resume"
}
}
Create a row from the incoming item, ignoring two properties:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "create",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"dataToSend": "autoMapInputData",
"inputsToIgnore": "id,created_at"
}
}
Create a row with explicit columns, uploading a binary property into an attachment column:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "create",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"dataToSend": "defineBelow",
"fieldsUi": [
{ "fieldName": "name", "fieldValue": "John Doe" },
{ "fieldName": "email", "fieldValue": "john@example.com" },
{ "fieldName": "avatar", "binaryData": true, "binaryProperty": "profileImage" }
]
}
}
Update a row identified by a custom primary key column:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "update",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"primaryKey": "custom",
"customPrimaryKey": "user_id",
"id": "USR001",
"dataToSend": "autoMapInputData"
}
}
Query up to 100 rows with field selection, sorting, and a filter formula:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "getAll",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"returnAll": false,
"limit": 100,
"options": {
"fields": "name,email,created_at",
"sort": "[{\"field\": \"created_at\", \"direction\": \"desc\"}]",
"where": "(name,like,%John%)"
}
}
}
Delete a row from a table that was imported from Airtable:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "delete",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"primaryKey": "ncRecordId",
"id": "rec123abc456def"
}
}
Read an entire table from a workspace-based deployment:
{
"type": "nocodb",
"parameters": {
"authType": "apiToken",
"apiVersion": 3,
"operation": "getAll",
"workspaceId": "ws_abc123",
"projectId": "p_abc123def456",
"table": "tbl_xyz789",
"returnAll": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
CRUD operations on NocoDB table rows with binary attachment upload and download support.
Pattern 1: Simple CRUD Operations
Most basic operations require only the core parameters plus operation-specific requirements:
- Always specify
projectIdandtable - For single-row operations (
get,update,delete), includeid - Choose appropriate
primaryKeytype if using non-default ID fields
Pattern 2: Bulk Data Retrieval
For getAll operations:
- Use
returnAll: truefor complete datasets - Use
returnAll: falsewithlimitfor pagination - Leverage
optionscollection for filtering, sorting, and field selection
Pattern 3: File Upload/Download
- For uploads: Use
fieldsUiwithbinaryData: trueand specifybinaryProperty - For downloads: Enable
downloadAttachmentsand specifydownloadFieldNames
Pattern 4: Data Mapping Strategies
- Use
autoMapInputDatawhen input property names match column names exactly - Use
defineBelowfor explicit field control or when names don’t match - Combine with
inputsToIgnoreto exclude unwanted properties in auto-map mode
Frequently asked questions
What does every operation need?
A project ID and a table. Single-row operations — get, update and delete — also need the row's id, and you can select the primary key type if you are not using the default ID field.
How should I fetch large tables?
For getAll, use Return All when the table is small enough to handle at once; otherwise page with a limit so a large table does not arrive as a single overwhelming batch.
Can it handle file attachments?
Yes — binary attachment upload and download are both supported, so files can be attached to rows and pulled back out later in the workflow.
Which credential does it need?
A NocoDB API credential pointing at your instance.
Build with the NocoDB node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need NocoDB API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.