Graine AI
API referenceWorkflows

List a workflow's runs

Its runs, newest first.

Its runs, newest first.

Rate limit: 2000 requests per minute per organization, counted together with every endpoint that has no stricter limit of its own. Exceeding it returns 429 with Retry-After; the X-RateLimit-* response headers report your remaining allowance on every call.

GET
/v2/workflows/{workflow_id}/runs
/v2/workflows/owf_8a1d4e7c2b90f1a2b3c4d5e6/runs?page=1&page_size=20

The Authorization access token

Authorization

Authorization
Required
Bearer <token>

Your Graine API key. Create one in the dashboard under Developers, or via POST /v2/api-keys. Send it as Authorization: Bearer <key>.

In: header

Path Parameters

workflow_id
Required
Workflow Id

The workflow's id.

Query Parameters

pagePage

1-indexed page number (max 10000 — narrow the window instead)

Default: 1Minimum: 1Maximum: 10000

page_sizePage Size

Items per page (max 100)

Default: 20Minimum: 1Maximum: 100

Response Body

200

A page.

data
Required
Data

pagination
Required
Pagination

Where the returned page sits in the whole result set.

Emitted verbatim on every list endpoint. The same three fields appear on every page of every collection, so a client can page through any of them with one loop.

401

1100 — missing, unknown or inactive API key. 1101 — a browser session token was presented instead of an API key.

error
Required
Error

Stable integer code from the /v2 error table. Branch on this.

message
Required
Message

One human-readable sentence. Wording may change; the code will not.

403

1102 — the key is valid but lacks the scope this endpoint requires, or names another organization. GET /v2/scopes reports what a key holds.

error
Required
Error

Stable integer code from the /v2 error table. Branch on this.

message
Required
Message

One human-readable sentence. Wording may change; the code will not.

404

1200 — no such resource in your organization. A resource belonging to another organization answers 404, never 403.

error
Required
Error

Stable integer code from the /v2 error table. Branch on this.

message
Required
Message

One human-readable sentence. Wording may change; the code will not.

422

Validation Error

error
Required
integer

Stable integer code from the error table. Branch on this, not on the message.

message
Required
string

One human-readable sentence. Wording may change; the code will not.

429

1300 — the per-organization request rate or concurrent-call limit was reached. Carries Retry-After.

error
Required
Error

Stable integer code from the /v2 error table. Branch on this.

message
Required
Message

One human-readable sentence. Wording may change; the code will not.

503

1501 — a service this endpoint depends on is unreachable or returned a 5xx.

error
Required
Error

Stable integer code from the /v2 error table. Branch on this.

message
Required
Message

One human-readable sentence. Wording may change; the code will not.

curl -X GET "https://api.graine.ai/v2/workflows/owf_8a1d4e7c2b90f1a2b3c4d5e6/runs?page=1&page_size=20" \
  -H "Authorization: Bearer <token>"

A page.

{
  "data": [
    {
      "id": "oex_2c9e8f1a7b3d4c5e6f7a8b9c",
      "workflow_id": "owf_8a1d4e7c2b90f1a2b3c4d5e6",
      "version": 2,
      "campaign_id": "ocm_4e1f9a2b6c7d8e9f0a1b2c3d",
      "source": "api",
      "status": "waiting",
      "node": "call",
      "outcome": "success",
      "label": "qualified",
      "termination_reason": "ended",
      "warnings": 0,
      "reference_id": "lead-4471",
      "wait": {
        "kind": "call",
        "node": "call",
        "until": "2026-10-25T10:00:00+00:00",
        "held": "calling_window",
        "reason": "insufficient_credits",
        "call_execution_id": "6f1c2d3e-4b5a-6978-c0d1-e2f3a4b5c6d7",
        "channel": "app",
        "due_at": "2026-10-25T12:30:00+00:00"
      },
      "created_at": "2026-10-25T09:40:00+00:00",
      "updated_at": "2026-10-25T09:41:00+00:00",
      "ended_at": "2026-10-25T09:52:00+00:00",
      "last_event": {
        "at": "2026-10-25T09:41:00+00:00",
        "kind": "waiting",
        "node": "call",
        "wait": "call"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 137,
    "total_pages": 7,
    "has_more": true
  }
}