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

> Node: Coda (`coda`) · Action · v1
> Category: Productivity · Credentials: Coda API (`codaApi`)
> Updated: 2026-08-16

# Coda

> Manage Coda document data: tables, views, formulas, and controls.

## Overview

Coda is a collaborative document/spreadsheet platform. This tool connects to the Coda API v1 to manage data within Coda docs. It supports CRUD operations on table rows, view rows, column metadata, formula values, and control values. Resources: Table (create/get/getAll/delete rows, get/getAll columns, push button), View (get/getAll views, get/getAll/delete/update rows, get columns, push button), Formula (get/getAll), Control (get/getAll).

**Category:** Productivity  
**Tool Name:** `coda`  
**Version:** 1

**Appearance:** Icon: `si-coda` | Color: `#F46A54`

## Node Type

**Action** — processes input items and produces output

## Input / Output

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

## Credentials

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

### Resources

| Resource | Value |
|----------|-------|
| Control | `control` |
| Formula | `formula` |
| Table | `table` |
| View | `view` |

### Operations

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Table | Create Row | `createRow` | Create/insert a row |
| Table | Delete Row | `deleteRow` | Delete one or multiple rows |
| Table | Get All Columns | `getAllColumns` | Get all columns in a table |
| Table | Get All Rows | `getAllRows` | Get all rows in a table |
| Table | Get Column | `getColumn` | Get a column |
| Table | Get Row | `getRow` | Get a row |
| Table | Push Button | `pushButton` | Push a button in a table row |
| View | Delete Row | `deleteViewRow` | Delete a view row |
| View | Get | `get` | Get a view |
| View | Get Columns | `getAllViewColumns` | Get all view columns |
| View | Get Many | `getAll` | Get many views |
| View | Get Rows | `getAllViewRows` | Get all view rows |
| View | Push Button | `pushViewButton` | Push a button in a view row |
| View | Update Row | `updateViewRow` | Update a view row |
| Formula | Get | `get` | Get a formula |
| Formula | Get Many | `getAll` | Get many formulas |
| Control | Get | `get` | Get a control |
| Control | Get Many | `getAll` | Get many controls |

### Parameters

#### Table: Create Row

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Options (`options`) | `collection` | No | `{}` | Optional settings for this operation. |
| — Disable Parsing | `boolean` | No | `false` | Whether the API will not attempt to parse the data in any way. |
| — Key Columns | `string` | No | — | Optional column IDs, URLs, or names specifying columns to be used as upsert keys. If more than one, separate by comma. |

#### Table: Delete Row

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |

#### Table: Get All Columns

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Table: Get All Rows

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Options (`options`) | `collection` | No | `{}` | Optional settings for this operation. |
| — Query | `string` | No | — | Query used to filter returned rows, specified as `<column_id_or_name>:<value>`. If using a column name, you must quote it (e.g., "My Column":123). |
| — RAW Data | `boolean` | No | `false` | Whether to return the data exactly as received from the API. |
| — Sort By | `options` | No | — | Specifies the sort order of the rows returned. |
| | | | | Options: `createdAt`, `natural` |
| — Use Column Names | `boolean` | No | `false` | Whether to use column names instead of column IDs in the returned output. |
| — Value Format | `options` | No | — | The format that cell values are returned as. |
| | | | | Options: `simple`, `simpleWithArrays`, `rich` |
| — Visible Only | `boolean` | No | `false` | Whether to return only visible rows and columns for the table. |

#### Table: Get Column

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Column ID (`columnId`) | `string` | Yes | — | The ID of the column. For pushButton, this must be a button-type column. |

#### Table: Get Row

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |
| Options (`options`) | `collection` | No | `{}` | Optional settings for this operation. |
| — RAW Data | `boolean` | No | `false` | Whether to return the data exactly as received from the API. |
| — Use Column Names | `boolean` | No | `false` | Whether to use column names instead of column IDs in the returned output. Fragile if columns are renamed. |
| — Value Format | `options` | No | — | The format that cell values are returned as. |
| | | | | Options: `simple`, `simpleWithArrays`, `rich` |

#### Table: Push Button

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. Find it in the URL: `https://coda.io/d/DocTitle_d<docId>` |
| Table ID | `string` | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |
| Column ID (`columnId`) | `string` | Yes | — | The ID of the column. For pushButton, this must be a button-type column. |

#### View: Delete Row

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row to operate on. |

#### View: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |

#### View: Get Columns

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### View: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### View: Get Rows

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Options (`options`) | `collection` | No | `{}` | Optional settings for this operation. |
| — Query | `string` | No | — | Query used to filter returned rows, specified as `<column_id_or_name>:<value>`. |
| — Use Column Names | `boolean` | No | `false` | Whether to use column names instead of column IDs. |
| — Value Format | `options` | No | — | The format that cell values are returned as. |
| | | | | Options: `simple`, `simpleWithArrays`, `rich` |
| — RAW Data | `boolean` | No | `false` | Whether to return the data exactly as received from the API. |
| — Sort By | `options` | No | — | Specifies the sort order of the rows returned. |
| | | | | Options: `createdAt`, `natural` |

#### View: Push Button

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row to operate on. |
| Column ID (`columnId`) | `string` | Yes | — | The ID of the button column to push. |

#### View: Update Row

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| View ID | `string` | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
| Row ID (`rowId`) | `string` | Yes | — | ID or name of the row to operate on. |
| Key Name | `string` | Yes | `columns` | The name of the key in the input JSON that contains the column-value pairs to update. Defaults to "columns". |
| Options (`options`) | `collection` | No | `{}` | Optional settings for this operation. |
| — Disable Parsing | `boolean` | No | `false` | Whether the API will not attempt to parse the data in any way. |

#### Formula: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| Formula ID | `string` | Yes | — | The ID of the formula to retrieve. |

#### Formula: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Control: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| Control ID | `string` | Yes | — | The ID of the control to retrieve. |

#### Control: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Doc ID (`docId`) | `string` | Yes | — | The ID of the Coda document. |
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `50` | Max number of results to return. _(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. |

## Output Data

The Coda response becomes the output item's JSON — it replaces the incoming JSON rather than being nested under a property, so reference fields directly, e.g. `{{ $json.id }}`. Binary data already on the input item is forwarded to every output item.

Seven operations **fan out**, emitting one output item per record returned: `Table: Get All Rows`, `Table: Get All Columns`, `View: Get Many`, `View: Get Rows`, `View: Get Columns`, `Formula: Get Many` and `Control: Get Many`. When one of them matches nothing, it produces no output items at all. Every other operation emits exactly one output item per input item.

| Resource / Operation | Output item JSON |
|----------------------|------------------|
| Table: Create Row | The input item, passed through unchanged. |
| Table: Delete Row | The input item, passed through, plus `_deleted: true`. |
| Table: Get All Columns | One item per column object. |
| Table: Get All Rows | One item per row: `id` plus one field per cell value — or the raw API row object when RAW Data is on. |
| Table: Get Column | The column object. |
| Table: Get Row | `id` plus one field per cell value — or the raw API row object when RAW Data is on. |
| Table: Push Button | The button response, or `success: true` when the API returns no body. |
| View: Delete Row | The delete response, or `success: true` with `deleted: true` when the API returns no body. |
| View: Get | The view object. |
| View: Get Columns | One item per column object. |
| View: Get Many | One item per view object. |
| View: Get Rows | One item per row, shaped like Table: Get All Rows. |
| View: Push Button | The button response, or `success: true` when the API returns no body. |
| View: Update Row | The input item, passed through unchanged. |
| Formula: Get | The formula object. |
| Formula: Get Many | One item per formula object. |
| Control: Get | The control object. |
| Control: Get Many | One item per control object. |

Two operations send data instead of returning it, which is why they pass the input item straight through:

- **Table: Create Row** builds the new row from the input item's own top-level fields — one cell per field, using the field name as the column. Fields whose name starts with `_` are skipped, so error and metadata fields never become columns.
- **View: Update Row** reads the column-value pairs from the input item property named by **Key Name** (`columns` by default), so the upstream item needs a nested object there.

Row-returning operations key each cell by column name unless you add **Use Column Names** to Options and switch it off, in which case column IDs are used instead.

## Usage Examples

- Get all rows from a Coda table
- Create a new row in a Coda table
- Delete a row from a Coda table
- Get all views in a Coda document
- Read a formula value from a Coda document
- Push a button in a Coda table row
- Update a row in a Coda view

## Example Configuration

Read a filtered, sorted page of table rows — each row arrives as its own item:

```json
{
  "type": "coda",
  "parameters": {
    "resource": "table",
    "operation": "getAllRows",
    "docId": "AbCDeFGH",
    "tableId": "grid-pqRst",
    "returnAll": false,
    "limit": 50,
    "options": {
      "query": "Status:\"Active\"",
      "sortBy": "createdAt",
      "useColumnNames": true,
      "valueFormat": "simple",
      "visibleOnly": true
    }
  }
}
```

Upsert a row keyed on the Name column — the cells come from the incoming item's fields:

```json
{
  "type": "coda",
  "parameters": {
    "resource": "table",
    "operation": "createRow",
    "docId": "{{ $json.docId }}",
    "tableId": "grid-pqRst",
    "options": {
      "keyColumns": "Name"
    }
  }
}
```

Update a view row from a `columns` object on the incoming item:

```json
{
  "type": "coda",
  "parameters": {
    "resource": "view",
    "operation": "updateViewRow",
    "docId": "AbCDeFGH",
    "viewId": "table-abc123",
    "rowId": "{{ $json.rowId }}",
    "keyName": "columns",
    "options": {
      "disableParsing": false
    }
  }
}
```

Read a single formula value:

```json
{
  "type": "coda",
  "parameters": {
    "resource": "formula",
    "operation": "get",
    "docId": "AbCDeFGH",
    "formulaId": "{{ $json.formulaId }}"
  }
}
```

List every control in a doc, one item per control:

```json
{
  "type": "coda",
  "parameters": {
    "resource": "control",
    "operation": "getAll",
    "docId": "AbCDeFGH",
    "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

Manage table rows, views, formulas, and controls in Coda documents via the Coda API.

### Error Prevention Tips

1. Use row IDs instead of names when possible (names can change)
2. URI-encode row names if you must use them
3. Verify document, table, and view IDs before operations
4. Check button column types before pushing buttons