SheetgoDevelopers
HTTP + JSON

Sheetgo REST API

Create and run workflows and automations, schedule them, read forms and run results, browse connected storage, and more.

Base URL: https://dev-api.sheetgo.com/rest · Public endpoints: https://dev-api.sheetgo.com/rest/beta/… · Auth: Authorization: Bearer sg_… · 74 endpoints

Where the documentation is

On this site every endpoint is documented in full: one page per group with every parameter, request body, response and error, plus the models each page uses. Start from the endpoint index.

Live, always the latest (served by the API itself, public, no key needed):

PageBest for
Swagger UIPeople: try requests in the browser (needs JavaScript).
ReDocPeople: read the reference with the guides.
Reference · MarkdownPeople and AI: the same content as these pages, regenerated on every deploy. Add .md to any page for Markdown.
llms.txt · llms-full.txtAI agents: an index, and everything in one file (about 450 KB).
openapi.jsonCode generators and tools: the OpenAPI 3 spec.

Quickstart

With curl below. For complete Python programs (errors and retries, pagination, create and run an automation, column letters), see Python examples.

# 1. List your workflows
curl -s "https://dev-api.sheetgo.com/rest/beta/workflows/?page=1&per_page=20" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

# 2. List the automations (also called connections) of your account
curl -s "https://dev-api.sheetgo.com/rest/beta/automations/" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

# 3. Run one automation: 200 means the run was QUEUED, not finished
curl -s -X POST "https://dev-api.sheetgo.com/rest/beta/automations/AUTOMATION_ID/run" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

# 4. Poll its last run until "execution" is no longer "running"
curl -s "https://dev-api.sheetgo.com/rest/beta/automations/AUTOMATION_ID/run" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

Before you create or replace an automation, read the automations page and the models it lists: the request body has many source, processor and destination types.

Conventions

  • Lists take page (from 1) and per_page (1-100, default 50). The response's total is the number of pages, not of items.
  • Collection URLs end with a slash (/beta/workflows/, /beta/automations/). A POST without it is redirected.
  • Runs are asynchronous. POST …/run answers 200 once the run is queued. Poll GET …/run for the outcome.
  • Google Sheets are on the drive provider. File endpoints and automation sources use provider: "drive" for Google Drive and Google Sheets.
  • Columns are letters. Fields that name a column take the spreadsheet letter ("E"), not the header text. GET /beta/files/{provider}/{file_id}/structure?include=columns maps letters to headers.
  • OAuth2 (for apps acting for other Sheetgo users) is enabled on request: see the auth group and contact support. For your own scripts and agents, use an API key.
  • Placeholders. Some fields accept {{smart tags}} (values from your data) and {{Tab!A1}} cell references; see the guides.

Errors

Read the status code first, then the body. The body shape depends on the endpoint:

ShapeWhereExample
{code, detail}Most newer endpoints (automations, triggers, files, dashboards, sharing, BigQuery…). code is a stable snake_case value to branch on; some add fields such as reason.{"code": "invalid_column", "reason": "…", "detail": "…"}
{status: 0, error, detail}Outlook and Gmail endpoints.{"status": 0, "error": "invalid_limit", "detail": "…"}
{detail: [{loc, msg, type}]}422 request validation, on every endpoint. loc is the path to the bad field.{"detail": [{"loc": ["body", "name"], "msg": "Field required", "type": "missing"}]}
{code, message} with HTTP 200Older create/update/run routes (the SuccessResponse model): code: 1 means success.{"code": 1, "message": "OK"}
StatusMeaningWhat to do
401Missing, wrong or revoked API key.Check the Authorization: Bearer sg_… header.
403The key's scopes, your role on the workflow, or your plan do not allow this.Read detail; widen the key's scope or ask the workflow owner.
404The id does not exist or your account cannot see it.Check the id (and the provider for files).
409Conflicts with the current state (a limit reached, a circular trigger…).Read code/detail; do not retry unchanged.
412A required account is not connected or authorised (Outlook, OpenAI, BigQuery…).Connect or authorise it in the Sheetgo web app, then retry.
422The request failed validation, or breaks a rule (for example an invalid processor combination).Fix the field named in loc or code.
429Rate limit exceeded.Wait Retry-After seconds. See Rate Limiting.
502The storage provider (Google, Microsoft, BigQuery…) failed.Retry with backoff.

Each operation on the group pages lists the status codes it can return.

All endpoints

Grouped as in the reference. Each row links to the operation's full documentation on its group page.

Workflows & Automations

workflows22 endpoints

A workflow is an automated process that connects your spreadsheets and files and moves data between them — on a schedule or on demand — so a task that would otherwise be manual runs by itself. It is the top-level container that holds automations, forms and triggers.

MethodPathWhat it does
GET/rest/beta/workflows/Get a paginated list of workflows
POST/rest/beta/workflows/Create a new workflow
POST/rest/beta/workflows/run/{id}(Obsolete) Use /workflows/<id>/run instead (deprecated)
GET/rest/beta/workflows/{id}Get a single workflow
PATCH/rest/beta/workflows/{id}Update an existing workflow
DELETE/rest/beta/workflows/{id}Archive a workflow
POST/rest/beta/workflows/{id}/change-ownerTransfer workflow ownership
GET/rest/beta/workflows/{id}/collaboratorsList a workflow's collaborators
POST/rest/beta/workflows/{id}/collaboratorsAdd collaborators to a workflow
DELETE/rest/beta/workflows/{id}/collaboratorsRemove all collaborators from a workflow
PATCH/rest/beta/workflows/{id}/collaborators/{email}Change a collaborator's role
DELETE/rest/beta/workflows/{id}/collaborators/{email}Remove a collaborator
GET/rest/beta/workflows/{id}/destinationsGet file destinations of all automations in a workflow
GET/rest/beta/workflows/{id}/filesGet file sources and destinations of all automations in a workflow
GET/rest/beta/workflows/{id}/general-accessGet a workflow's general (domain/team) access
PUT/rest/beta/workflows/{id}/general-accessSet a workflow's general (domain/team) access
DELETE/rest/beta/workflows/{id}/general-accessRevoke a workflow's general (domain/team) access
POST/rest/beta/workflows/{id}/leaveLeave a shared workflow
POST/rest/beta/workflows/{id}/request-accessAsk a workflow's owner for access
GET/rest/beta/workflows/{id}/runGet a workflow's last-run status
POST/rest/beta/workflows/{id}/runRun a single workflow
GET/rest/beta/workflows/{id}/sourcesGet file sources of all automations in a workflow
automations12 endpoints

An automation (also called a connection) is a single data transfer inside a workflow: it pulls data from one or more sources, optionally consolidates, filters or merges it, and writes the result to one or more destinations — all without manual copy-paste.

MethodPathWhat it does
GET/rest/beta/automations/Get a paginated list of automations
POST/rest/beta/automations/Create a new automation
POST/rest/beta/automations/run/{id}(Obsolete) Use /automations/<id>/run instead (deprecated)
GET/rest/beta/automations/{id}Get a single automation
PUT/rest/beta/automations/{id}Replace an existing automation entirely
PATCH/rest/beta/automations/{id}Rename an automation
DELETE/rest/beta/automations/{id}Archive an automation
GET/rest/beta/automations/{id}/destinationsGet file destinations of an automation
GET/rest/beta/automations/{id}/filesGet file sources and destinations of an automation
GET/rest/beta/automations/{id}/runGet an automation's last-run status
POST/rest/beta/automations/{id}/runRun an automation
GET/rest/beta/automations/{id}/sourcesGet file sources of an automation
triggers3 endpoints

A trigger defines what makes a workflow run automatically, so you set it once instead of running the workflow by hand. A trigger can be a recurring schedule (e.g. every 15 minutes, or every weekday at 09:00) or the completion of another workflow (chaining one run after another). Each workflow has at most one active trigger.

MethodPathWhat it does
GET/rest/beta/workflows/{id}/triggerGet a workflow's automation trigger
PUT/rest/beta/workflows/{id}/triggerSet or replace a workflow's automation trigger
DELETE/rest/beta/workflows/{id}/triggerTurn off a workflow's automation trigger
dashboards5 endpoints

Dashboards turn a workflow's data into shareable visual summaries. Each workflow has a single dashboard; add indicator, table and chart-reference elements to it, read an element's live values, and publish the dashboard to get a viewer URL.

MethodPathWhat it does
GET/rest/beta/workflows/{id}/dashboardGet a workflow's dashboard
POST/rest/beta/workflows/{id}/dashboard/elementsAdd elements to a workflow's dashboard
DELETE/rest/beta/workflows/{id}/dashboard/elements/{element_id}Delete one dashboard element
GET/rest/beta/workflows/{id}/dashboard/elements/{element_id}/dataRead one dashboard element's current values
PUT/rest/beta/workflows/{id}/dashboard/publishPublish or unpublish a workflow's dashboard

Forms & Integrations

forms7 endpoints

A Sheetgo form collects data straight into a workflow. Its fields come from your spreadsheet's columns, and every submission is appended as a new row — a simple way to feed a workflow from people instead of another system.

MethodPathWhat it does
GET/rest/beta/workflows/{workflow_id}/forms/Get a paginated list of forms
POST/rest/beta/workflows/{workflow_id}/forms/Create a new form
GET/rest/beta/workflows/{workflow_id}/forms/{form_id}Get a form
PATCH/rest/beta/workflows/{workflow_id}/forms/{form_id}Update an existing form
DELETE/rest/beta/workflows/{workflow_id}/forms/{form_id}Delete a form
GET/rest/beta/workflows/{workflow_id}/forms/{form_id}/responsesGet a form's responses (paginated)
HEAD/rest/beta/workflows/{workflow_id}/forms/{form_id}/responsesInspect a form's responses metadata without downloading them
webhook3 endpoints

A webhook is a private URL that lets external systems push data into a workflow over HTTP. Your app sends a JSON payload and Sheetgo lands it in the workflow — optionally triggering a full run — with no Google APIs or OAuth to manage on your side.

MethodPathWhat it does
GET/rest/beta/automations/{automation_id}/webhookRetrieve an automation's webhook
POST/rest/beta/webhook/{public_id}Push values to a webhook and trigger its bound automation
GET/rest/beta/workflows/{workflow_id}/webhooksList a workflow's webhooks
api-destination2 endpoints

API as a destination turns a workflow's output into a live, read-only JSON feed at a private URL. Each workflow run refreshes the data; consumers fetch it on demand with an API key, with pagination, sorting and conditional (ETag) requests.

MethodPathWhat it does
GET/rest/beta/api-destination/{public_id}Read data from an API-as-Destination endpoint
HEAD/rest/beta/api-destination/{public_id}Inspect API-as-Destination metadata without downloading data
integrations2 endpoints

Integrations are pre-configured sources for third-party services — currently Shopify and QuickBooks. Instead of describing an HTTP request yourself, you pick a data source from a menu and Sheetgo supplies the URL, credentials, pagination and response parsing for the account you authorized.

MethodPathWhat it does
GET/rest/beta/integrationsList integrations and connected accounts
GET/rest/beta/integrations/{provider}/optionsList a provider's data sources
outlook5 endpoints

Integration endpoints used by the Sheetgo add-in for Microsoft Outlook to connect mailbox data to workflows.

MethodPathWhat it does
GET/rest/beta/outlook/messagesList Messages
POST/rest/beta/outlook/messages/batchBatch Messages
GET/rest/beta/outlook/messages/{message_id}Get Message
GET/rest/beta/outlook/messages/{message_id}/attachments/{attachment_id}Get Attachment
POST/rest/beta/outlook/sendSend
gmail1 endpoint

Send email through a connected Google account.

MethodPathWhat it does
POST/rest/beta/gmail/sendSend

Storage

files5 endpoints

Browse and search the storage providers connected to your account — Google Drive, OneDrive, SharePoint and Dropbox — to find the ids you need when building an automation.

MethodPathWhat it does
GET/rest/beta/files/{provider}Browse a folder
GET/rest/beta/files/{provider}/rootsList browsable entry points
GET/rest/beta/files/{provider}/searchSearch files and folders by name
GET/rest/beta/files/{provider}/{file_id}Get one file or folder
GET/rest/beta/files/{provider}/{file_id}/structureDescribe what is inside a file
bigquery5 endpoints

BigQuery can be both a source and a destination for an automation: read a table or a query's results into a spreadsheet, or load a spreadsheet's rows into a BigQuery table.

MethodPathWhat it does
GET/rest/beta/bigquery/projectsList BigQuery projects
GET/rest/beta/bigquery/projects/{project}/datasetsList a project's datasets
GET/rest/beta/bigquery/projects/{project}/datasets/{dataset}/tablesList a dataset's tables
GET/rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}Read one table's schema
POST/rest/beta/bigquery/projects/{project}/validate-queryValidate a query without running it

Authentication

auth2 endpoints

OAuth2 authorization endpoints — exchange a Client ID / Client Secret for an access token, for developer and customer integrations. For most use cases an API key generated on your Account page is simpler (see Authentication above).

Guides

GuideWhat it covers
Rate LimitingTo keep the platform fast and fair, the API limits how many requests each account can make in a short window. If you exceed the limit, further requests are temporarily rejected with HTTP 429 (Too Many Requests) until the window resets. Rate limits protect you too — they stop a runaway script from exhausting your account's capacity.
API Key ScopesSheetgo API keys let apps, scripts, and AI agents act on your Sheetgo account. By default a key can do everything you can — read, edit, run, and delete any workflow, automation, form, and more.
Smart TagsA smart tag is a {{placeholder}} that Sheetgo replaces with a value from your data while an automation runs. They are used by the document destination — both inside the Google Docs template and in the destination's file_name.
Cell ReferencesA cell reference is a {{Tab!Ref}} placeholder you put inside an api source's request. When the automation runs, Sheetgo reads that cell from the automation's Google Sheets destination and substitutes the value before the request goes out — so the request changes as your sheet changes, with no API call needed.