List workflows in the active workspace
workflow:readReturns a page of workflows for the workspace the API token belongs to. Every row carries its full definition (the DRAFT tree), which makes this response large — a workspace of real flows is measured in hundreds of kilobytes. webhookToken is NEVER present on a list row (the column is not selected at all), so never read a webhook URL from here; use GET /api/workflows/{id} with workflow:run. hasUnpublishedChanges is likewise always false on a list row — it is only computed on the single-workflow read. Asking for a page past the end returns data: [] with the pagination block still filled in.
Authorization
bearerAuth 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
Query Parameters
1-based page number. Values below 1 (and non-numeric values) are silently coerced to 1.
1 <= value1Rows per page. Anything outside 1..100 (including a non-numeric value) is silently coerced to 20.
1 <= value <= 10020Case-insensitive substring match against the workflow NAME or DESCRIPTION only — it does not search step names, tags or piece ids. % and _ are escaped, so they match as literal characters.
Filter by publication state. An unrecognised value is ignored rather than rejected (you get the unfiltered list, not a 400).
Value in
- "draft"
- "active"
- "paused"
Keep only workflows whose MOST RECENT run ended in this state — a health filter, not "has ever had such a run". An unrecognised value is ignored rather than rejected.
Value in
- "completed"
- "failed"
- "running"
- "pending"
- "cancelled"
- "paused"
Keep only workflows carrying this exact tag. Matching is case-SENSITIVE and exact (no substring); one tag per request — there is no multi-tag form. Discover legal values with GET /api/workflows/tags.
Folder id to scope to, or the literal string none for workflows in no folder. Unlike the other filters this one is validated: anything that is neither a UUID nor none returns 400 VALIDATION_ERROR.
name = name A–Z; status = paused first, then active, then drafts, each by name. Omitted or unrecognised = most recently updated first.
Value in
- "name"
- "status"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workflows"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "description": "string", "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": "text_eq", "value": null } ] ], "firstAction": {} } ], "firstLoopAction": {}, "onErrorAction": {} } }, "settings": { "timeoutSeconds": 0, "errorWorkflowId": "51d8ee47-3646-4ae6-bc48-c85415c9166a", "concurrencyLimit": 0, "maintenanceMode": true, "autoPublishFixes": true }, "annotations": null, "variables": {}, "pinnedData": {} }, "status": "draft", "triggerType": "manual", "cronExpression": "string", "webhookToken": "string", "latestVersionId": "750445c5-7ad9-40bd-a593-bb37d7d846db", "definitionRev": 0, "hasUnpublishedChanges": true, "folderId": "5b6379a4-2a6c-4085-b184-45838a3b8e7e", "tags": [ "string" ], "testPayloads": {}, "pinnedData": {}, "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "orgId": "25b2c2d5-a7fc-47d0-89e4-8709a1560bfa", "createdBy": "25a02396-1048-48f9-bf93-102d2fb7895e", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "lastRun": { "status": "pending", "startedAt": "2019-08-24T14:15:22Z" } } ], "pagination": { "page": 0, "limit": 0, "total": 0, "totalPages": 0 }}