GoRunner docs
Search or askSearch⌘K

List workflows

GET/api/embed/v1/accounts/{accountId}/workflows

Lists an account’s workflows, newest first. Never their steps.

Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. Call it from your server only.

Embed · Self-hosted with an Embed license

Parameters

Path

accountIdRequired · string

Your ID for the customer’s account: 1 to 255 bytes of UTF-8, case-sensitive. URL-encode it: it may contain /.

Query

workspaceIdOptional · string

Only this workspace, by your ID. Left out: every workspace.

statusOptional · string

draft, live or paused.

cursorOptional · string

The pagination.nextCursor of the page before. Left out: the first page.

limitOptional · integer

Rows a page, 1 to 100. The default is 50.

Status

draft: never published. live: its trigger is on. paused: published, trigger off. templateId names the template it was installed from.

The webhook address

webhookUrl is where a webhook workflow takes deliveries, once its first publish or save has made the address. To start one you installed, enable it and read this field. Only these two reads carry it, never the answer of an install, enable or disable.

It works while the workflow is live and answers 404 otherwise. It starts production runs with no other credential, so hold it as you hold your key. It stays the same across enable and disable.

Responses

Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 429 RATE_LIMITED · 503 BUSY. See Errors.

Request

GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY"  # gre_…
ACCOUNT_ID="acct-bakery"

URL="$GORUNNER/api/embed/v1/accounts/$ACCOUNT_ID/"
URL="${URL}workflows"
curl "$URL" \
  -H "Authorization: Bearer $GORUNNER_EMBED_KEY"

Response · 200 OK

json
{
  "data": [
    {
      "id": "3b1e5c2a-7d4f-4e8b-a1c6-5f2d9b0e7a31",
      "name": "New orders to Sheets",
      "description": "Adds each new order as a row.",
      "status": "live",
      "triggerType": "webhook",
      "workspace": {
        "id": null,
        "default": true
      },
      "templateId": "9c4e2a17-3d5b-4f86-b0e2-8a1c7d3f5e29",
      "createdAt": "2026-10-20T08:00:00Z",
      "updatedAt": "2026-10-25T09:00:00Z",
      "webhookUrl": "https://automations.example.com/api/webhooks/2f4c8e1a-6b3d-4f7e-9a05-c1d2e3f4a5b6"
    }
  ],
  "pagination": {
    "limit": 50,
    "nextCursor": null
  }
}
Every field

It takes no body.

Response · 200 OK

dataarray of objects
idUUID
namestring
descriptionstring
statusstring

draft: never published; live: its trigger is on; paused: published, trigger off.

One of draft, live, paused.

triggerTypestring
workspaceobject
idstring or null

The partner’s workspace id; null for the default workspace.

defaultboolean
templateIdUUID or null

The template it was installed from.

webhookUrlURL

Where this workflow takes deliveries (POST /api/webhooks/{token}): on a webhook-triggered workflow, once its first publish or save has made the address, and only in the two reads, GET .../workflows and GET .../workflows/{workflowId} (Cache-Control: no-store), never in a write’s answer, which an Idempotency-Key can keep for a day. It takes deliveries while the workflow is live and answers 404 otherwise. It starts production runs with no other credential: hold it as you hold this key. It stays the same across enable and disable, and changes only when a token rotates it (POST /api/workflows/{id}/webhook/rotate). Absent otherwise.

createdAttime
updatedAttime
paginationobject
limitinteger
nextCursorstring or null

The cursor of the next page; null on the last page. A page that comes back full can carry a cursor even when nothing follows: the next page is then empty, with null here. Keep going until it is null.