SheetgoDevelopers

Developers › REST API › Forms & Integrations

REST API · 2 endpoints

api-destination

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://dev-api.sheetgo.com; send Authorization: Bearer sg_…. Latest version: https://dev-api.sheetgo.com/rest/reference/api-destination (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: api.html#api-errors.

Python recipes. API client helper.

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.

Use these endpoints to read the published data (GET) or inspect its metadata without downloading it (HEAD).

filter is reserved and does not work yet. The GET endpoint accepts a filter query parameter, but it is a placeholder for a future version: the value is ignored and the full, unfiltered dataset is returned, with no error and no warning. It exists so a future filter-aware client can call today's server without failing outright. Until filtering ships, narrow the data in the automation itself or filter client-side — never rely on filter to scope what a caller receives.

Operations

GET/rest/beta/api-destination/{public_id}Read data from an API-as-Destination endpoint

Reads the rows a workflow published through its api destination. Each workflow run refreshes the data; this endpoint serves whatever the last run produced.

Supports pagination (page, page_size), sorting (order_by, direction), a single-tab filter (tab) and two output shapes (format). Responses carry ETag and Last-Modified, so a conditional request with If-None-Match gets a 304 and no body — use it when polling.

Before the workflow's first run the endpoint exists but has no data, and answers 200 with an empty result rather than a 404.

Requires an API key with both the automations and api-destination scopes.

Parameters
NameInTypeDescription
public_idpathstringrequiredThe destination's public identifier, returned when the automation's api destination was created. It is stable across updates to the automation.
formatquerystringoptionalResponse format: 'dict' or 'array'
Default: "dict"
pagequeryintegeroptionalPage number (1-based)
Default: 1 · Min: 1
page_sizequeryintegeroptionalRows per page (1–1000; > 1000 is clamped to 1000)
Default: 100
order_byquerystringoptionalColumn name to sort by
directionqueryone of "asc", "desc"optionalSort direction
Default: "asc"
filterquerystringoptionalReserved for a future version — NOT IMPLEMENTED today. The parameter is accepted so that a future filter-aware client can call this endpoint without a hard failure, but it has no effect: the value is ignored and the full, unfiltered dataset is returned. Do not use it to scope a response — filter client-side, or narrow the data in the automation itself. This description will change when filtering ships.
tabquerystringoptionalReturn only this source tab (by name); omit for all tabs
Responses
StatusMeaningBody
200Data served (or empty-state pre-publish)any
304Not modified — ETag or Last-Modified matched—
400Invalid query params—
401Auth failed—
404Destination missing / deleted / unbound—
422Validation ErrorHTTPValidationError
500Internal error—
Example request
curl -s -X GET "https://dev-api.sheetgo.com/rest/beta/api-destination/PUBLIC_ID" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
HEAD/rest/beta/api-destination/{public_id}Inspect API-as-Destination metadata without downloading data

Same as the GET, but returns headers only — use it to check whether the data changed before paying for the body.

Carries the same ETag and Last-Modified as the GET, plus X-Sheetgo-* headers describing the row count and columns.

Parameters
NameInTypeDescription
public_idpathstringrequiredThe destination's public identifier, returned when the automation's api destination was created. It is stable across updates to the automation.
Responses
StatusMeaningBody
200Headers populated (or empty-state if pre-publish)any
401Auth failed—
404Destination missing / deleted / unbound—
422Validation ErrorHTTPValidationError
500Internal error—
Example request
curl -s -X HEAD "https://dev-api.sheetgo.com/rest/beta/api-destination/PUBLIC_ID" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

Models used on this page

Every request and response model referenced above, including nested ones (2). The full catalogue is on api-models.html.

HTTPValidationError

FieldTypeDescription
detailarray of ValidationErroroptional

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, 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

ValidationError

FieldTypeDescription
locarray of string or integerrequired
msgstringrequired
typestringrequired