Skip to main content

Number Lookup

Look up any E.164 phone number to validate it and enrich it with carrier, line-type, portability, SIM-swap, roaming, and live-reachability intelligence. Orbit uses Devotel HLR as the primary source and Telnyx as a fallback. Lookup is a billable operation — see Billing below.

Single Lookup (quick validation)

Returns validity, country, line type, and HLR enrichment. The phone field must be valid E.164 (+ followed by 2–15 digits, the first non-zero).

Full Intelligence Lookup

URL-encode the leading + as %2B (an unencoded + is also accepted for back-compat).

Response

Data Packages (Twilio Lookup v2 compatible)

Add a fields= selector (comma-separated, or a JSON array) to request per-field intelligence packages — the same selector shape Twilio Lookup v2 uses, so migration scripts work unchanged.
The selector is case-insensitive, deduped server-side, and capped at 16 fields per request. An unknown field name rejects the whole request with 422.

Available fields

Each entry in the response dataPackages map carries a discriminated status:
call_forwarding is a derived, best-effort signal, not an operator-asserted forwarding flag. It infers an active unconditional divert from the HLR reachability dip Orbit already runs — a valid line reported as unreachable on its home network is the classic proxy for calls forwarding elsewhere (a known SIM-swap / account-takeover indicator). Treat it as a low-confidence input (confidence: "low", derived: true), fuse it with other signals, and do not use it as ground truth. It falls back to coming_soon when HLR returns no usable reachability signal.

Bulk Lookup

Validate up to 100 numbers in a single request.
Bulk lookup requires the HLR provider to be configured (see Configuration); when it isn’t, the response carries available: false with an explanatory message and an empty results array. The endpoint is rate-limited more tightly than single lookup (a 100-number batch checks for ~$1.00 of wallet headroom up front).

Configuration

Lookup resolves its upstream from two environment variables on the API service: Set DEVOTEL_HLR_API_KEY (and, if needed, DEVOTEL_HLR_API_URL) on the API service and restart it. Once the key is present, bulk lookup begins returning results and single lookup uses HLR as its primary source.

Billing

Each lookup that an upstream actually answers is charged to your wallet on the number_lookup channel (fallback 1¢/query; per-org overrides apply). Key rules:
  • Single lookup is charged after the upstream returns. A request that falls through to local E.164 detection (no upstream call) is free.
  • Bulk lookup pre-checks your balance for N × unit price and fails fast with 402 before fanning out, then charges per successful result.
  • A per-tenant daily cost cap (default $50/day) protects against runaway spend — exceeding it returns 429.
  • Sandbox requests (testMode) are never billed.
Insufficient balance returns 402 INSUFFICIENT_BALANCE with balance_cents and cost_cents so you can prompt a top-up.