Intelligence sur les numéros de téléphone. Type de ligne, opérateur, portabilité, signaux de fraude.
Recherche d'opérateur compatible MNP sur les mêmes infrastructures que le trafic SMS et Voice de Bird. Un seul endpoint, même authentification, même format d'erreur que tous les autres canaux Bird — parce que la même équipe d'ingénieurs les a tous construits.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();
if (error) throw error;
console.log(data);
// → {
// phone: "+14155550172",
// line_type: "mobile",
// carrier: "T-Mobile USA",
// country: "US",
// ported_from: "AT&T Mobility",
// fraud_score: 0.07,
// valid: true,
// }5 minutes entre npm install et votre première recherche
Interrogez un numéro depuis le langage que vous utilisez déjà.
SDK disponibles pour tous les principaux runtimes. Réponses Lookup en moins de 300 ms en médiane — assez rapide pour conditionner un envoi SMS.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();Dix champs que vous assembleriez autrement auprès de trois fournisseurs.
Des données concrètes, nommées et auditables. Chacune provient d'une source réelle, pas d'un modèle qui devine.
- 01
Détection du type de ligne
Mobile, fixe, VoIP, numéro gratuit, surtaxé, pager. Déterminez si le SMS est possible avant d'envoyer.
- 02
Identification de l'opérateur
Nom de l'opérateur actuel et indicatif pays par entrée E.164. Mis à jour en continu via les registres MNP.
- 03
Historique de portabilité
L'opérateur précédent depuis lequel le numéro a été porté. Utile pour la prévision des coûts de routage et les heuristiques de fraude.
- 04
Format pays et région
Retourne le format E.164, national et international ; les codes pays et région dont un routeur a besoin.
- 05
Signaux de fraude
Un fraud_score de 0 à 1 par numéro, combinant vélocité, heuristiques de type de ligne, indicateurs de portage récent et listes de numéros malveillants.
- 06
Validité et joignabilité
Un booléen valid et une fenêtre reachable — certains numéros sont syntaxiquement corrects mais l'opérateur ne les attribue plus.
- 07
Recherche par lot
Envoyez par POST une liste de jusqu'à 1 000 numéros en un seul appel. La même tarification par numéro s'applique ; vous économisez les allers-retours.
- 08
Tarification avec cache intégré
Un cache de 24 h sur les entrées identiques est gratuit. Vous ne payez que lorsque la réponse diffère réellement.
- 09
Webhooks pour les traitements par lot
Pour les gros lots, abonnez-vous à lookup.completed et lisez le fichier de résultats au lieu de maintenir une connexion HTTP.
- 10
Même authentification, même format d'erreur
Une seule clé API pour Lookup, SMS, Email, WhatsApp, Voice. Un seul registre de types d'erreur pour tous.
Why we build Lookup
Parce que vous ne devriez pas découvrir qu'un numéro est un fixe en regardant le SMS échouer.
Nous exécutions déjà des requêtes MNP dans le routage SMS de Bird — c'était indispensable pour choisir la route opérateur la moins chère en temps réel. Lookup est cette même requête, exposée en tant qu'endpoint de premier ordre, pour que vous puissiez filtrer les inscriptions, évaluer les risques et prévoir les coûts de routage sans envoyer un seul SMS. Même authentification, même format d'erreur, mêmes webhooks que le reste de la plateforme.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();
if (error) throw error;
console.log(data);
// → {
// phone: "+14155550172",
// line_type: "mobile",
// carrier: "T-Mobile USA",
// country: "US",
// ported_from: "AT&T Mobility",
// fraud_score: 0.07,
// valid: true,
// }Chaque changement d'état est un webhook.
Payloads signés par HMAC, protégés contre le rejeu, idempotents. Les recherches unitaires sont synchrones ; les recherches par lot sont distribuées via des webhooks.
{
"type": "lookup.completed",
"id": "evt_2qB72y...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"lookup_id": "lkp_4hQ8m2nT",
"phone": "+14155550172",
"line_type": "mobile",
"carrier": "T-Mobile USA",
"country": "US",
"ported_from": "AT&T Mobility",
"fraud_score": 0.07,
"valid": true
}
}Calendrier de réessai : 5s, 30s, 5m, 30m, 2h, 6h, 12h. Mise en dead-letter après la dernière tentative ; chaque événement en dead-letter est rejouable depuis le tableau de bord ou l'API.
lookup.completedUne recherche (unitaire ou par lot) est terminée. Le payload inclut la réponse complète.lookup.failedLa recherche n'a pas pu être effectuée ; le payload inclut le format d'erreur.
Interrogez le numéro, puis envoyez-lui un message.
Même authentification, même contrat d'idempotence, même format d'erreur. Lookup a la même structure que tout autre endpoint — la différence est qu'il retourne des données au lieu d'envoyer un message.
Lookup.
await bird.lookup.get({
phone: "+14155550172",
});Opérateur, type de ligne, portabilité, signaux de fraude — retournés de manière synchrone en moins de 300 ms.
SMS.
await bird.sms.send({
from: "Bird",
to: "+14155550172",
text: `Your code is ${code}.`,
});Même authentification, même format d'erreur. Conditionnez l'envoi au résultat de la recherche — éliminez les lignes fixes avant qu'elles ne vous coûtent.