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
| Status | Meaning |
|---|---|
200 | Read, update, delete, cache, or schema operation succeeded |
201 | Row append succeeded |
400 | Invalid body, invalid field, or missing schema |
401 | Missing, invalid, revoked, or rotated key |
403 | Key lacks permission, sheet access is revoked, or the plan does not include the feature |
413 | Request body is larger than 1 MB |
429 | Rate limit, monthly usage limit, or Google write capacity guardrail was hit |
502 | Google Sheets API failed while Sheetfront was processing the request |
For complete endpoint details, open the interactive API reference.