Sign inGet Started

Python · FastAPI

Envoyez votre premier e-mail depuis un endpoint FastAPI avec le client asynchrone du Bird Python SDK. Trois étapes : installer, envoyer, exécuter.

1. Installer le SDK

Exemple de code
python -m pip install messagebird-sdk "fastapi[standard]"
Nécessite Python 3.10+. Le paquet à importer est bird.

2. Envoyer un e-mail

Exportez votre clé API. Le SDK lit BIRD_API_KEY depuis l'environnement et déduit la région (us1 ou eu1) à partir du préfixe bk_us1_ / bk_eu1_, donc AsyncBird() ne nécessite aucun argument :
Exemple de code
export BIRD_API_KEY="bk_us1_..."
Créez main.py. Construisez un seul AsyncBird au démarrage et réutilisez-le pour toutes les requêtes : il mutualise les connexions et peut être partagé entre les tâches sans risque.
Exemple de code
from bird import AsyncBird, APIError
from fastapi import FastAPI, HTTPException

app = FastAPI()
client = AsyncBird()


@app.post("/send", status_code=202)
async def send() -> dict[str, str]:
    try:
        message = await client.email.send(
            from_="onboarding@messagebird.dev",
            to=["delivered@messagebird.dev"],
            subject="Hello from Bird",
            html="<p>My first Bird email.</p>",
        )
    except APIError as err:
        raise HTTPException(status_code=502, detail=str(err))
    return {"id": message.id, "status": message.status}
from_ est la forme Python du champ from (from est un mot réservé). onboarding@messagebird.dev est l'expéditeur d'intégration partagé de Bird (aucune vérification de domaine requise) et delivered@messagebird.dev est un destinataire sandbox qui aboutit toujours.
Le SDK réessaie automatiquement les erreurs transitoires et réutilise la clé d'idempotence de l'appel à chaque tentative. Cela empêche un nouvel essai d'envoyer le message deux fois.

3. Tester

Exemple de code
fastapi dev main.py
curl -X POST http://localhost:8000/send
Bird accepte le message avec un 202 et le distribue de manière asynchrone ; votre endpoint renvoie l'ID em_ et le statut :
Exemple de code
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Récupérez le message par son ID em_ avec await client.email.get(...) et observez le statut passer de accepted à delivered.

Étapes suivantes