Reference · Tools

NocoDB

Read, create, update, and delete rows in NocoDB tables with binary attachment support.

Action (binary) Data & Storage v1 Binary data

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires NocoDB API credentials. See the Credentials Guide for setup instructions.

Operations

OperationValueDescription
CreatecreateCreate a row
DeletedeleteDelete a row
GetgetRetrieve a row
Get ManygetAllRetrieve many rows
UpdateupdateUpdate a row

Parameters

Create (create)

ParameterTypeRequiredDefaultDescription
Data to SendoptionsNodefineBelowHow 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 IgnorestringNoComma-separated list of input properties to exclude when using auto-map mode. (shown when Data to Send is autoMapInputData)
Fields to SendjsonNo[]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)

ParameterTypeRequiredDefaultDescription
Row IDstringYesThe value of the row ID field. Supports expressions like {{ $json.id }}.
Primary Key TypeoptionsNoidThe 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 FieldstringNoName of the custom primary key field. (shown when Primary Key Type is custom)

Get (get)

ParameterTypeRequiredDefaultDescription
Row IDstringYesThe value of the row ID field. Supports expressions like {{ $json.id }}.
Download AttachmentsbooleanNofalseWhether to download attachment fields as binary data.
Download FieldsstringNoComma-separated names of attachment fields to download. Case sensitive. (shown when Download Attachments is true)

Get Many (getAll)

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of rows to return. Accepts 1–100. (shown when Return All is false)
Download AttachmentsbooleanNofalseWhether to download attachment fields as binary data.
Download FieldsstringNoComma-separated names of attachment fields to download. Case sensitive. (shown when Download Attachments is true)
OptionscollectionNo{}Additional getAll query options.
— View IDstringNoFilter results to a specific NocoDB view.
— FieldsstringNoComma-separated column names to include in the response.
— SortjsonNo[]JSON array of sort rules: [{ “field”: “Name”, “direction”: “asc” }]. Direction can be “asc” or “desc”.
— Filter By FormulastringNoNocoDB filter formula, e.g. (name,like,example%)~or(name,eq,test).

Update (update)

ParameterTypeRequiredDefaultDescription
Row IDstringYesThe value of the row ID field. Supports expressions like {{ $json.id }}.
Primary Key TypeoptionsNoidThe 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 FieldstringNoName of the custom primary key field. (shown when Primary Key Type is custom)
Data to SendoptionsNodefineBelowHow 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 IgnorestringNoComma-separated list of input properties to exclude when using auto-map mode. (shown when Data to Send is autoMapInputData)
Fields to SendjsonNo[]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

ParameterTypeRequiredDefaultDescription
Authentication TypeoptionsNoapiTokenHow 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 VersionoptionsNo3NocoDB 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 IDstringNoNocoDB workspace ID. Only required for v3 in workspace-based deployments. (shown when API Version is 3)
Base (Project) IDstringYesThe NocoDB base (project) ID. Find it in the NocoDB UI under base settings. Supports expressions.
TablestringYesTable ID (v2/v3) or table name (v1). Find the table ID in the NocoDB UI or via the API. Supports expressions.
Max ConcurrencynumberNo10Maximum 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.

OperationOutput items per input itemItem JSON
createOneThe 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
deleteOneOn API Version 1, the input item JSON plus deleted: true. On 2, success: true. On 3, the service’s delete response
getOneThe row as NocoDB returns it
getAllOne per rowThe row as NocoDB returns it. When nothing matches, a single item with _noResults: true and a message
updateOneOn 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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 projectId and table
  • For single-row operations (get, update, delete), include id
  • Choose appropriate primaryKey type if using non-default ID fields

Pattern 2: Bulk Data Retrieval

For getAll operations:

  • Use returnAll: true for complete datasets
  • Use returnAll: false with limit for pagination
  • Leverage options collection for filtering, sorting, and field selection

Pattern 3: File Upload/Download

  • For uploads: Use fieldsUi with binaryData: true and specify binaryProperty
  • For downloads: Enable downloadAttachments and specify downloadFieldNames

Pattern 4: Data Mapping Strategies

  • Use autoMapInputData when input property names match column names exactly
  • Use defineBelow for explicit field control or when names don’t match
  • Combine with inputsToIgnore to 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 BusyBot

Last updated . Spotted something wrong? Tell us.