Bird Lookup

Vérifiez le destinataire avant de lui envoyer un message.

Check whether an email address can receive mail or find the carrier behind a phone number.

lookup.ts
200
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["porting", "score"],
});

console.log(answer.country_code, answer.line_type);
// → "NL" "mobile"
console.log(answer.network_info?.carrier_name, answer.flags);
// → "KPN" ["ported"]

// Only a block whose status is ok carries a value,
// and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);
// → 84

Check an email address

Sign in to Bird to check an email address. Paste it into the Lookup form in your dashboard. You can also check addresses from your code, one API call per address.

The result helps you decide whether to send to that address. A correctly spelled address can still bounce.

See what the check tells you in email address lookup. Follow the email lookup guide to add it to your code.

5 minutes entre npm install et votre première recherche

Recherchez un numéro ou une adresse depuis le langage que vous utilisez déjà.

Méthodes typées dans les SDK Go, TypeScript, Python et PHP, et bird lookup en ligne de commande. Le tableau de bord exécute les deux mêmes opérations une à la fois, ce qui est le moyen le plus rapide d'obtenir une réponse avant d'écrire la moindre ligne de code.

1
2
3
4
5
6
7
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["classification", "score"],
});
console.log(answer.country_code, answer.line_type);
// Only a block whose status is ok carries a value, and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);

Ce qu'une recherche renvoie, et ce que chaque réponse coûte.

Des champs nommés issus de sources de données réelles, pas un modèle qui devine. Chacun d'eux vous indique s'il a reçu une réponse, et vous n'êtes facturé que pour ceux qui en ont obtenu une.

  1. 01

    Pays et les deux réseaux

    Le pays du numéro, le réseau qui le dessert aujourd'hui et le réseau qui a attribué sa plage. Ils diffèrent lorsque le numéro a été porté.

  2. 02

    Détection du type de ligne

    Mobile, ligne fixe, VoIP, numéro gratuit, numéro surtaxé, satellite, pager, cabine téléphonique, M2M, service. Déterminez si le SMS est même possible avant d'envoyer.

  3. 03

    L'indicateur de portabilité, gratuit avec la réponse de base

    Le fait que le numéro ait changé de réseau est inclus dans chaque recherche. Demandez la propriété de portage lorsque vous avez aussi besoin des dates et de l'historique complet.

  4. 04

    Six propriétés sur demande

    Name classification, porting, presence, roaming, sim_swap ou score dans type. Le service alloué de la plage, l'historique de portage, si la ligne est active, si elle est en itinérance, la date du dernier changement de SIM, et un score de crédibilité de 0 à 100.

  5. 05

    Un statut pour chaque propriété

    Chaque bloc renvoie ok, unavailable ou inconclusive. Seul ok contient une valeur, vous n'avez donc jamais à inspecter une réponse pour découvrir qu'elle est vide.

  6. 06

    Vous payez les réponses, pas les tentatives

    La recherche de base est facturée une fois. Une propriété n'est facturée que lorsqu'elle est délivrée, et une recherche qui échoue n'est pas facturée du tout.

  7. 07

    Un seul champ pour statuer sur une adresse e-mail

    result est valid, neutral, risky, undeliverable ou typo, avec reason indiquant pourquoi une adresse non distribuable ne peut pas recevoir de courrier.

  8. 08

    Une correction pour une adresse mal orthographiée

    did_you_mean suggests a correction when an address looks misspelled. flags marks a role, disposable, or free-provider address, and delivery_confidence grades all of it from 0 to 100.

  9. 09

    Une nouvelle tentative ne peut pas être facturée deux fois

    Envoyez un Idempotency-Key et une requête répétée rejouera la réponse que vous avez déjà payée au lieu d'en acheter une seconde.

  10. 10

    Même authentification, même format d'erreur

    Une seule clé API pour Lookup, SMS, Email, WhatsApp et Verify. Un registre d'erreurs unique pour tous, et un budget de limitation de débit dédié pour qu'une recherche n'empiète jamais sur votre envoi.

Pourquoi nous avons créé Lookup

Parce que vous ne devriez pas découvrir qu'un numéro est un fixe en regardant le SMS échouer.

La réponse de base provient de la même plateforme opérateur qui route les SMS et Voice de Bird, c'est pourquoi l'interroger coûte si peu : nous exécutions déjà la requête pour choisir une route en temps réel. Lookup est cette requête exposée comme un endpoint à part entière, pour que vous puissiez valider une inscription, qualifier un prospect ou router un message différemment sans rien envoyer au préalable. Même authentification, même enveloppe d'erreur, même contrat d'idempotence que le reste de la plateforme.

lookup.ts
200
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["porting", "score"],
});

console.log(answer.country_code, answer.line_type);
// → "NL" "mobile"
console.log(answer.network_info?.carrier_name, answer.flags);
// → "KPN" ["ported"]

// Only a block whose status is ok carries a value,
// and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);
// → 84

Deux opérations, une pour chaque type de destinataire.

Les deux se résument à une seule requête et une seule réponse. Rien à créer, rien à interroger, rien à nettoyer après coup.

Numéro de téléphone.

phone-number

Pays, les deux réseaux, l'indicateur de portabilité et le type de ligne, plus toute propriété que vous spécifiez dans type.

Adresse e-mail.

email

Un verdict, un score de confiance, les indicateurs qui expliquent une adresse à risque, et une correction lorsqu'elle ressemble à une faute de frappe.

Payez uniquement pour les réponses obtenues.

Tarification par requête : un coût par recherche, plus un pour chaque propriété renvoyée avec une réponse. Une propriété sans réponse ou une recherche échouée ne coûtent rien. Aucun frais par utilisateur.

Put it into practice.

Continue with the documentation, guides and examples for this topic. Resources are in English.

Get an implementation brief

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor