# Limitations

The Smartsheet API enforces capacity limits to maintain platform performance. Some limits vary by subscription plan. Review these limits when designing your integrations to avoid unexpected errors at runtime.

## Sheet limits

| Per-sheet limit | Legacy sheet limits | Large-scale sheet limits |
|  --- | --- | --- |
| Cells | 500k | 1M |
| Rows | 20k | 100k |
| Columns | 400 | 400 |
| Characters in cell | 4,000 | 4,000 |
| Formulas on sheet | 500k | 1M |
| Sheet links inbound | 500k | 1M |
| Sheet links outbound | 500k | 5M |
| Sheet link target sheets | 10,000 | 50k |
| Unique cross-sheet references | 100 | 100 |
| Same-sheet total formula cell references | 25M | 100M |


**Enterprise** and **Advanced Work Management** plans support **large-scale sheet limits**.

**Business** plans support **legacy sheet limits**.

**Warning:** Responses for operations on sheets that exceed legacy limits may take longer than usual. Set your client timeouts accordingly.

**Note:** Smartsheet Gov is limited to 100k sheet links inbound per sheet.

### Operations bound by legacy sheet limits

The following API operations support only sheets that remain within the **legacy sheet limits**:

- [GET /2.0/sheets/{sheetId}/columns](/api/smartsheet/openapi/columns/columns-listonsheet) (Get columns)
- [GET /2.0/sheets/{sheetId}/columns/{columnId}](/api/smartsheet/openapi/columns/column-get) (Get column)
- [GET /2.0/sheets/{sheetId}/rows/{rowId}](/api/smartsheet/openapi/rows/row-get) (Get row)
- [POST /2.0/sheets/{sheetId}/rows/copy](/api/smartsheet/openapi/rows/copy-rows) (Copy rows to another sheet)
- [POST /2.0/sheets/{sheetId}/rows/move](/api/smartsheet/openapi/rows/move-rows) (Move rows to another sheet)
- [POST /2.0/sheets/{sheetId}/rows/emails](/api/smartsheet/openapi/rows/rows-send) (Send rows via email)
- [POST /2.0/sheets/{sheetId}/copy](/api/smartsheet/openapi/sheets/copy-sheet) (Copy sheet)
- [POST /2.0/sheets/{sheetId}/rows/{rowId}/columns/{columnId}/cellimages](/api/smartsheet/openapi/cellimages/addimagetocell) (Add image to cell)


## Report limits

| Per-report limit | Legacy report limits | Large-scale report limits |
|  --- | --- | --- |
| Cells | 15M | 30M |
| Rows | 1.5M | 3M |
| Columns | 400 | 400 |


**Enterprise** and **Advanced Work Management** plans support **large-scale report limits**.

**Business** plans support **legacy report limits**.

**Warning:** Responses for operations on reports that exceed legacy limits may take longer than usual. Set your client timeouts accordingly.

[POST /2.0/reports/{reportId}/emails](/api/smartsheet/openapi/reports/sendreportviaemail) (Send report via email)  supports only reports that remain within the **legacy report limits**.

[GET /2.0/reports/{reportId}](/api/smartsheet/openapi/reports/getreport) (Get report) requests that use any of the following `include` query parameter values might fail depending on the report scale. Requests that don't use them are supported.

- `attachments`
- `cellLinks`
- `discussions`
- `format`
- `ganttConfig`
- `proofs`
- `scope`
- `source`
- `sourceSheets`


## Limits for sharing

When sharing emails, you can send 1,000 per API call.

## Functional limits

You cannot create or update filters using the API; however, you can query which rows have been filtered out and you can get filter definitions. For details, see [Filters object](/api/smartsheet/openapi/schemas/filters).