Update reason, expires_at, and/or agent_ids. The phone_number
is immutable — delete the entry and add a new one if you need to
change the number.
Switching scope: pass agent_ids: [] to convert a scoped entry to
a global block, or pass a non-empty array to narrow a global block to
specific agents.
UpdateDocumentation Index
Fetch the complete documentation index at: https://docs.goyappr.com/llms.txt
Use this file to discover all available pages before exploring further.
reason, expires_at, and/or agent_ids on an existing Do-Not-Call entry. The phone_number is immutable — delete the entry and add a new one if the number itself needs to change.
To switch a scoped entry to a global block, pass agent_ids: []. To narrow a global block to specific agents, pass a non-empty array.
Required scope: do_not_call:manage.
| HTTP | Code | When |
|---|---|---|
| 400 | — | Attempted to edit phone_number (immutable). |
| 400 | — | expires_at is malformed or in the past. |
| 400 | — | agent_ids contains a UUID that does not reference an agent in this company. |
| 401 | INSUFFICIENT_SCOPE | API key lacks do_not_call:manage. |
| 404 | — | The id does not exist or belongs to a different company. |
Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.
Updated entry
A phone number on the company's Do-Not-Call list. Outbound call placement
skips numbers on this list — the request returns status: "dnc_blocked"
and a call_logs row is recorded for analytics, but no carrier leg is
established and no minutes are charged.
DNC entries can be global (block every agent) or agent-scoped
(block only specific agents — others can still call the number). Scope
is controlled via the agent_ids field.
E.164 form, e.g. +972501234567. Whatever input format you submit gets normalized before storage.
"+972501234567"
Optional free-form note. Surfaced in the dashboard, not in outbound API responses.
Where this entry came from. manual = added via dashboard, api =
added via this API, auto = reserved for future automated additions
(e.g. opt-out keyword detection during a call).
manual, api, auto When the block lapses. null = permanent. Past timestamps are filtered out at outbound-check time.
Empty array [] (or omitted on insert) = global: every agent
in the company is blocked from calling this number.
Non-empty = scoped: only the listed agents are blocked. Agents NOT in the array can still place outbound calls to this number.
On GET responses each item is the full agent object (resolved
from the underlying agent_ids column so you don't have to make
a second /agents/{id} call). On POST/PATCH inputs the field is
named agent_ids and takes a string[] of UUIDs — see those
endpoints for the input shape.
Best-effort attribution to a user; null when added via API.