Docs
Nora

Get a Nora task

GEThttps://api.norreach.app/v1/nora/runs/{id}

One task: its status, its steps (what each does, whether it waits for an OK and that approval's key), what Nora and you said (the last 50 messages), and the approvals it waits on. Through the API a task always asks first: every step that sends, calls or publishes waits in Approvals (GET /approvals; decide with POST /approvals/{key}/approve).

⚠ nora:runOperation id: get_nora_run
GET/nora/runs/{id}
curl -X GET "https://api.norreach.app/v1/nora/runs/{id}" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
Get a Nora task
{
  "id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "object": "nora_run",
  "goal": "Follow up with everyone who downloaded the winter staffing guide",
  "status": "waiting_approval",
  "done": false,
  "autonomy": "ask",
  "created_by": "0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
  "created_at": "2026-11-05T09:12:33.120Z",
  "started_at": "2026-11-05T09:12:35.000Z",
  "finished_at": null,
  "steps": [
    {
      "id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
      "index": 0,
      "action": "draft_message",
      "status": "done",
      "needs_approval": false,
      "approval_key": null,
      "created_at": "2026-11-05T09:12:40.000Z"
    },
    {
      "id": "6f7a8b9c-0d1e-4f2a-9b3c-4d5e6f7a8b9c",
      "index": 1,
      "action": "schedule_send",
      "status": "waiting_approval",
      "needs_approval": true,
      "approval_key": "run_gate:7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
      "created_at": "2026-11-05T09:12:41.000Z"
    }
  ],
  "messages": [
    {
      "id": "8b9c0d1e-2f3a-4b4c-9d5e-6f7a8b9c0d1e",
      "role": "you",
      "text": "Follow up with everyone who downloaded the winter staffing guide",
      "created_at": "2026-11-05T09:12:33.120Z"
    },
    {
      "id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
      "role": "nora",
      "text": "I drafted a short follow-up for the 42 people who downloaded it. It waits for your OK before it goes out.",
      "created_at": "2026-11-05T09:12:41.500Z"
    }
  ],
  "waiting_for_approval": [
    "run_gate:7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d"
  ]
}

Authorizations

Authorizationstringheaderrequired

Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope nora:run. API keys and scopes

Path parameters

idstring (uuid)pathrequired

An id (UUID).

Response

200application/json— Get a Nora task

idstring (uuid)required

An id (UUID).

object"nora_run"required
goalstringrequired

What Nora was asked to do.

statusenumrequired

planning → running → waiting_approval ↔ running → done (or failed).

One of:draftplanningrunningwaiting_approvaldonefailed
donebooleanrequired
autonomyenumrequired

"ask" = every step that sends, calls or publishes waits for an approval (always for runs started through the API).

One of:askinheritauto
created_bystring (uuid) | nullrequired
created_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

started_atstring | nullrequired
finished_atstring | nullrequired
stepsobject[]required
Show child attributes
steps[].idstring (uuid)required

An id (UUID).

steps[].indexintegerrequired
steps[].actionstringrequired

What the step does (draft_message, schedule_send, place_call, create_campaign …; other = anything else).

steps[].statusstringrequired
steps[].needs_approvalbooleanrequired
steps[].approval_keystring | nullrequired

When the step waits for an OK: its key in the Approvals queue (POST /approvals/{key}/approve).

steps[].created_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

messagesobject[]required

What was said (the last 50).

Show child attributes
messages[].idstring (uuid)required

An id (UUID).

messages[].roleenumrequired
One of:norayou
messages[].textstringrequired
messages[].created_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

waiting_for_approvalstring[]required

Approval keys this task waits on.

Errors

Errors are application/problem+json with a stable code.

StatusCodeMeaning
400bad_requestThe request couldn't be read.
400unknown_fieldThe request has a field this operation doesn't know.
401unauthorizedA valid API key is required.
403insufficient_scopeThis API key doesn't have the scope this operation needs.
403feature_not_enabledThe API isn't switched on for this workspace.
404not_foundThat doesn't exist.
429rate_limitedToo many requests. Slow down and try again.
500server_errorSomething went wrong on our side.
503unavailableThe API isn't available right now. Try again shortly.