Sign inGet Started

Python · FastAPI

Invia la tua prima email da un endpoint FastAPI usando il client asincrono dell'Bird Python SDK. Tre passaggi: installa, invia, esegui.

1. Installa l'SDK

Esempio di codice
python -m pip install messagebird-sdk "fastapi[standard]"
Richiede Python 3.10+. Il pacchetto da importare è bird.

2. Invia un'email

Esporta la tua chiave API. L'SDK legge BIRD_API_KEY dall'ambiente e deduce la regione (us1 o eu1) dal prefisso bk_us1_ / bk_eu1_, quindi AsyncBird() non richiede argomenti:
Esempio di codice
export BIRD_API_KEY="bk_us1_..."
Crea main.py. Costruisci un singolo AsyncBird all'avvio e riutilizzalo tra le richieste: gestisce un pool di connessioni ed è sicuro da condividere tra i task.
Esempio di codice
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_ è la forma Python del campo from (from è una parola riservata). onboarding@messagebird.dev è il mittente condiviso di onboarding di Bird (non serve verifica del dominio) e delivered@messagebird.dev è un destinatario sandbox che consegna sempre.
Il SDK ripete automaticamente i tentativi in caso di errori transitori e riutilizza la chiave di idempotenza della chiamata a ogni tentativo. Questo impedisce che un nuovo tentativo invii il messaggio due volte.

3. Provalo

Esempio di codice
fastapi dev main.py
curl -X POST http://localhost:8000/send
Bird accetta il messaggio con un 202 e lo consegna in modo asincrono; il tuo endpoint restituisce l'ID em_ e lo stato:
Esempio di codice
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Recupera il messaggio tramite il suo ID em_ con await client.email.get(...) e osserva lo stato passare da accepted a delivered.

Prossimi passaggi