GoliathDevelopersGet an API key
Reference/Workflowsgenerated from the gateway manifest

listWorkflowPerformance

Scoreboard.

POST/api/v1/callREADreadruns as the key's owner
View as Markdown

Scoreboard: the org's workflows (paginated, non-archived) each with headline stats: total/active/completed runs, reply rate, and last-run time. One call to answer "which of my automations are running and how are they doing". Drill into any with getWorkflowStats. Each row carries channelsAcrossVersions: the channels the workflow messages on (TEXT, EMAIL, both, or [] when it messages nobody; never null), the same answer the app's Channel filter gives, so read it to PICK workflows out of a list. It spans EVERY version not deleted: the published one, the ones it superseded and an unpublished draft. getWorkflow.channels reads ONE: the most recently PUBLISHED version whatever its status (active, paused or suspended), else the pending draft. NEITHER says it is SENDING: a paused or suspended head keeps its configured channels while sending nothing. Read status for that.

curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "listWorkflowPerformance",
    "variables": {}
  }'
import { GoliathClient } from '@goliath-data/sdk'

const goliath = new GoliathClient({
  apiKey: process.env.GOLIATH_API_KEY!,
  baseUrl: 'https://server.goliathdata.com',
})

const result = await goliath.workflows.listWorkflowPerformance({})
const res = await fetch('https://server.goliathdata.com/api/v1/call', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.GOLIATH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    operationId: 'listWorkflowPerformance',
    variables: {}
  }),
})
const { data, errors } = await res.json()

limit is clamped to 50.

Variables

The example sends only what the schema requires. Some operations also need one of several optional variables (one filter or another, say); the description above says which.

limitInt

Default 20.

offsetInt

Default 0.

Response

What comes back under data: a list shows as one entry, and a value as its type.

response shape
{
  "data": {
    "workflowAutomationsQuery": {
      "workflowGroupsPage": {
        "items": [
          {
            "id": "<ID>",
            "name": "…",
            "status": "DRAFT",
            "channelsAcrossVersions": [
              "TEXT"
            ],
            "workflowDomain": "PROPERTY",
            "stats": {
              "totalRuns": 0,
              "activeRuns": 0,
              "completedRuns": 0,
              "replyRate": 0,
              "lastRunAt": "2026-01-01T00:00:00.000Z"
            }
          }
        ],
        "total": 0
      }
    }
  }
}

Errors

Behaviour

A read. It rejects an Idempotency-Key header with 400 bad_request.