Number Health & Reputation
Monitor the operational health of each number: its 10DLC warming ramp, deliverability health score, carrier-displayed reputation, usage rollups, and branded-calling answer-rate uplift. Every endpoint is a pure read of locally-persisted snapshots — no live carrier call, no outbound voice/SMS path.Warming
Per-number 10DLC warming-tier state, so a warming-progress card can render the ramp meter.daily_cap, live current_day_count, warming_phase (initial | ramp | steady | verified), trust_score, and warming_started_at. Returns null for non-10DLC numbers.
For the growth-curve forecast:
warming_state + warming_started_at + warming_max_daily_sms columns plus a 15-day forecast.
Health (deliverability)
The latest deliverability health snapshot — delivery rate and complaint rate — from the daily health-score scheduler.Health trend & forecast (predictive)
The point-in-time health snapshot tells you where a number stands today; it does not tell you where it is heading. The trend endpoint answers the predictive question — is this number sliding toward a poor delivery outcome, and how soon — so you can rotate it before deliverability collapses.GET /api/v1/numbers/num_abc123/health/trend
directionisimproving,declining, orstable. Movement smaller than 0.2 score points per day counts asstableso week-to-week noise does not read as a trend.forecastextrapolates the trend line:projected_score(clamped to 0–100) andprojected_tier, mapped onto the same tier bands the point-in-time score uses. Whenprojected_tierfalls topoororcritical, that number is a rotation candidate — pair the forecast with the Closed-Loop Reputation Remediation playbook below to quarantine, replace, and retire it.anomalycatches what a slow slope would smear away:detected: truewhen the latest period drops 12+ points below the mean of the periods before it — the signature of a spam flag landing between ticks.- Low-traffic periods stay honest: a period under
min_sample_sizeoutbound messages returnsscore: null,tier: "unknown"and is excluded from the trend fit (itssample_sizeis still returned so you can render the gap). With fewer than three scored periods,directionreturnsinsufficient_dataand the forecast isnull— Orbit will not project a line through one or two points.
Predictive spam-likelihood scoring & remediation playbook
The trend forecast above projects a deliverability score; the spam-likelihood endpoint answers a different question — how likely is this number to draw a carrier spam label, and what to do about it before the label lands. Where the trend endpoint tracks a health trajectory, this one blends the signals carriers actually filter on into a single forward-looking risk score and pairs it with an ordered remediation playbook. Use it as the early-warning threshold: act onhigh/severe here, before the carrier ecosystem publishes the label you see under Reputation.
GET /api/v1/numbers/:id/spam-likelihood
contributing_factors names which drivers pushed the risk up: the outbound failure_rate, the complaint-coded complaint_rate (carrier rejections with a spam or opt-out error code), the health trend direction, and any anomaly_detected step-change. The four *_component values sum to the score, so you can see exactly which lever to pull. remediation_playbook is the ordered set of steps to take before the label lands: pause outbound, re-verify the registered campaign, and — once the score reaches moderate or worse — reduce volume and warm a replacement. Labels band as low (< 25), moderate (< 50), high (< 75), severe (75+); a window with too little signal returns spam_likelihood_score: null with label unknown rather than a noisy small-sample number, and min_sample_size echoes the threshold.
Tie to action. When the playbook returns reduce_volume, put the rest behind send gating and quiet hours: lower the campaign’s pacing cap on this number, tighten its quiet-hours window, and let warmed DIDs absorb the traffic. When the playbook returns warm_replacement, fold it into the Closed-Loop Reputation Remediation policy below — the same quarantine → replace → migrate → retire loop, triggered early instead of after a support ticket. For the fleet-wide view of numbers already flagged, poll /api/v1/numbers/reputation-alerts; the spam-likelihood score is the per-number drill-down that surfaces the risk before it reaches that alert list.
Reputation
Per-number carrier spam-label reputation — how Hiya / TNS / First Orion / Free Caller Registry / Nomorobo label your own outbound number — plus a registration/dispute remediation plan to clear a false “Spam Likely” / “Scam Likely” tag.monitored: false / status: "unknown" until the probe scheduler covers the number. See CNAM & Caller ID for spam-label remediation.
Fleet-wide reputation alerts (dashboard)
Checking numbers one at a time doesn’t scale once you own more than a handful of DIDs.GET /api/v1/numbers/reputation-alerts rolls up every monitored owned DID (at least one carrier observation recorded) and returns only the ones that still need action — currently flagged, at risk, or missing branded-caller registration, and with no open tracked remediation submission covering it yet. This powers the reputation-alerts banner on the Numbers dashboard.
truncated: true means only the first 500 were scanned, so the counts are a lower bound. A number drops off this list as soon as an operator lodges a tracked submission for every flagged provider via POST .../reputation/submissions — the alert surface only ever shows what still genuinely needs attention.
Closed-Loop Reputation Remediation
Configure and preview an automated healing plan for degraded numbers — quarantine the number, order a clean replacement, migrate its inbound routing / dialer campaigns / SMS sender pools, re-attest, then retire the original — instead of manually swapping a flagged DID after a support ticket.Read the policy
GET /api/v1/numbers/reputation-remediation-policy
policy plus the server-side defaults (bounds for cooldown hours and the per-run cap). auto_remediate defaults to false — remediation is opt-in.
Configure the policy
PUT /api/v1/numbers/reputation-remediation-policy
Requires the
numbers:write scope (owner / admin).
Preview the plan
GET /api/v1/numbers/reputation-remediation-plan
quarantine → provision_replacement → migrate_inbound_routes / migrate_dialer_campaigns / migrate_sender_pools → reattest → retire) the current policy would run for every currently-degraded (poor/critical) owned DID, plus a summary of how many would be remediated, deferred (cooldown), capped, or skipped. This is a preview only — it never mutates routing, orders a replacement, or retires a number, regardless of the auto_remediate flag.
Usage Analytics
Per-number usage rollup over a configurable window.
Returns call + message counts, durations, and delivery outcomes scoped to the number and window.