Adds a phone number to your company’s Do-Not-Call list. The number is
normalized to E.164 before storage, so any common input format works
(+972501234567, 0501234567, 972501234567).
Scope — by default, an entry is global: every outbound agent
is blocked from calling this number. To block only specific agents
(and let others through), pass agent_ids with an array of agent UUIDs.
Idempotent — re-adding a number that’s already on the list returns
the existing entry with HTTP 200 instead of an error. To replace metadata
on an existing entry, use PATCH /do-not-call/{id}.
Add a phone number to your company’s Do-Not-Call list. Once added, outbound call placement (bothDocumentation Index
Fetch the complete documentation index at: https://docs.goyappr.com/llms.txt
Use this file to discover all available pages before exploring further.
POST /calls and the queue dispatcher) skips this destination: a call_logs row is written with status: "dnc_blocked" for analytics, but no carrier leg is established and no minutes are charged.
The number is normalized to E.164 before storage, so any common input format works (+972501234567, 972501234567, 0501234567). Re-adding a number that is already on the list is idempotent — the existing row is returned with HTTP 200 instead of an error. To replace metadata on an existing entry, use PATCH /do-not-call/{id}.
By default an entry is global (every outbound agent is blocked). Pass agent_ids to scope the block to specific agents — agents not in the list can still call the number.
Required scope: do_not_call:manage.
| HTTP | Code | When |
|---|---|---|
| 400 | — | phone_number missing or not parseable. |
| 400 | — | expires_at is 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. |
Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.
Phone number in any common format. Normalized to E.164 before storage.
"+972501234567"
Optional free-form note ("Customer requested removal", "Regulator complaint", etc.).
When the block lapses. Omit or set to null for a permanent block.
Optional. Omit or pass [] for a global block (every agent
in your company is blocked from calling this number). Pass
an array of agent UUIDs to scope the block to those agents
— agents NOT in the list can still place outbound calls
to this number. All UUIDs must reference active agents in
the same company; otherwise the request is rejected with
HTTP 400.
["7e8a91c1-0000-4c11-9a00-000000000001"]Existing entry returned (idempotent re-add)
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.