<!-- BusyBot node reference — https://busybot.net/tools/quickbase/ -->

> Node: QuickBase (`quickbase`) · Action (binary) · v1
> Category: Data & Storage · Credentials: QuickBase API (`quickBaseApi`)
> Updated: 2026-08-16

# QuickBase

> Manage records, fields, files, and reports in QuickBase

## Overview

The QuickBase tool provides comprehensive access to the QuickBase RESTful API. It supports CRUD operations on records (including batch create, update, and upsert), field listing, file attachment download/upload/delete, and report retrieval/execution. Records support field name-to-ID resolution and simplified output. Pagination is offset-based (skip/top) for record queries and report runs.

**Category:** Data & Storage  
**Tool Name:** `quickbase`  
**Version:** 1

**Appearance:** Icon: `lucide-Database` | Color: `#BE1313`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **QuickBase API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/quick-base-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Field | `field` |
| File | `file` |
| Record | `record` |
| Report | `report` |

### Operations

Each resource has its own operation list — pick the resource first, then the operation.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Field | Get Many | `getAll` | Get many fields from a table |
| File | Delete | `delete` | Delete a file attachment |
| File | Download | `download` | Download a file attachment |
| File | Upload | `upload` | Upload a file to a record field |
| Record | Create | `create` | Create a record |
| Record | Create or Update | `upsert` | Create a new record, or update if it already exists (upsert) |
| Record | Delete | `delete` | Delete records matching a filter |
| Record | Get Many | `getAll` | Query records from a table |
| Record | Update | `update` | Update records in a table |
| Report | Get | `get` | Get a report definition |
| Report | Run | `run` | Run a report and return results |

### Parameters

#### Field: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Return All | `boolean` | No | `false` | Whether to return all fields or limit the results. |
| Limit | `number` | No | `50` | Max number of fields to return. Accepts 1–100. _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Extra options for the field listing. |
| — Include Field Permissions | `boolean` | No | `false` | Whether to include custom field permissions in the response. |

#### File: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Record ID | `string` | Yes | — | The unique identifier of the record. Supports expressions. |
| Field ID | `string` | Yes | — | The unique identifier of the file attachment field. Supports expressions. |
| Version Number | `number` | Yes | `1` | The file attachment version number. |

#### File: Download

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Record ID | `string` | Yes | — | The unique identifier of the record. Supports expressions. |
| Field ID | `string` | Yes | — | The unique identifier of the file attachment field. Supports expressions. |
| Version Number | `number` | Yes | `1` | The file attachment version number. |
| Binary Property | `string` | Yes | `data` | Name of the binary property to read from (upload) or write to (download) on the item. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |

#### File: Upload

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Record ID | `string` | Yes | — | The unique identifier of the record. Supports expressions. |
| Field ID | `string` | Yes | — | The unique identifier of the file attachment field. Supports expressions. |
| Binary Property | `string` | Yes | `data` | Name of the binary property to read from (upload) or write to (download) on the item. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |

#### Record: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Columns | `string` | Yes | — | Comma-separated list of field names (or IDs if Use Field IDs is true) to include from input data. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified response (strip {value:...} wrappers). |
| Options | `collection` | No | `{}` | Extra options for the create call. |
| — Fields to Return | `string` | No | — | Comma-separated list of field IDs to return in response. Default returns Record ID (field 3). Provide IDs as comma-separated numbers. |
| — Use Field IDs | `boolean` | No | `false` | Whether to use Field IDs instead of Field Names in the Columns parameter. |

#### Record: Create or Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Columns | `string` | Yes | — | Comma-separated list of field names (or IDs if Use Field IDs is true) to include from input data. |
| Update Key | `string` | Yes | — | The field name in the input data that contains the merge value. Must exist in every input item. |
| Merge Field ID | `string` | Yes | — | The field ID of a unique (non-primary-key) field in QuickBase to match on for upsert. Obtain from Field: Get All. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified response (strip {value:...} wrappers). |
| Options | `collection` | No | `{}` | Extra options for the upsert call. |
| — Fields to Return | `string` | No | — | Comma-separated list of field IDs to return in response. Default returns Record ID (field 3). |
| — Use Field IDs | `boolean` | No | `false` | Whether to use Field IDs instead of Field Names in the Columns parameter. |

#### Record: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Where | `string` | Yes | — | QuickBase query language filter to select records to delete. Example: {3.GT.0} deletes all records where Record ID > 0. Supports expressions. |

#### Record: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Return All | `boolean` | No | `false` | Whether to return all records or limit the results. |
| Limit | `number` | No | `50` | Max number of records to return. Accepts 1–100. _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Query options for the record search. |
| — Select Fields | `string` | No | — | Comma-separated list of field IDs to include in results. Leave empty for default columns. |
| — Sort By | `json` | No | `[]` | JSON array of sort specifications. Each entry: { "fieldId": &lt;id&gt;, "order": "ASC"\|"DESC" }. Example: [{"fieldId": 6, "order": "ASC"}] |
| — Where | `string` | No | — | QuickBase query language filter. Example: {6.EX.'value'} |

#### Record: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Columns | `string` | Yes | — | Comma-separated list of field names (or IDs if Use Field IDs is true) to include from input data. |
| Update Key | `string` | Yes | — | The field name in the input data used as the update key. This field must exist in every input item. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified response (strip {value:...} wrappers and resolve field IDs to labels). |
| Options | `collection` | No | `{}` | Extra options for the update call. |
| — Fields to Return | `string` | No | — | Comma-separated list of field IDs to return in response. |
| — Use Field IDs | `boolean` | No | `false` | Whether to use Field IDs instead of Field Names in the Columns parameter. |

#### Report: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Report ID | `string` | Yes | — | The identifier of the report, unique to the table. Supports expressions. |

#### Report: Run

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Table ID | `string` | Yes | — | The unique identifier of the QuickBase table. Supports expressions like {{ $json.tableId }}. |
| Report ID | `string` | Yes | — | The identifier of the report, unique to the table. Supports expressions. |
| Return All | `boolean` | No | `true` | Whether to return all report results or limit them. |
| Limit | `number` | No | `100` | Max number of records to return from the report. Accepts 1–100. _(shown when Return All is `false`)_ |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. Accepts 1–100. |

## Output Data

The result lands directly on the output item's JSON — there is no wrapper property. Binary data from the input item is forwarded on every operation. How many output items you get depends on the operation: the listing operations fan out **one output item per returned row**, so a Record: Get Many that finds 200 records produces 200 items from a single input item, while the single-target operations produce exactly one item per input item.

Record: Create, Create or Update and Update are **batched** — every input item is sent to QuickBase in one call, and one output item is produced per input item carrying that item's returned record.

| Resource: Operation | Output items per input item | Item JSON |
|---------------------|-----------------------------|-----------|
| Field: Get Many | One per field | The field definition as QuickBase returns it (`id`, `label`, `fieldType`, and the rest of the field's properties). When the table has no fields, a single item with `fields: []` |
| File: Delete | One | The input item JSON merged with the delete response; when the service returns no body, `success: true` is added instead |
| File: Download | One | The input item JSON plus `tableId`, `recordId`, `fieldId`, `versionNumber`, `fileName` and `fileSize`. The file itself is written to the binary property named by Binary Property, alongside any binary already on the item |
| File: Upload | One | The input item JSON plus `tableId`, `recordId`, `fieldId`, `uploadResult`, `fileName` and `fileSize` |
| Record: Create | One | The created record. With Simplify on, `{value: …}` wrappers are stripped |
| Record: Create or Update | One | The created or updated record. With Simplify on, `{value: …}` wrappers are stripped |
| Record: Delete | One | The input item JSON merged with the delete response |
| Record: Get Many | One per record | The record, with field IDs resolved to their labels and `{value: …}` wrappers unwrapped. When nothing matches, a single item with `records: []` |
| Record: Update | One | The updated record. With Simplify on, `{value: …}` wrappers are stripped and field IDs resolved to labels |
| Report: Get | One | The report definition as QuickBase returns it |
| Report: Run | One per record | The record, with field IDs resolved to their labels and `{value: …}` wrappers unwrapped. When the report returns nothing, a single item with `records: []` |

For the record and report operations the input item's JSON does **not** pass through — the returned record replaces it. The file operations and Record: Delete keep the input JSON and add their fields to it.

Reference the result downstream by expression, e.g. `{{ $json.fileName }}` after a download, or `{{ $json["Record ID#"] }}` after a query.

## Usage Examples

- Create records in a QuickBase table
- Download file attachment from a QuickBase record
- Upload a file to a QuickBase record field
- Query all records from a table with pagination
- Run a QuickBase report and return results
- Update records using field name mapping
- Upsert records with merge field matching

## Example Configuration

Get every field definition in a table:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "field",
    "operation": "getAll",
    "tableId": "bqxyz1234",
    "returnAll": true,
    "options": {
      "includeFieldPerms": false
    }
  }
}
```

Get the first 50 fields, including their permissions:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "field",
    "operation": "getAll",
    "tableId": "bqxyz1234",
    "returnAll": false,
    "limit": 50,
    "options": {
      "includeFieldPerms": true
    }
  }
}
```

Upload the file on the item's `data` property to a record's attachment field:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "file",
    "operation": "upload",
    "tableId": "bqxyz1234",
    "recordId": "123",
    "fieldId": "8",
    "binaryPropertyName": "data"
  }
}
```

Download version 1 of an attachment onto the item's `data` property:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "file",
    "operation": "download",
    "tableId": "bqxyz1234",
    "recordId": "123",
    "fieldId": "8",
    "versionNumber": 1,
    "binaryPropertyName": "data"
  }
}
```

Delete a specific attachment version:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "file",
    "operation": "delete",
    "tableId": "bqxyz1234",
    "recordId": "123",
    "fieldId": "8",
    "versionNumber": 1
  }
}
```

Create records from the incoming items, mapping three input properties to columns:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "create",
    "tableId": "bqxyz1234",
    "columns": "Name,Email,Phone",
    "simple": true,
    "options": {
      "fields": "3,6,7",
      "useFieldIDs": false
    }
  }
}
```

Query up to 100 active records, returning selected columns only:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "getAll",
    "tableId": "bqxyz1234",
    "returnAll": false,
    "limit": 100,
    "options": {
      "select": "3,6,7,8",
      "sortByUi": "[]",
      "where": "{6.EX.'Active'}"
    }
  }
}
```

Update existing records, matching each item on its Record ID:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "update",
    "tableId": "bqxyz1234",
    "columns": "Record ID#,Name,Status",
    "updateKey": "Record ID#",
    "simple": false,
    "options": {
      "fields": "3,6,7",
      "useFieldIDs": false
    }
  }
}
```

Upsert records, matching on a unique Email field:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "upsert",
    "tableId": "bqxyz1234",
    "columns": "Email,Name,Phone",
    "updateKey": "Email",
    "mergeFieldId": "6",
    "simple": true,
    "options": {
      "fields": "3,6,7,8",
      "useFieldIDs": false
    }
  }
}
```

Delete every record whose field 7 equals "Inactive":

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "delete",
    "tableId": "bqxyz1234",
    "where": "{7.EX.'Inactive'}"
  }
}
```

Read a report's definition without running it:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "report",
    "operation": "get",
    "tableId": "bqxyz1234",
    "reportId": "5"
  }
}
```

Run a report and cap the result set:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "report",
    "operation": "run",
    "tableId": "bqxyz1234",
    "reportId": "5",
    "returnAll": false,
    "limit": 100
  }
}
```

Bulk-import records from an upstream node, throttled to five concurrent items:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "create",
    "tableId": "bqxyz1234",
    "columns": "Name,Email,Department,StartDate",
    "simple": true,
    "maxConcurrency": 5,
    "options": {
      "useFieldIDs": false
    }
  }
}
```

Keep an external system in sync by upserting on a stable external ID:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "upsert",
    "tableId": "bqxyz1234",
    "columns": "ExternalID,Name,Status,LastModified",
    "updateKey": "ExternalID",
    "mergeFieldId": "10",
    "simple": true,
    "options": {
      "useFieldIDs": false
    }
  }
}
```

Clean up records older than a cut-off date:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "record",
    "operation": "delete",
    "tableId": "bqxyz1234",
    "where": "{8.BF.'2023-01-01'}"
  }
}
```

Discover a table's schema before configuring a record operation:

```json
{
  "type": "quickbase",
  "parameters": {
    "resource": "field",
    "operation": "getAll",
    "tableId": "bqxyz1234",
    "returnAll": true,
    "options": {
      "includeFieldPerms": 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

Manage records, fields, files, and reports in QuickBase applications with binary file download/upload support.

### Key Relationships

- The `operation` parameter determines which other parameters are available and required
- The `returnAll` parameter controls whether `limit` is used for paginated operations
- The `options` collection provides operation-specific configuration
- File operations require `recordId` and `fieldId` to identify the specific attachment
- Record operations support both field names and IDs based on the `useFieldIDs` option
- The `where` parameter uses QuickBase's query language syntax for filtering