Get a Nora task
https://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).
curl -X GET "https://api.norreach.app/v1/nora/runs/{id}" \
-H "Authorization: Bearer $NORREACH_API_KEY"{
"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
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
An id (UUID).
Response
200application/json— Get a Nora task
An id (UUID).
What Nora was asked to do.
planning → running → waiting_approval ↔ running → done (or failed).
draftplanningrunningwaiting_approvaldonefailed"ask" = every step that sends, calls or publishes waits for an approval (always for runs started through the API).
askinheritautoRFC 3339 UTC timestamp with milliseconds.
Show child attributesHide child attributes
An id (UUID).
What the step does (draft_message, schedule_send, place_call, create_campaign …; other = anything else).
When the step waits for an OK: its key in the Approvals queue (POST /approvals/{key}/approve).
RFC 3339 UTC timestamp with milliseconds.
What was said (the last 50).
Show child attributesHide child attributes
An id (UUID).
norayouRFC 3339 UTC timestamp with milliseconds.
Approval keys this task waits on.
Errors
Errors are application/problem+json with a stable code.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request couldn't be read. |
| 400 | unknown_field | The request has a field this operation doesn't know. |
| 401 | unauthorized | A valid API key is required. |
| 403 | insufficient_scope | This API key doesn't have the scope this operation needs. |
| 403 | feature_not_enabled | The API isn't switched on for this workspace. |
| 404 | not_found | That doesn't exist. |
| 429 | rate_limited | Too many requests. Slow down and try again. |
| 500 | server_error | Something went wrong on our side. |
| 503 | unavailable | The API isn't available right now. Try again shortly. |