Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt

Use this file to discover all available pages before exploring further.

Numbers API

Numbers endpoints exposed by the Devotel CPaaS API Base path: /api/v1/numbers/lookup Endpoint count: 1

Full phone number intelligence lookup

GET /api/v1/numbers/lookup/{phoneNumber}
Full number intelligence (carrier / portability / SIM swap / roaming / live status) for a single E.164 phone number. Uses Devotel HLR as primary and Telnyx as fallback. When fields= is supplied (comma-separated or JSON array), the response also carries a dataPackages map keyed by the requested field names — each entry carries a discriminated status enum (available | coming_soon | not_implemented | error), a reason string, the intended provider, and an optional data payload when realised. Fields whose upstream provider is not yet contracted (cnam, identity_match, call_forwarding, number_reputation) return coming_soon — they are advertised for SDK shape stability but no realised payload is available today. Mirrors the Twilio Lookup v2 add-on selector.
phoneNumber
string
required
Phone number in E.164 format. URL-encode the leading + (or use %2B). The route also accepts an unencoded + for back-compat — decodeURIComponent runs server-side.
fields
string
Optional Twilio-compat data-package selector. Comma-separated list of field names from the enumeration below (case-insensitive, deduped server-side, max 16 fields per request). Unknown field names reject the whole request with 400.
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}" \
  -H "X-API-Key: dv_live_sk_your_key_here" 
Node.js
import { Orbit } from '@devotel/orbit-sdk'

const orbit = new Orbit({
  apiKey: process.env.ORBIT_API_KEY!,
})

const res = await fetch('https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}', {
  method: 'GET',
  headers: {
    'X-API-Key': process.env.ORBIT_API_KEY!,
  },
})
console.log(await res.json())


Python
import os, requests

headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}", headers=headers)
print(r.json())
Go
package main

import (
	"bytes"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}", nil)
	req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))

	http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'

uri = URI('https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']


res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/numbers/lookup/{phoneNumber}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'X-API-Key: ' . getenv('ORBIT_API_KEY'),

]);

echo curl_exec($ch);