Graine AI
API referenceWorkflows

Get a run

A run: where it is, what it waits for, its variables and every step it took.

A run: where it is, what it waits for, its variables and every step it took.

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/workflow-runs/{run_id}
/v2/workflow-runs/oex_2c9e8f1a7b3d4c5e6f7a8b9c

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

run_id
Required
Run Id

The run's id.

Response Body

200

The run.

id
Required
Id

The run's id.

workflow_id
Required
Workflow Id

Its workflow.

version
Required
Version

The version it runs.

campaign_idCampaign Id | null

Its campaign, if any.

sourceSource | null

How it started: dashboard | api | campaign | trigger.

status
Required
Status

queued | running | waiting | ended | failed | cancelled.

nodeNode | null

The step it is on.

outcomeOutcome | null

success | failure | neutral, once ended.

labelLabel | null

The ending's label.

termination_reasonTermination Reason | null

Why it ended.

warnings
Required
Warnings

Optional values that were missing.

reference_idReference Id | null

The contact's reference.

waitAny properties in WorkflowRunWait

created_atCreated At | null

When it started.

updated_atUpdated At | null

When it last moved.

ended_atEnded At | null

When it ended.

last_eventLast Event | null

Its latest step, on a list.

variables
Required
Variables

entry, run, call, extraction, response, callback, state, node.

timeline
Required
Timeline

Every step, oldest first (the last 500).

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/workflow-runs/oex_2c9e8f1a7b3d4c5e6f7a8b9c" \
  -H "Authorization: Bearer <token>"

The run.

{
  "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"
  },
  "variables": {
    "entry": {
      "mobile_number": "+919876543210",
      "plan": "gold"
    },
    "call": {
      "status": "completed",
      "duration_s": 42
    }
  },
  "timeline": [
    {
      "at": "2026-10-25T09:40:00+00:00",
      "kind": "entered"
    }
  ]
}