One waiting item
https://api.norreach.app/v1/approvals/{key}One item of the queue by its key, with the preview of what would go out. 404 once it has been decided (here, in the app or by Nora).
curl -X GET "https://api.norreach.app/v1/approvals/{key}" \
-H "Authorization: Bearer $NORREACH_API_KEY"{
"key": "plan_card:5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e",
"object": "approval",
"kind": "plan_card",
"tab": "messages",
"title": "Follow-up email to Anna Lindqvist",
"why": "Your plan asks before it sends follow-ups.",
"source_label": "Spring staffing plan",
"contact": {
"id": "7d1c3b2a-5e4f-4a1b-9c8d-0e1f2a3b4c5d",
"name": "Anna Lindqvist",
"company": "Example Care AB"
},
"preview": {
"kind": "email",
"to": "Anna Lindqvist",
"subject": "Nurses for the summer",
"body": "Hi Anna, …"
},
"waiting_since": "2026-11-04T09:12:33.120Z",
"goes_out_at": "2026-11-05T08:30:00.000Z",
"auto": false,
"count": 1,
"risk": "safe",
"can": {
"approve": true,
"skip": true,
"redraft": true,
"edit": "words",
"web_only": null
}
}Authorizations
Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope approvals:read. API keys and scopes
Path parameters
An approval key, e.g. plan_card:<uuid>, meeting:<uuid>, rule_send:<uuid> (URL-encode the colon in paths).
Response
200application/json— One waiting item
An approval key, e.g. plan_card:<uuid>, meeting:<uuid>, rule_send:<uuid> (URL-encode the colon in paths).
What is waiting. api_call / api_message were requested through this API.
run_gatesequence_sendrule_sendauto_replyplan_cardmeetingad_launchlanding_pageapi_callapi_messagenumber_buymessagescallspostsadsmeetingsCustomer words, e.g. “Follow-up email to Anna Lindqvist”.
Why it waits: the rule, the hold, the booking source.
Where it came from (a campaign, the plan, an automation, the API).
What would go out: an email, a message, a call, a post, an ad, a meeting, a page.
Show child attributesHide child attributes
RFC 3339 UTC timestamp with milliseconds.
When it goes out once approved (or by itself, when auto).
It goes out at goes_out_at by itself unless someone stops it.
How many people or rows the item stands for (a batch).
safemoneyvoiceexternalunverified_claimShow child attributesHide child attributes
“Change it in words” works on it.
What edits an approval may carry.
Set when it can only be decided in the app (e.g. a claim to check).
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. |