# SmartSuite

> Work with SmartSuite solutions, tables, records, comments and schema.

App · Project Management · 47 actions. Web page: https://docs.lodol.com/docs/integrations/smartsuite

## Actions

### Add comment

Comment on a record.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Comment (`comment`, text, required): The comment text. Basic HTML is supported.
- Assign to (`assigned_to`, text): Optionally assign the comment to a member.

**Outputs**

- `created_on` (text): Creation time
- `id` (text): Comment id
- `record` (text): Record id

**Example output**

```json
{
  "created_on": "2026-03-20T12:49:05.832000Z",
  "id": "64185642174d214da05fa9c2",
  "record": "645109df887911e1871054b7"
}
```

### Add field

Add a field to a Table. SmartSuite expects the caller to invent the field's slug; one is generated when you leave it blank.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Field name (`label`, text, required): The label shown for the field.
- Field type (`field_type`, text, required): A SmartSuite field type. See the field types reference at developers.smartsuite.com for the full list of 46.
- Field settings (`params`, object): Type-specific settings, such as the choices for a select field. Leave blank for defaults.
- Field slug (`slug`, text): A 10-character identifier for the field. Generated when left blank.
- Place after (`prev_sibling_slug`, text): Slug of the field this one should follow on the record layout.

**Outputs**

- `field_type` (text): Field type
- `label` (text): Field label
- `slug` (text): The new field's slug

**Example output**

```json
{
  "field_type": "singleselectfield",
  "label": "Priority",
  "slug": "s7f3a91cd2"
}
```

### Add fields in bulk

Add several fields to a Table. SmartSuite's bulk endpoint builds a file field as a text field, so each is added singly, in the order given.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Fields (`fields`, list, required): Field objects, each with at least 'label' and 'field_type'. Slugs are generated where absent.

**Outputs**

- `fields` (list): The added fields

**Example output**

```json
{
  "fields": [
    {
      "field_type": "singleselectfield",
      "label": "Priority",
      "slug": "s7f3a91cd2"
    }
  ]
}
```

### Assign record

Assign members to a record. Accepts member ids or email addresses; emails are resolved to ids automatically.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Assignees (`assignees`, list, required): Members to assign, by id or email address.
- Assignee field (`assigned_field`, text): Which assignee field to set. Default: `assigned_to`.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Attach file from URL

Attach a file to a record's file field by URL, letting SmartSuite fetch it.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- File field (`field_slug`, text, required): The file field to attach to.
- File URL (`file_url`, text, required): A publicly reachable URL for SmartSuite to fetch.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Check solution name is free

Check whether a Solution name is unique in the workspace before creating it.

**Inputs**

- Proposed name (`name`, text, required): The Solution name to check.

**Outputs**

- `is_unique` (true/false): True if no Solution already uses the name
- `name` (text): The name checked

**Example output**

```json
{
  "is_unique": true,
  "name": "Q3 Launch"
}
```

### Count records

Count the records matching a filter. Uses a single request whatever the table's size.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Filter field (`filter_field`, text): The field to filter on. Leave blank to return everything.
- Comparison (`filter_comparison`, text): How to compare. These six work on most field types; for type-specific comparisons such as is_greater_than on a number, use the Advanced filter instead. One of: `is`, `is_not` (is not), `contains`, `not_contains` (does not contain), `is_empty` (is empty), `is_not_empty` (is not empty). Default: `is`.
- Filter value (`filter_value`, text): The value to compare against. Leave blank for is_empty / is_not_empty.

**Outputs**

- `total` (number): Number of matching records

**Example output**

```json
{
  "total": 42
}
```

### Create or update record

Update the record whose match field equals the given value, or create it if there isn't one.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Match field (`match_field`, text, required): The field that identifies an existing record.
- Match value (`match_value`, text, required): The value to look for in the match field.
- Field values (`fields`, object, required): The value to set for each field, keyed by field slug. Computed fields (formula, rollup, auto number, created/updated, record id, count, vote) cannot be written and are not offered.

**Outputs**

- `created` (true/false): True if a new record was created
- `record` (object): The resulting record

**Example output**

```json
{
  "created": false,
  "record": {
    "application_id": "6451093119bcf22befaed847",
    "assigned_to": [
      "5dd812b9d8b7863532d3ddd2"
    ],
    "due_date": {
      "from_date": {
        "date": "2026-02-01T00:00:00Z",
        "include_time": false
      },
      "is_overdue": false,
      "to_date": {
        "date": "2026-02-14T00:00:00Z",
        "include_time": false
      }
    },
    "id": "645109df887911e1871054b7",
    "status": {
      "label": "In Progress",
      "value": "in_progress"
    },
    "title": "Website redesign"
  }
}
```

### Create record

Create a new record in a table.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Field values (`fields`, object, required): The value to set for each field, keyed by field slug. Computed fields (formula, rollup, auto number, created/updated, record id, count, vote) cannot be written and are not offered.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Create records in bulk

Create up to 25 records in one request. SmartSuite does not enforce required fields on this endpoint, so a row missing one is accepted rather than rejected.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Records (`items`, list, required): Up to 25 records, each an object keyed by field slug.

**Outputs**

- `count` (number): How many were created
- `records` (list): The created records

**Example output**

```json
{
  "count": 1,
  "records": [
    {
      "application_id": "6451093119bcf22befaed847",
      "assigned_to": [
        "5dd812b9d8b7863532d3ddd2"
      ],
      "due_date": {
        "from_date": {
          "date": "2026-02-01T00:00:00Z",
          "include_time": false
        },
        "is_overdue": false,
        "to_date": {
          "date": "2026-02-14T00:00:00Z",
          "include_time": false
        }
      },
      "id": "645109df887911e1871054b7",
      "status": {
        "label": "In Progress",
        "value": "in_progress"
      },
      "title": "Website redesign"
    }
  ]
}
```

### Create solution

Create a new Solution in the workspace. SmartSuite puts a Table called 'Table 1' inside it automatically.

**Inputs**

- Solution name (`name`, text, required): The name for the new Solution.
- Icon (`logo_icon`, text): A Material Design icon name, such as 'calendar'. Default: `grid`.
- Colour (`logo_color`, text): Hex colour for the icon. SmartSuite expects one of its own palette values. One of: `#3A86FF` (Blue), `#4ECCFD` (Light blue), `#3EAC40` (Green), `#FF5757` (Red), `#FF9210` (Orange), `#FFB938` (Yellow), `#883CD0` (Purple), `#EC506E` (Pink), `#17C4C4` (Teal), `#6A849B` (Grey). Default: `#3A86FF`.

**Outputs**

- `id` (text): New solution id
- `name` (text): Solution name

**Example output**

```json
{
  "id": "6480fce848b4ebb6f17a8fd1",
  "name": "Q3 Launch"
}
```

### Create table

Create a Table in a Solution. SmartSuite builds it from its own template of eleven starter fields; the primary one is renamed to the label you give.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table name (`name`, text, required): The name for the new Table.
- Title field name (`primary_field_label`, text): Label for the table's primary field. SmartSuite calls it Title; any other label is applied in a second call. Default: `Title`.

**Outputs**

- `id` (text): New table id
- `name` (text): Table name
- `solution` (text): Solution id

**Example output**

```json
{
  "id": "6451093119bcf22befaed847",
  "name": "Tasks",
  "solution": "6480fce848b4ebb6f17a8fd1"
}
```

### Create team

Create a team. The name must be unique in the workspace.

**Inputs**

- Team name (`name`, text, required): A unique name for the team.
- Owners (`owners`, list, required): Members who will own the team. At least one.
- Members (`members`, list): Members to add to the team.
- Colour (`color`, text): Hex colour for the team. Default: `#0C41F3`.

**Outputs**

- `id` (text): New team id
- `name` (text): Team name

**Example output**

```json
{
  "id": "65ce93e5e6bd79eeaf37045d",
  "name": "Launch Crew"
}
```

### Create view

Create a view on a table.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- View name (`label`, text, required): The name for the new view.
- View type (`view_mode`, text): How the view displays records. One of: `grid`, `kanban`, `calendar`, `timeline`, `card`, `map`. Default: `grid`.
- Visible fields (`visible_fields`, list): Fields to show. Defaults to the table's title field.
- Description (`description`, text): Optional description for the view.

**Outputs**

- `id` (text): View id
- `label` (text): View name
- `view_mode` (text): View type

**Example output**

```json
{
  "id": "6493681eba09b400816eb754",
  "label": "Open tasks",
  "view_mode": "grid"
}
```

### Create webhook

Subscribe to record changes. SmartSuite's notification carries no event data, only the webhook id, so pair this with 'List webhook events' to read what changed. This feature is in beta at SmartSuite, and a webhook is disabled after 7 days with no call to List webhook events.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Notification URL (`notification_url`, text, required): Where SmartSuite should POST when something changes.
- Event types (`kinds`, list): Which record events to receive. All three if left unset. One or more of: `RECORD_CREATED` (Record created), `RECORD_UPDATED` (Record updated), `RECORD_DELETED` (Record deleted).
- Limit to tables (`table_ids`, list): Only watch these tables. Leave blank to watch the whole Solution.
- Limit to fields in table (`field_table_id`, text): To watch specific fields, name the table they belong to.
- Limit to fields (`field_slugs`, list): Only watch these fields.

**Outputs**

- `webhook_id` (text): New webhook id

**Example output**

```json
{
  "webhook_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3"
}
```

### Delete field

Delete a field from a Table. This also removes every value stored in that field.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Field (`slug`, text, required): The field to delete.

**Outputs**

- `deleted` (true/false): Always true
- `slug` (text): The deleted field slug

**Example output**

```json
{
  "deleted": true,
  "slug": "s7f3a91cd2"
}
```

### Delete record

Move a record to the SmartSuite trash.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.

**Outputs**

- `deleted` (true/false): Always true
- `record_id` (text): The deleted record's id

**Example output**

```json
{
  "deleted": true,
  "record_id": "645109df887911e1871054b7"
}
```

### Delete records in bulk

Delete up to 25 records in one request.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record IDs (`record_ids`, list, required): Up to 25 record ids to delete.

**Outputs**

- `count` (number): How many were deleted
- `deleted` (list): The deleted records

**Example output**

```json
{
  "count": 1,
  "deleted": [
    {
      "id": "645109df887911e1871054b7"
    }
  ]
}
```

### Delete webhook

Delete a webhook. Its stored events are deleted with it.

**Inputs**

- Webhook ID (`webhook_id`, text, required): The id returned when the webhook was created.

**Outputs**

- `deleted` (true/false): Always true
- `webhook_id` (text): The deleted webhook id

**Example output**

```json
{
  "deleted": true,
  "webhook_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3"
}
```

### Duplicate solution

Copy a Solution, optionally into a different workspace and optionally without its records.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- New name (`name`, text, required): The name for the copy.
- Copy records (`copy_records`, true/false): Copy the records too, rather than the structure only. Default: `true`.
- Copy comments (`copy_comments`, true/false): Copy record comments as well. Default: `false`.
- Target workspace (`to_workspace`, text): Workspace id to copy into. Defaults to the connected workspace.
- Source workspace (`from_workspace`, text): Workspace id to copy from. Defaults to the connected workspace.

**Outputs**

- `id` (text): New solution id
- `name` (text): New solution name

**Example output**

```json
{
  "id": "6480fce848b4ebb6f17a8fd2",
  "name": "Q3 Launch copy"
}
```

### Find record

Find the first record where a field matches a value. Returns found=false rather than failing when nothing matches.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Search field (`filter_field`, text, required): The field to match on.
- Comparison (`filter_comparison`, text): How to compare. These six work on most field types; for type-specific comparisons such as is_greater_than on a number, use the Advanced filter instead. One of: `is`, `is_not` (is not), `contains`, `not_contains` (does not contain), `is_empty` (is empty), `is_not_empty` (is not empty). Default: `is`.
- Filter value (`filter_value`, text): The value to compare against. Leave blank for is_empty / is_not_empty.
- Return readable values (`hydrated`, true/false): Return labels instead of internal ids for select, status, assignee, tag and lookup fields. On by default. Default: `true`.

**Outputs**

- `found` (true/false): Whether a matching record was found
- `record` (object): The matching record, or null when found is false

**Example output**

```json
{
  "found": true,
  "record": {
    "application_id": "6451093119bcf22befaed847",
    "assigned_to": [
      "5dd812b9d8b7863532d3ddd2"
    ],
    "due_date": {
      "from_date": {
        "date": "2026-02-01T00:00:00Z",
        "include_time": false
      },
      "is_overdue": false,
      "to_date": {
        "date": "2026-02-14T00:00:00Z",
        "include_time": false
      }
    },
    "id": "645109df887911e1871054b7",
    "status": {
      "label": "In Progress",
      "value": "in_progress"
    },
    "title": "Website redesign"
  }
}
```

### Get file URL

Return a public URL for a stored file, given the file handle from a record's file field.

**Inputs**

- File handle (`file_handle`, text, required): The 'handle' value from a file field on a record.

**Outputs**

- `url` (text): Public URL for the file

**Example output**

```json
{
  "url": "https://smartsuite-media.s3.amazonaws.com/..."
}
```

### Get record

Retrieve a single record by id.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Return readable values (`hydrated`, true/false): Return labels instead of internal ids for select, status, assignee, tag and lookup fields. On by default. Default: `true`.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Get solution

Retrieve one SmartSuite Solution and its summary counts.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.

**Outputs**

- `applications_count` (number): Table count
- `id` (text): Solution id
- `name` (text): Solution name
- `records_count` (number): Record count
- `status` (text): Solution status

**Example output**

```json
{
  "applications_count": 4,
  "id": "6480fce848b4ebb6f17a8fd1",
  "name": "Product Roadmap",
  "records_count": 128,
  "status": "in_development"
}
```

### Get table

Retrieve a Table including its full field schema.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.

**Outputs**

- `id` (text): Table id
- `name` (text): Table name
- `primary_field` (text): Slug of the title field
- `solution` (text): Solution id
- `structure` (list): Field definitions

**Example output**

```json
{
  "id": "6451093119bcf22befaed847",
  "name": "Tasks",
  "primary_field": "title",
  "solution": "6480fce848b4ebb6f17a8fd1",
  "structure": [
    {
      "field_type": "textfield",
      "label": "Title",
      "slug": "title"
    },
    {
      "field_type": "statusfield",
      "label": "Status",
      "slug": "status"
    }
  ]
}
```

### Get webhook

Retrieve a webhook's configuration and status.

**Inputs**

- Webhook ID (`webhook_id`, text, required): The id returned when the webhook was created.

**Outputs**

- `kinds` (list): Subscribed event types
- `webhook_id` (text): Webhook id

**Example output**

```json
{
  "kinds": [
    "RECORD_CREATED"
  ],
  "webhook_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3"
}
```

### Link records

Point a linked-record field at one or more records in another table.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Linked record field (`link_field`, text, required): The linked-record field to set.
- Records to link (`linked_record_ids`, list, required): Ids of the records to link to.
- Mode (`mode`, text): Replace the existing links, or add to them. One of: `replace` (Replace existing links), `append` (Add to existing links). Default: `replace`.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### List comments

List comments on a record, table or solution. At least one scope is required.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text): Limit to comments on this table.
- Record (`record_id`, text): Limit to comments on this record.

**Outputs**

- `comments` (list): The comments
- `count` (number): How many were found

**Example output**

```json
{
  "comments": [
    {
      "created_on": "2026-03-20T12:49:05.832000Z",
      "id": "64185642174d214da05fa9c2",
      "member": "63a1f65723aaf6bcb564b1f1",
      "message": {
        "preview": "Looks good to me"
      },
      "record": "645109df887911e1871054b7"
    }
  ],
  "count": 1
}
```

### List deleted records

List the records in a Solution's trash.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Summary only (`preview`, true/false): Return a reduced set of fields including who deleted the record and when. Default: `true`.

**Outputs**

- `count` (number): How many were found
- `records` (list): The deleted records

**Example output**

```json
{
  "count": 1,
  "records": [
    {
      "application_id": "6451093119bcf22befaed847",
      "deleted_by": "63a1f65723aaf6bcb564b1f1",
      "id": "66be7b5fb8b730607ea959f4",
      "title": "Old task"
    }
  ]
}
```

### List fields

List a table's fields with their slugs. SmartSuite identifies fields by an opaque slug rather than their label, so this is how you find the key to use when reading or writing a field.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Include computed fields (`include_readonly`, true/false): Include fields that cannot be written, such as formulas and rollups. Default: `true`.

**Outputs**: List of fields

**Example output**

```json
[
  {
    "field_type": "textfield",
    "label": "Title",
    "read_only": false,
    "slug": "title"
  },
  {
    "field_type": "daterangefield",
    "label": "Due Date",
    "read_only": false,
    "slug": "sef1a6a113"
  },
  {
    "field_type": "autonumberfield",
    "label": "Auto Number",
    "read_only": true,
    "slug": "autonumber"
  }
]
```

### List members

List the workspace's members. Useful for turning an email address into the member id an assignee field needs.

**Inputs**

- Maximum members (`limit`, number): How many members to return, up to 1000. From 1 to 1000.
- Offset (`offset`, number): Skip this many members. At least 0.

**Outputs**

- `items` (list): The members
- `total` (number): Total members

**Example output**

```json
{
  "items": [
    {
      "email": [
        "jane@example.com"
      ],
      "full_name": {
        "sys_root": "Jane Cole"
      },
      "id": "63a1f65723aaf6bcb564b1f1"
    }
  ],
  "total": 1
}
```

### List records

Retrieve records from a table, with optional filtering, sorting and pagination.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Maximum records (`limit`, number): How many records to return, up to 1000. From 1 to 1000.
- Offset (`offset`, number): Skip this many records. Use with Maximum records to page through a large table. At least 0.
- Filter field (`filter_field`, text): The field to filter on. Leave blank to return everything.
- Comparison (`filter_comparison`, text): How to compare. These six work on most field types; for type-specific comparisons such as is_greater_than on a number, use the Advanced filter instead. One of: `is`, `is_not` (is not), `contains`, `not_contains` (does not contain), `is_empty` (is empty), `is_not_empty` (is not empty). Default: `is`.
- Filter value (`filter_value`, text): The value to compare against. Leave blank for is_empty / is_not_empty.
- Advanced filter (`filter`, object): A full SmartSuite filter object, for multiple conditions or an 'or' operator: {"operator": "and", "fields": [{"field": "status", "comparison": "is_not", "value": "Complete"}]}. Takes precedence over the guided filter fields above.
- Sort by (`sort_field`, text): Field to sort on.
- Sort direction (`sort_direction`, text): Ascending or descending. One of: `asc` (Ascending), `desc` (Descending). Default: `asc`.
- Return readable values (`hydrated`, true/false): Return labels instead of internal ids for select, status, assignee, tag and lookup fields. On by default. Default: `true`.
- Include deleted records (`include_deleted`, true/false): Also return records that are in the trash. Default: `false`.

**Outputs**

- `items` (list): The records
- `limit` (number): Current limit
- `offset` (number): Current offset
- `total` (number): Total records matching the filter

**Example output**

```json
{
  "items": [
    {
      "application_id": "6451093119bcf22befaed847",
      "assigned_to": [
        "5dd812b9d8b7863532d3ddd2"
      ],
      "due_date": {
        "from_date": {
          "date": "2026-02-01T00:00:00Z",
          "include_time": false
        },
        "is_overdue": false,
        "to_date": {
          "date": "2026-02-14T00:00:00Z",
          "include_time": false
        }
      },
      "id": "645109df887911e1871054b7",
      "status": {
        "label": "In Progress",
        "value": "in_progress"
      },
      "title": "Website redesign"
    }
  ],
  "limit": 100,
  "offset": 0,
  "total": 1
}
```

### List records in a view

Return a view's records with its own filters and sort applied. SmartSuite documents no endpoint that lists views, so the view id has to be copied from the view's URL in SmartSuite.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- View ID (`view_id`, text, required): The view's id, from its URL in SmartSuite.
- Include empty fields (`with_empty_values`, true/false): SmartSuite omits empty values by default; turn this on to include them. Default: `false`.

**Outputs**

- `fields` (list): Field slugs visible in the view
- `records` (list): Records as the view returns them

**Example output**

```json
{
  "fields": [
    "title",
    "status",
    "due_date"
  ],
  "records": [
    {
      "application_id": "6451093119bcf22befaed847",
      "assigned_to": [
        "5dd812b9d8b7863532d3ddd2"
      ],
      "due_date": {
        "from_date": {
          "date": "2026-02-01T00:00:00Z",
          "include_time": false
        },
        "is_overdue": false,
        "to_date": {
          "date": "2026-02-14T00:00:00Z",
          "include_time": false
        }
      },
      "id": "645109df887911e1871054b7",
      "status": {
        "label": "In Progress",
        "value": "in_progress"
      },
      "title": "Website redesign"
    }
  ]
}
```

### List solutions

Retrieve every SmartSuite Solution in the workspace.

**Inputs**: None.

**Outputs**: List of solutions

**Example output**

```json
[
  {
    "applications_count": 4,
    "id": "6480fce848b4ebb6f17a8fd1",
    "name": "Product Roadmap",
    "records_count": 128
  }
]
```

### List tables

Retrieve the Tables in a Solution. SmartSuite calls these Apps in its API paths.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.

**Outputs**: List of tables

**Example output**

```json
[
  {
    "id": "6451093119bcf22befaed847",
    "name": "Tasks",
    "primary_field": "title",
    "solution": "6480fce848b4ebb6f17a8fd1"
  }
]
```

### List teams

List the workspace's teams.

**Inputs**

- Maximum teams (`limit`, number): How many teams to return, up to 1000. From 1 to 1000.
- Offset (`offset`, number): Skip this many teams. At least 0.

**Outputs**

- `items` (list): The teams
- `total` (number): Total teams

**Example output**

```json
{
  "items": [
    {
      "id": "65ce93e5e6bd79eeaf37045d",
      "members": [
        "63a1f65723aaf6bcb564b1f1"
      ],
      "name": "Website Project"
    }
  ],
  "total": 1
}
```

### List webhook events

Fetch the record changes a webhook has recorded. This is the only place the event data lives, and calling it also keeps the webhook alive; SmartSuite disables one after 7 days without a call.

**Inputs**

- Webhook ID (`webhook_id`, text, required): The id returned when the webhook was created.
- Page size (`page_size`, number): How many results to return per page. From 1 to 1000.
- Page token (`page_token`, text): The next_page_token from a previous call, to fetch the next page.

**Outputs**

- `events` (list): The recorded events
- `next_page_token` (text): Pass as page_token to fetch the next page

**Example output**

```json
{
  "events": [
    {
      "event_at": "2026-06-21T21:14:06.263Z",
      "event_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3.994",
      "kind": "RECORD_CREATED",
      "record_event_data": {
        "record_id": "6493681eba09b400816eb754"
      }
    }
  ],
  "next_page_token": "8991625"
}
```

### List webhooks

List the webhooks configured on a Solution.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Page size (`page_size`, number): How many results to return per page. From 1 to 1000.
- Page token (`page_token`, text): The next_page_token from a previous call, to fetch the next page.

**Outputs**

- `next_page_token` (text): Pass as page_token to fetch the next page
- `webhooks` (list): The webhooks

**Example output**

```json
{
  "next_page_token": "",
  "webhooks": [
    {
      "kinds": [
        "RECORD_CREATED"
      ],
      "webhook_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3"
    }
  ]
}
```

### Reply to comment

Reply to an existing comment on a record.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Comment to reply to (`parent_comment`, text, required): The id of the comment being replied to.
- Reply (`comment`, text, required): The reply text. Basic HTML is supported.
- Assign to (`assigned_to`, text): Optionally assign the reply to a member.

**Outputs**

- `id` (text): Reply comment id
- `parent_comment` (text): The comment replied to

**Example output**

```json
{
  "id": "64185642174d214da05fa9c3",
  "parent_comment": "64185642174d214da05fa9c2"
}
```

### Restore deleted record

Restore a record from the trash. SmartSuite appends '(Restored)' to its title.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record ID (`record_id`, text, required): The deleted record's id, from List deleted records.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Set record status

Set a status field on a record. Accepts either the status label shown in SmartSuite or its internal value.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Status field (`status_field`, text): Which status field to set. Default: `status`.
- Status (`status_value`, text, required): The status to set.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Update field

Change a field's label, type or settings.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Field (`slug`, text, required): The field to update.
- Field name (`label`, text, required): The field's label.
- Field type (`field_type`, text, required): The field's type. SmartSuite requires this on every update, so pass the existing type when it is unchanged.
- Field settings (`params`, object): Type-specific settings.

**Outputs**

- `label` (text): Field label
- `slug` (text): Field slug

**Example output**

```json
{
  "label": "Priority level",
  "slug": "s7f3a91cd2"
}
```

### Update member

Update a member's profile. Fields you leave out keep their current values.

**Inputs**

- Member (`member_id`, text, required): The member to update.
- Profile values (`fields`, object, required): Member fields to set, such as job_title, department, timezone or language.

**Outputs**

- `id` (text): Member id
- `job_title` (text): Job title

**Example output**

```json
{
  "full_name": {
    "sys_root": "Jane Cole"
  },
  "id": "63a1f65723aaf6bcb564b1f1",
  "job_title": "Product Lead"
}
```

### Update record

Update fields on an existing record. Fields you leave out keep their current values.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- Field values (`fields`, object, required): The value to set for each field, keyed by field slug. Computed fields (formula, rollup, auto number, created/updated, record id, count, vote) cannot be written and are not offered.

**Outputs**: A SmartSuite record. Keys are field slugs; empty values are omitted.

- `application_id` (text): Table id
- `id` (text): Record id
- `title` (text): The record's primary field

**Example output**

```json
{
  "application_id": "6451093119bcf22befaed847",
  "assigned_to": [
    "5dd812b9d8b7863532d3ddd2"
  ],
  "due_date": {
    "from_date": {
      "date": "2026-02-01T00:00:00Z",
      "include_time": false
    },
    "is_overdue": false,
    "to_date": {
      "date": "2026-02-14T00:00:00Z",
      "include_time": false
    }
  },
  "id": "645109df887911e1871054b7",
  "status": {
    "label": "In Progress",
    "value": "in_progress"
  },
  "title": "Website redesign"
}
```

### Update records in bulk

Update up to 25 records in one request. Every item must include the id of the record it updates.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Records (`items`, list, required): Up to 25 records, each keyed by field slug and including an 'id'.

**Outputs**

- `count` (number): How many were updated
- `records` (list): The updated records

**Example output**

```json
{
  "count": 1,
  "records": [
    {
      "application_id": "6451093119bcf22befaed847",
      "assigned_to": [
        "5dd812b9d8b7863532d3ddd2"
      ],
      "due_date": {
        "from_date": {
          "date": "2026-02-01T00:00:00Z",
          "include_time": false
        },
        "is_overdue": false,
        "to_date": {
          "date": "2026-02-14T00:00:00Z",
          "include_time": false
        }
      },
      "id": "645109df887911e1871054b7",
      "status": {
        "label": "In Progress",
        "value": "in_progress"
      },
      "title": "Website redesign"
    }
  ]
}
```

### Update webhook

Change which events a webhook watches and over what scope. Not where it posts: SmartSuite ignores that on an update, so changing the URL or stopping a webhook means deleting it and creating another.

**Inputs**

- Webhook ID (`webhook_id`, text, required): The id returned when the webhook was created.
- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Event types (`kinds`, list): Which record events to receive. All three if left unset. One or more of: `RECORD_CREATED` (Record created), `RECORD_UPDATED` (Record updated), `RECORD_DELETED` (Record deleted).
- Limit to tables (`table_ids`, list): Only watch these tables.
- Limit to fields in table (`field_table_id`, text): The table whose fields should be watched.
- Limit to fields (`field_slugs`, list): Only watch these fields.

**Outputs**

- `webhook_id` (text): Webhook id

**Example output**

```json
{
  "webhook_id": "2f7cc6e0-b709-4b04-964a-3706c89c78e3"
}
```

### Upload file

Upload a file into a record's file field.

**Inputs**

- Solution (`solution_id`, text, required): The SmartSuite Solution that holds the table.
- Table (`table_id`, text, required): The SmartSuite Table (App) to work with.
- Record (`record_id`, text, required): The record to act on. Pick one from the list, or supply an id from an earlier step.
- File field (`field_slug`, text, required): The file field to upload into.
- File to upload (`file_path`, text, required): The file to upload: upload one, or pick a file from an earlier step. To attach a file from a link, use Attach file from URL.
- File name (`file_name`, text): Name to store the file under. Defaults to the uploaded file's own name.

**Outputs**: The updated record, including the stored file metadata

**Example output**

```json
{
  "id": "645109df887911e1871054b7",
  "safa1e3a3e": [
    {
      "handle": "gR3sd5PITEqlK9GMaXXj",
      "metadata": {
        "filename": "contract.pdf",
        "mimetype": "application/pdf",
        "size": 53736
      }
    }
  ]
}
```
