Developers › REST API › Workflows & Automations
REST API · 5 endpoints
Dashboards
Complete for this group. Each operation below lists its parameters, request body, responses and errors. Every model they use is documented under Models used on this page, so you do not need another page to build a request. Base URL https://api.sheetgo.com; paths are complete, version included (/rest/beta/…): append them to the base URL exactly as shown; send Authorization: Bearer sg_…. Also in the API's own docs: https://api.sheetgo.com/rest/reference/dashboards (Markdown).
Conventions for every endpoint. Lists take page (from 1) and per_page (1-100, default 50), and total counts pages, not items. Collection URLs end with /. POST …/run returns 200 when the run is queued; poll GET …/run. Google Sheets use provider: "drive"; column fields take letters ("E"). Error bodies and status codes: REST API › Errors.
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.
Elements point at a spreadsheet's tabs and charts by id — get those from GET /rest/beta/files/{provider}/{file_id}/structure. Google Sheets on Google Drive only.
Models used on this page
Every request and response model referenced above, including nested ones (8). The full catalogue is on the Models page.
AuthConfigIn
Access restriction. Only domain restriction is exposed.
specificUsers is deliberately absent: the internal PUT emails every
address in it via SendGrid (dashboard/models.py:190), which would let an
API key mail arbitrary recipients.
| Field | Type | | Description |
|---|
domain | boolean | required | Restrict to the workflow owner's email domain |
Used by: PUT /rest/beta/workflows/{id}/dashboard/publish
DashboardOut
A workflow's single dashboard: its elements and its publication state.
| Field | Type | | Description |
|---|
elements | array of ElementOut | optional | Every element on the dashboard, in stored order. Empty for a workflow whose dashboard has not been built yet. |
publish | PublishOut | required | Whether the dashboard is published, and under what access restrictions. |
Used by: GET /rest/beta/workflows/{id}/dashboard
ElementDataOut
One element's current values.
page/per_page/total are populated for table only; the other types
have nothing to paginate.
| Field | Type | | Description |
|---|
data | any | optional | The element's current values, read live from the spreadsheet. A single value for indicator, a list of rows for table, and the chart's image or reference for chart. |
id | string | required | Id of the element these values belong to. |
page | integer | nullable | Current page of rows, 1-based. Populated for table only. |
per_page | integer | nullable | Rows per page in this response. Populated for table only. |
total | integer | nullable | Total rows, for table elements |
type | ElementType | required | The element's kind, which determines the shape of data. |
Used by: GET /rest/beta/workflows/{id}/dashboard/elements/{element_id}/data
ElementOut
One stored element, in public vocabulary.
| Field | Type | | Description |
|---|
added_by | string | nullable | Email of the user who added the element. |
added_on | string | nullable | When the element was added, ISO 8601. |
chart_id | integer | nullable | Numeric id of the referenced chart. Set for chart elements only; get it from GET /rest/beta/files/{provider}/{file_id}/structure. |
error | string | nullable | Stored render error, when one was persisted. Usually null even for a broken element: errors are written during a build and not saved (workflow/controller.py:759). Read the element's /data to be sure. |
file_id | string | nullable | Id of the Google Sheets file the element reads from. |
id | string | required | Element id. Use it for delete and data reads. |
range | string | nullable | A1 range the element reads, without the tab name (for example B2:D50). Set for indicator and table; null for chart. |
stored_role | string | nullable | Internal role, echoed when type is other |
stored_type | string | nullable | Internal type, echoed when type is other |
tab_id | integer | nullable | Numeric id of the tab the element reads from. Null for chart elements, which point at a chart rather than a tab. |
tab_name | string | nullable | Name of that tab at the time the element was stored. Null for chart elements. Renaming the tab does not update this. |
title | string | nullable | Label shown above the element on the dashboard. |
type | ElementType | required | Element kind: indicator (a single value), table (a range of rows) or chart (a reference to a chart already in the spreadsheet). other means an element the web app created that this API does not model — see stored_type. |
Used by: POST /rest/beta/workflows/{id}/dashboard/elements
ElementType
Type: one of "indicator", "table", "chart", "other"
Used by: POST /rest/beta/workflows/{id}/dashboard/elements
HTTPValidationError
Used by: GET /rest/beta/workflows/, POST /rest/beta/workflows/, POST /rest/beta/workflows/run/{id}, GET /rest/beta/workflows/{id}, PATCH /rest/beta/workflows/{id}, DELETE /rest/beta/workflows/{id}, GET /rest/beta/workflows/{id}/collaborators, POST /rest/beta/workflows/{id}/collaborators, DELETE /rest/beta/workflows/{id}/collaborators, PATCH /rest/beta/workflows/{id}/collaborators/{email}, DELETE /rest/beta/workflows/{id}/collaborators/{email}, GET /rest/beta/workflows/{id}/destinations, GET /rest/beta/workflows/{id}/files, GET /rest/beta/workflows/{id}/general-access, PUT /rest/beta/workflows/{id}/general-access, DELETE /rest/beta/workflows/{id}/general-access, POST /rest/beta/workflows/{id}/leave, POST /rest/beta/workflows/{id}/request-access, GET /rest/beta/workflows/{id}/run, POST /rest/beta/workflows/{id}/run, GET /rest/beta/workflows/{id}/sources, GET /rest/beta/automations/, POST /rest/beta/automations/run/{id}, GET /rest/beta/automations/{id}, DELETE /rest/beta/automations/{id}, GET /rest/beta/automations/{id}/destinations, GET /rest/beta/automations/{id}/files, GET /rest/beta/automations/{id}/run, POST /rest/beta/automations/{id}/run, GET /rest/beta/automations/{id}/sources, GET /rest/beta/workflows/{id}/trigger, DELETE /rest/beta/workflows/{id}/trigger, GET /rest/beta/workflows/{id}/dashboard, DELETE /rest/beta/workflows/{id}/dashboard/elements/{element_id}, GET /rest/beta/workflows/{id}/dashboard/elements/{element_id}/data, PUT /rest/beta/workflows/{id}/dashboard/publish, GET /rest/beta/workflows/{workflow_id}/forms/, POST /rest/beta/workflows/{workflow_id}/forms/, 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}/responses, HEAD /rest/beta/workflows/{workflow_id}/forms/{form_id}/responses, GET /rest/beta/automations/{automation_id}/webhook, GET /rest/beta/workflows/{workflow_id}/webhooks, GET /rest/beta/api-destination/{public_id}, HEAD /rest/beta/api-destination/{public_id}, GET /rest/beta/integrations/{provider}/options, GET /rest/beta/outlook/messages, POST /rest/beta/outlook/messages/batch, GET /rest/beta/outlook/messages/{message_id}, GET /rest/beta/outlook/messages/{message_id}/attachments/{attachment_id}, POST /rest/beta/outlook/send, GET /rest/beta/gmail/messages, POST /rest/beta/gmail/messages/batch, GET /rest/beta/gmail/messages/{message_id}, GET /rest/beta/gmail/messages/{message_id}/attachments/{attachment_id}, POST /rest/beta/gmail/send, GET /rest/beta/files/{provider}, GET /rest/beta/files/{provider}/roots, GET /rest/beta/files/{provider}/search, GET /rest/beta/files/{provider}/{file_id}, GET /rest/beta/bigquery/projects, GET /rest/beta/bigquery/projects/{project}/datasets, GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables, GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}, POST /rest/beta/bigquery/projects/{project}/validate-query, POST /rest/auth/refresh, POST /rest/auth/token
PublishOut
The dashboard's current publication state.
| Field | Type | | Description |
|---|
auth_config | object | nullable | The access restriction applied when require_auth is true — {"domain": true} limits viewers to the owner's email domain. Null when unrestricted. |
public_id | string | nullable | Stable public identifier minted at first publish; it forms the url. Null until the dashboard has been published once. |
require_auth | boolean | optional | Whether a viewer must be signed in to open the dashboard. Only meaningful while shared is public. Default: false |
shared | string | required | public if the dashboard is published and reachable at url, private if it is not. |
url | string | nullable | Viewer URL; null while private and never published |
Used by: PUT /rest/beta/workflows/{id}/dashboard/publish
ValidationError
| Field | Type | | Description |
|---|
loc | array of string or integer | required | |
msg | string | required | |
type | string | required | |