Sheetfront

Use the API

Read, append, bulk append, update, and delete Sheet rows

Use the REST API when another app or server needs to work with a connected Sheet. API requests use one sheet connection ID and one API key.

Base URL

Set an environment-specific base URL before copying examples.

export API_BASE_URL="https://api.sheetfront.com"
export SHEETFRONT_API_KEY="your_key_here"
export CONNECTION_ID="your_connection_id"

For staging, set API_BASE_URL=https://api-staging.sheetfront.com. For local development, set API_BASE_URL=http://localhost:8000.

Use this guide for common flows. Use the interactive API reference when you need full request schemas, response shapes, and endpoint details.

Read Rows

Reading rows is available on every plan.

curl -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data?page=1&page_size=50"

Starter plans and higher can filter, sort, and select fields.

curl -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data?status_eq=active&sort=created_at:desc&fields=name,status"

Supported filter suffixes are _eq, _ne, _gt, _gte, _lt, _lte, and _contains.

Append a Row

Appending requires a Starter plan or higher and an API key with create permission.

curl -X POST \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": {"name": "Widget A", "status": "active"}}' \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data"

Values that start with =, +, -, or @ are escaped before writing to Google Sheets to reduce formula-injection risk.

Bulk Append Rows

Bulk append requires a Pro plan or higher. Send 1 to 100 rows in one request.

curl -X POST \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rows": [{"name": "Widget A"}, {"name": "Widget B"}]}' \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data/bulk"

Update a Row

Updating requires a Pro plan or higher and an API key with update permission. The connection must have an identifier column configured in the dashboard. row_id is the value in that identifier column, not the row number.

curl -X PUT \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": {"status": "shipped"}}' \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data?row_id=ORD-5001"

Only provided fields are updated.

Delete a Row

Deleting requires a Pro plan or higher and an API key with delete permission. Like update, deletion uses the configured identifier column.

curl -X DELETE \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/data?row_id=ORD-5001"

Refresh Schema and Cache

Refresh schema after changing headers, hiding columns, changing field types, or changing the identifier column.

curl -X POST \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/refresh-schema"

Starter plans and higher can invalidate cached data when a client needs a fresh read immediately.

curl -X POST \
  -H "Authorization: Bearer $SHEETFRONT_API_KEY" \
  "$API_BASE_URL/api/v1/sheets/$CONNECTION_ID/cache/invalidate"

Common Responses

StatusMeaning
200Read, update, delete, cache, or schema operation succeeded
201Row append succeeded
400Invalid body, invalid field, or missing schema
401Missing, invalid, revoked, or rotated key
403Key lacks permission, sheet access is revoked, or the plan does not include the feature
413Request body is larger than 1 MB
429Rate limit, monthly usage limit, or Google write capacity guardrail was hit
502Google Sheets API failed while Sheetfront was processing the request

For complete endpoint details, open the interactive API reference.

On this page