Sheetgo API
Note for AI agents: this page is rendered by JavaScript. The full documentation is available as plain text at https://dev-api.sheetgo.com/rest/reference.md, and all of it in one file at https://dev-api.sheetgo.com/rest/llms-full.txt.
This is a summary. Before writing a request, fetch the group page of the endpoint and every model page it links. Do not guess fields that are not shown here.
Start page (plain text): https://dev-api.sheetgo.com/rest/reference.md. Everything in one file: https://dev-api.sheetgo.com/rest/llms-full.txt. The group pages are listed under Endpoints below.
What this API is
The Sheetgo Public API manages your workflows, automations and forms and reads the data they produce. An automation moves data from sources (files, folders, APIs, email, BigQuery) to destinations (files, documents, PDFs, email, APIs), optionally through processors. Authenticate with an API key.
Base URL: https://dev-api.sheetgo.com. Every endpoint below is under /rest/. Requests and responses are JSON.
How to read these docs
The start page lists every endpoint and links to the page that documents it. It is a summary, not the full reference.
- Find your endpoint in the Endpoints list below and fetch the group page it belongs to.
- A group page links each request and response body to a model page. Fetch the model page before you build a body.
- Fetch a guide when an endpoint links to one (smart tags, cell references, rate limiting, and so on).
- Do not guess fields that are not shown here. If a field, value or endpoint is not on these pages, it does not exist; fetch the page that should show it or say that you could not find it.
The model pages are listed on the full start page https://dev-api.sheetgo.com/rest/reference.md.
Authentication
Send an API key as a Bearer token on every request. Generate one on your Sheetgo Account page. Keys start with sg_.
Authorization: Bearer sg_your_api_key
OAuth2 (authorization code flow) is available for integrations: /rest/auth/authorize, /rest/auth/token, /rest/auth/refresh. The token request body is form-encoded, not JSON.
A key can be limited to some actions and items. See API Key Scopes.
Conventions
- Pagination. List endpoints take
pageandper_pageand answer{"page", "per_page", "total", "results"}.totalis the number of pages, not the number of rows. - Errors. Validation errors answer
422with{"detail": [{"loc", "msg", "type"}]}. Most other client errors answer{"code": "<stable_code>", "detail": "<text>"}, sometimes with areason; branch oncode, not on the text. - Rate limits. Reads and writes have separate per-minute budgets. Every response carries
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset. A429carriesRetry-After(seconds); wait that long before retrying. See Rate Limiting. - Column letters. Every column field in a request is a spreadsheet letter (
A,B, ...), not a header name. A header name answers422 invalid_column. To map letters to headers callGET /rest/beta/files/{provider}/{file_id}/structure?include=columns. - Runs are asynchronous.
POST .../runanswers200when the run is enqueued. PollGET .../rununtilexecutionis notrunning.
Quickstart
Four calls take you from nothing to a finished run. Replace the placeholder ids (WORKFLOW_ID, SOURCE_FILE_ID, DEST_FILE_ID) with real ones.
GET /rest/beta/workflows/lists your workflows. Take theidof one. The envelope'stotalcounts pages, not rows.POST /rest/beta/automations/creates an automation (note the trailing slash). This one copies a tab of a Google Sheet into a tab of another:
{
"workflow_id": "WORKFLOW_ID",
"name": "Copy sales",
"sources": [
{
"type": "file",
"provider": "drive",
"id": "SOURCE_FILE_ID",
"file_type": "gsheets",
"sheet_tabs": [
"Sales"
]
}
],
"destinations": [
{
"type": "file",
"provider": "drive",
"id": "DEST_FILE_ID",
"file_type": "gsheets",
"sheet_name": "Sales copy"
}
]
}
Details of every field: AutomationCreate. Column fields in a request are spreadsheet letters, never header names.
3. POST /rest/beta/automations/{id}/run starts a run. 200 means the run was enqueued, not finished.
4. GET /rest/beta/automations/{id}/run returns the last run. Repeat it until execution is not running; then read result.
Endpoints
workflows
Page: https://dev-api.sheetgo.com/rest/reference/workflows.md
POST /rest/beta/workflows/run/{id}(deprecated)GET /rest/beta/workflows/{id}/runPOST /rest/beta/workflows/{id}/runGET /rest/beta/workflows/{id}/filesGET /rest/beta/workflows/{id}/sourcesGET /rest/beta/workflows/{id}/destinationsGET /rest/beta/workflows/{id}PATCH /rest/beta/workflows/{id}DELETE /rest/beta/workflows/{id}GET /rest/beta/workflows/POST /rest/beta/workflows/GET /rest/beta/workflows/{id}/collaboratorsPOST /rest/beta/workflows/{id}/collaboratorsDELETE /rest/beta/workflows/{id}/collaboratorsPATCH /rest/beta/workflows/{id}/collaborators/{email}DELETE /rest/beta/workflows/{id}/collaborators/{email}GET /rest/beta/workflows/{id}/general-accessPUT /rest/beta/workflows/{id}/general-accessDELETE /rest/beta/workflows/{id}/general-accessPOST /rest/beta/workflows/{id}/leavePOST /rest/beta/workflows/{id}/request-accessPOST /rest/beta/workflows/{id}/change-owner
automations
Page: https://dev-api.sheetgo.com/rest/reference/automations.md
POST /rest/beta/automations/run/{id}(deprecated)GET /rest/beta/automations/{id}/runPOST /rest/beta/automations/{id}/runGET /rest/beta/automations/{id}/filesGET /rest/beta/automations/{id}/sourcesGET /rest/beta/automations/{id}/destinationsGET /rest/beta/automations/{id}PUT /rest/beta/automations/{id}PATCH /rest/beta/automations/{id}DELETE /rest/beta/automations/{id}GET /rest/beta/automations/POST /rest/beta/automations/
triggers
Page: https://dev-api.sheetgo.com/rest/reference/triggers.md
GET /rest/beta/workflows/{id}/triggerPUT /rest/beta/workflows/{id}/triggerDELETE /rest/beta/workflows/{id}/trigger
dashboards
Page: https://dev-api.sheetgo.com/rest/reference/dashboards.md
GET /rest/beta/workflows/{id}/dashboardGET /rest/beta/workflows/{id}/dashboard/elements/{element_id}/dataPOST /rest/beta/workflows/{id}/dashboard/elementsDELETE /rest/beta/workflows/{id}/dashboard/elements/{element_id}PUT /rest/beta/workflows/{id}/dashboard/publish
forms
Page: https://dev-api.sheetgo.com/rest/reference/forms.md
GET /rest/beta/workflows/{workflow_id}/forms/{form_id}PATCH /rest/beta/workflows/{workflow_id}/forms/{form_id}DELETE /rest/beta/workflows/{workflow_id}/forms/{form_id}GET /rest/beta/workflows/{workflow_id}/forms/{form_id}/responsesHEAD /rest/beta/workflows/{workflow_id}/forms/{form_id}/responsesGET /rest/beta/workflows/{workflow_id}/forms/POST /rest/beta/workflows/{workflow_id}/forms/
webhook
Page: https://dev-api.sheetgo.com/rest/reference/webhook.md
POST /rest/beta/webhook/{public_id}GET /rest/beta/automations/{automation_id}/webhookGET /rest/beta/workflows/{workflow_id}/webhooks
api-destination
Page: https://dev-api.sheetgo.com/rest/reference/api-destination.md
GET /rest/beta/api-destination/{public_id}HEAD /rest/beta/api-destination/{public_id}
integrations
Page: https://dev-api.sheetgo.com/rest/reference/integrations.md
GET /rest/beta/integrationsGET /rest/beta/integrations/{provider}/options
outlook
Page: https://dev-api.sheetgo.com/rest/reference/outlook.md
POST /rest/beta/outlook/messages/batchGET /rest/beta/outlook/messagesGET /rest/beta/outlook/messages/{message_id}GET /rest/beta/outlook/messages/{message_id}/attachments/{attachment_id}POST /rest/beta/outlook/send
gmail
Page: https://dev-api.sheetgo.com/rest/reference/gmail.md
POST /rest/beta/gmail/send
files
Page: https://dev-api.sheetgo.com/rest/reference/files.md
GET /rest/beta/files/{provider}GET /rest/beta/files/{provider}/searchGET /rest/beta/files/{provider}/rootsGET /rest/beta/files/{provider}/{file_id}GET /rest/beta/files/{provider}/{file_id}/structure
bigquery
Page: https://dev-api.sheetgo.com/rest/reference/bigquery.md
GET /rest/beta/bigquery/projectsGET /rest/beta/bigquery/projects/{project}/datasetsGET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tablesGET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}POST /rest/beta/bigquery/projects/{project}/validate-query
auth
Page: https://dev-api.sheetgo.com/rest/reference/auth.md
POST /rest/auth/tokenPOST /rest/auth/refresh
Guides
- Rate Limiting: To keep the platform fast and fair, the API limits how many requests each account can make in a...
- API Key Scopes: Sheetgo API keys let apps, scripts, and AI agents act on your Sheetgo account. By default a key...
- Smart Tags: A smart tag is a
{{placeholder}}that Sheetgo replaces with a value from your data while an... - Cell References: A cell reference is a
{{Tab!Ref}}placeholder you put inside anapisource's request....
More: start page https://dev-api.sheetgo.com/rest/reference.md, everything in one file https://dev-api.sheetgo.com/rest/llms-full.txt, OpenAPI https://dev-api.sheetgo.com/rest/openapi.json.