GoRunner

List published versions, newest first

Requires scope workflow:read
GET
/api/workflows/{id}/versions

A version is a snapshot minted by POST /api/workflows/{id}/publish. Publishing an unchanged definition mints nothing, so consecutive publishes of identical bytes appear once.

definition is omitted from every row in this list — it is several KB per row that the panel never reads. Fetch GET /api/workflows/{id}/versions/{versionId} for the snapshot itself.

changeMessage is a server-computed summary of what changed against the previous version ("Added Log it · Edited Fetch customers"), keyed on step NAME so a reorder does not read as add-plus-remove.

onCanvas marks the AT MOST ONE version whose snapshot equals the current draft — the answer to "which version is my canvas holding?". It is resolved across the whole history, not per row, so several byte-identical snapshots still produce exactly one marked row. Which version is LIVE is a different question: that is the workflow's latestVersionId.

An empty page returns data: [].

Authorization

bearerAuth
AuthorizationBearer <token>

An API token: Authorization: Bearer grt_…. Mint one in the app under Settings → Workspace → API tokens; the raw value is shown once. Scopes confine the token — see x-permission on each operation.

In: header

Path Parameters

id*string

Workflow id (UUID).

Formatuuid

Query Parameters

page?integer

1-based page number. Values below 1 are clamped to 1.

Range1 <= value
Default1
limit?integer

Rows per page. Anything below 1 or above 100 falls back to 20.

Range1 <= value <= 100
Default20

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/workflows/497f6eca-6276-4993-bfeb-53cbbbba6f08/versions"
{  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "workflowId": "43c4fa9b-0cbc-4b57-a121-9d7d46a3eaa4",      "versionNumber": 0,      "definition": {        "schemaVersion": 2,        "trigger": {          "name": "string",          "displayName": "string",          "type": "manual",          "pieceId": "string",          "pieceVersion": "string",          "actionId": "string",          "config": {},          "connectionId": "string",          "valid": true,          "nextAction": {            "name": "string",            "displayName": "string",            "type": "PIECE",            "pieceId": "string",            "pieceVersion": "string",            "actionId": "string",            "config": {},            "connectionId": "string",            "valid": true,            "skip": true,            "nextAction": {},            "branches": [              {                "name": "string",                "conditions": [                  [                    {                      "field": "string",                      "operator": "string",                      "value": null                    }                  ]                ],                "firstAction": {}              }            ],            "firstLoopAction": {},            "onErrorAction": {}          }        },        "settings": {          "timeoutSeconds": 0,          "errorWorkflowId": "string",          "concurrencyLimit": 0,          "maintenanceMode": true,          "autoPublishFixes": true        },        "variables": {},        "annotations": null,        "pinnedData": {}      },      "publishedBy": "cbfccdb4-87bb-4311-ae53-25484c11300e",      "changeMessage": "string",      "createdAt": "2019-08-24T14:15:22Z",      "onCanvas": true    }  ],  "pagination": {    "page": 0,    "limit": 0,    "total": 0,    "totalPages": 0  }}