Honeypot trap DIDs and the caller-reputation feed
A honeypot (also called a trap or seed number) is an owned DID that is deliberately never published — not on a website, not in an ad, not listed in a lead list. Because a legitimate caller has no reason to reach that number, every inbound hit on it is suspicious, and repeat hits are a strong robocall or spoofing fingerprint. The honeypot program turns that trickle of suspicious inbound traffic into a per-caller reputation feed you can act on. This guide covers the operator surface for the program: registering trap numbers, reading the trap-hit log, reading the caller-reputation feed, and wiring that signal into the inbound routing and do-not-originate controls you already own. The surface is super-admin only — trap numbers are cross-tenant security infrastructure, not a per-tenant feature.Compliance framing: this program is posture and signal only. The reputation
feed is an input to your routing and do-not-originate posture — Orbit does
not mandate how you act on it. Nothing below is legal advice.
1. Why a trap number is inbound-only
Trap numbers receive; they never originate. In Orbit’s routing table for inbound numbers, a honeypot DID is exactly the case thedecline action exists for: answer with SIP 603, take the hit
into the log, and terminate the call with no media path and no per-call
billing. Registering a number as a trap never wires it for outbound voice or
SMS — inbound termination only. That is also why trap hits are safe to
aggregate: every hit is, by construction, inbound traffic you never
solicited.
2. Registering a trap DID
Pick the number first. The four categories tell an operator what kind of trap it is — pick one and keep it accurate, because the category is the only context the hit log carries about why a number is suspicious:
Register the trap;
organization_id is optional — omit it to make the trap
platform-owned, which is what you want for a global suspicious-number feed:
phone_number must be E.164 and the registry is unique per number —
re-registering an already-registered number returns a 409 telling you it is
on the list. Wrong category or a typo in the label is fixable later (Step 3).
List the registry and filter by state, category, owning org, or search text:
3. Retire, re-arm, and relabel a trap
A trap that is temporarily leaked into a legitimate context (a corporate directory, a carrier test page) starts producing noisy hits. Retiring it (active: false) stops its hits from feeding the reputation scorer while
keeping the registry entry and the historical hits for audit. When the noise
settles, re-arm it from the same call. Everything that can change on a trap
lives in one PATCH:
security.honeypot.register /
security.honeypot.update actions so follow-up review can rebuild who
armed what.
4. Reading the trap-hit log
The raw log is one row per call or SMS that landed on a trap, newest first. Filter by trap, caller number, channel, or time window:caller_number— the originating ANI. Unlike tenant-facing call logs, this is the actionable fraud signal (a suspected robocaller), so the verbatim number is available to the operator.attestation— the first-hop STIR/SHAKEN level on the inbound leg:A(full),B(partial),C(gateway — origin not verified), orunsigned(no signature). RepeatC/unsignedhits against traps are the classic spoof pattern.source_ip/reference_id— the hop the inbound gateway saw, when it can be attributed; use it to correlate with your webhook logs.hit_at— the precise timestamp for time-window pulls.
5. Reading the caller-reputation feed
The scorer rolls recent trap hits into one row per caller number, worst first. Ask for the whole feed, or filter to one band:clean < suspect < high_risk < blocked — any single hit already lands a caller in suspect,
and only a clear abuser pattern reaches blocked. The scoring is
deterministic; the inputs that raise the score are volume (repeat hits),
range-scan (the caller touching many distinct trap DIDs — the strongest
robocall fingerprint), and unsigned / C-attestation hits.
sampled: true means the window covered the full sample hits (default
2000, max 5000) — the worst callers are still worst, but a sampled read
may miss the tail. Page with offset/limit exactly as on the registry and
the hit log: the scorer always runs over the full window so band ordering is
stable across pages.
6. Wiring the signal into your tenant posture
The trap-hit log and the reputation feed are inputs, not actions. Three tenant-owned places to use them, in order of how common the wiring is:- Inbound routing. A caller that ranks
high_riskon the reputation feed is a candidate for thedecline(SIP 603) action on your inbound numbers, or for routing into a recording-only queue instead of your agents. See Inbound number routing for how thedeclineaction works and why it is the cheapest answer. - Do-not-originate. The same feed is a candidate source for your DNO list — a caller that keeps hitting honeypots is also a caller that probably spoofs other numbers on outbound. Do not auto-populate the DNO list: catch it in the feed, review the hit pattern, and only then add the caller to the list. See Do-Not-Originate (DNO) Caller-ID Blocking.
- Fraud review. A suspicious inbound caller pattern is also an alert you should triage in the Fraud Shield ledger when it lands over one of your own DIDs — the honeypot feed follows the caller, your own DIDs follow the tenant-side evidence.
Related references
- Do-Not-Originate (DNO) Caller-ID Blocking — the tenant-owned control the reputation feed feeds into.
- Inbound number routing — the
declineaction that trap hits and high-risk callers are routed to. - Work a Fraud Shield alert end to end — triage the alerts your own inbound traffic raises, using the honeypot feed as corroborating evidence.
- ITG traceback workflow in the dashboard — the traceback cases that one-call-lookup trap hits become evidence for.
- STIR/SHAKEN attestation — what the attestation level on a hit means.