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.
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. Requests and responses are JSON.
Paths: every path in these docs is complete. Append it to the base URL exactly as shown, for example GET /rest/beta/workflows/ is a GET to the base URL followed by /rest/beta/workflows/. The segment after /rest/ is the API version (today beta). It is part of the path and cannot be left out: /rest/workflows/ does not exist. A later version will have its own segment (for example /rest/v1/); always use the path shown for the endpoint. Only the OAuth routes (/rest/auth/...) have no version segment.
The start page lists every endpoint and links to the page that documents it. It is a summary, not the full reference.
Raw OpenAPI: https://dev-api.sheetgo.com/rest/openapi.json.
See also the Sheetgo developer portal, https://testing-developers.sheetgo.com: the MCP server (Sheetgo tools for AI assistants) and complete Python examples. For this API's endpoints, fields and models, these pages are the reference; if the two differ, follow these pages.
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.
page and per_page and answer {"page", "per_page", "total", "results"}. total is the number of pages, not the number of rows.422 with {"detail": [{"loc", "msg", "type"}]}. Most other client errors answer {"code": "<stable_code>", "detail": "<text>"}, sometimes with a reason; branch on code, not on the text.X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. A 429 carries Retry-After (seconds); wait that long before retrying. See Rate Limiting.A, B, ...), not a header name. A header name answers 422 invalid_column. To map letters to headers call GET /rest/beta/files/{provider}/{file_id}/structure?include=columns.POST .../run answers 200 when the run is enqueued. Poll GET .../run until execution is not running.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 the id of one. The envelope's total counts 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.
Page: https://dev-api.sheetgo.com/rest/reference/workflows.md
POST /rest/beta/workflows/run/{id} (deprecated): (Obsolete) Use POST /rest/beta/workflows/{id}/run insteadGET /rest/beta/workflows/{id}/run: Get a workflow's last-run statusPOST /rest/beta/workflows/{id}/run: Run a single workflowGET /rest/beta/workflows/{id}/files: Get file sources and destinations of all automations in a workflowGET /rest/beta/workflows/{id}/sources: Get file sources of all automations in a workflowGET /rest/beta/workflows/{id}/destinations: Get file destinations of all automations in a workflowGET /rest/beta/workflows/{id}: Get a single workflowPATCH /rest/beta/workflows/{id}: Update an existing workflowDELETE /rest/beta/workflows/{id}: Archive a workflowGET /rest/beta/workflows/: Get a paginated list of workflowsPOST /rest/beta/workflows/: Create a new workflowGET /rest/beta/workflows/{id}/collaborators: List a workflow's collaboratorsPOST /rest/beta/workflows/{id}/collaborators: Add collaborators to a workflowDELETE /rest/beta/workflows/{id}/collaborators: Remove all collaborators from a workflowPATCH /rest/beta/workflows/{id}/collaborators/{email}: Change a collaborator's roleDELETE /rest/beta/workflows/{id}/collaborators/{email}: Remove a collaboratorGET /rest/beta/workflows/{id}/general-access: Get a workflow's general (domain/team) accessPUT /rest/beta/workflows/{id}/general-access: Set a workflow's general (domain/team) accessDELETE /rest/beta/workflows/{id}/general-access: Revoke a workflow's general (domain/team) accessPOST /rest/beta/workflows/{id}/leave: Leave a shared workflowPOST /rest/beta/workflows/{id}/request-access: Ask a workflow's owner for accessPOST /rest/beta/workflows/{id}/change-owner: Transfer workflow ownershipPage: https://dev-api.sheetgo.com/rest/reference/automations.md
POST /rest/beta/automations/run/{id} (deprecated): (Obsolete) Use POST /rest/beta/automations/{id}/run insteadGET /rest/beta/automations/{id}/run: Get an automation's last-run statusPOST /rest/beta/automations/{id}/run: Run an automationGET /rest/beta/automations/{id}/files: Get file sources and destinations of an automationGET /rest/beta/automations/{id}/sources: Get file sources of an automationGET /rest/beta/automations/{id}/destinations: Get file destinations of an automationGET /rest/beta/automations/{id}: Get a single automationPUT /rest/beta/automations/{id}: Replace an existing automation entirelyPATCH /rest/beta/automations/{id}: Rename an automationDELETE /rest/beta/automations/{id}: Archive an automationGET /rest/beta/automations/: Get a paginated list of automationsPOST /rest/beta/automations/: Create a new automationPage: https://dev-api.sheetgo.com/rest/reference/triggers.md
GET /rest/beta/workflows/{id}/trigger: Get a workflow's automation triggerPUT /rest/beta/workflows/{id}/trigger: Set or replace a workflow's automation triggerDELETE /rest/beta/workflows/{id}/trigger: Turn off a workflow's automation triggerPage: https://dev-api.sheetgo.com/rest/reference/dashboards.md
GET /rest/beta/workflows/{id}/dashboard: Get a workflow's dashboardGET /rest/beta/workflows/{id}/dashboard/elements/{element_id}/data: Read one dashboard element's current valuesPOST /rest/beta/workflows/{id}/dashboard/elements: Add elements to a workflow's dashboardDELETE /rest/beta/workflows/{id}/dashboard/elements/{element_id}: Delete one dashboard elementPUT /rest/beta/workflows/{id}/dashboard/publish: Publish or unpublish a workflow's dashboardPage: https://dev-api.sheetgo.com/rest/reference/forms.md
GET /rest/beta/workflows/{workflow_id}/forms/{form_id}: Get a formPATCH /rest/beta/workflows/{workflow_id}/forms/{form_id}: Update an existing formDELETE /rest/beta/workflows/{workflow_id}/forms/{form_id}: Delete a formGET /rest/beta/workflows/{workflow_id}/forms/{form_id}/responses: Get a form's responses (paginated)HEAD /rest/beta/workflows/{workflow_id}/forms/{form_id}/responses: Inspect a form's responses metadata without downloading themGET /rest/beta/workflows/{workflow_id}/forms/: Get a paginated list of formsPOST /rest/beta/workflows/{workflow_id}/forms/: Create a new formPage: https://dev-api.sheetgo.com/rest/reference/webhook.md
POST /rest/beta/webhook/{public_id}: Push values to a webhook and trigger its bound automationGET /rest/beta/automations/{automation_id}/webhook: Retrieve an automation's webhookGET /rest/beta/workflows/{workflow_id}/webhooks: List a workflow's webhooksPage: https://dev-api.sheetgo.com/rest/reference/api-destination.md
GET /rest/beta/api-destination/{public_id}: Read data from an API-as-Destination endpointHEAD /rest/beta/api-destination/{public_id}: Inspect API-as-Destination metadata without downloading dataPage: https://dev-api.sheetgo.com/rest/reference/integrations.md
GET /rest/beta/integrations: List integrations and connected accountsGET /rest/beta/integrations/{provider}/options: List a provider's data sourcesPage: https://dev-api.sheetgo.com/rest/reference/outlook.md
POST /rest/beta/outlook/messages/batch: Batch MessagesGET /rest/beta/outlook/messages: List MessagesGET /rest/beta/outlook/messages/{message_id}: Get MessageGET /rest/beta/outlook/messages/{message_id}/attachments/{attachment_id}: Get AttachmentPOST /rest/beta/outlook/send: SendPage: https://dev-api.sheetgo.com/rest/reference/gmail.md
Page: https://dev-api.sheetgo.com/rest/reference/files.md
GET /rest/beta/files/{provider}: Browse a folderGET /rest/beta/files/{provider}/search: Search files and folders by nameGET /rest/beta/files/{provider}/roots: List browsable entry pointsGET /rest/beta/files/{provider}/{file_id}: Get one file or folderGET /rest/beta/files/{provider}/{file_id}/structure: Describe what is inside a filePage: https://dev-api.sheetgo.com/rest/reference/bigquery.md
GET /rest/beta/bigquery/projects: List BigQuery projectsGET /rest/beta/bigquery/projects/{project}/datasets: List a project's datasetsGET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables: List a dataset's tablesGET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}: Read one table's schemaPOST /rest/beta/bigquery/projects/{project}/validate-query: Validate a query without running itPage: https://dev-api.sheetgo.com/rest/reference/auth.md
POST /rest/auth/token: Exchange authentication code for a access token and a refresh tokenPOST /rest/auth/refresh: Creates a new access token from a refresh token{{placeholder}} that Sheetgo replaces with a value from your data while an...{{Tab!Ref}} placeholder you put inside an api source's request....Model pages describe request and response bodies field by field. Fetch the one an endpoint links to.
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.