Sign inGet started

Pagination

Tous les endpoints de liste paginée de Bird API utilisent le même contrat à base de curseurs : les mêmes paramètres de requête, la même enveloppe de réponse, la même sémantique de curseur. Apprenez-le une fois sur GET /v1/email/messages et il s'applique partout.
Un petit nombre de collections bornées (par exemple, les plans de facturation) renvoient un simple tableau {"data": [...]} sans champs de pagination. Les autres endpoints implémentent le contrat de pagination complet.

Paramètres de requête

ParamètreTypeDescription
limitintegerNombre maximum d'éléments par page. Entre 1 et 100 ; valeur par défaut 25.
starting_afterstringCurseur issu du champ next_cursor d'une réponse précédente. Renvoie les éléments situés immédiatement après cette position.
ending_beforestringCurseur issu du champ prev_cursor d'une réponse précédente. Renvoie les éléments situés immédiatement avant cette position.
include_totalbooleanLorsque true, la réponse inclut un compteur total. Valeur par défaut false. Disponible uniquement sur les endpoints de gestion. Les endpoints de données à fort volume (messages, événements, suppressions) ne l'acceptent pas.
Les curseurs sont opaques : ce ne sont pas des identifiants de ressource et leur format peut changer à tout moment. Recevez-les dans les réponses et renvoyez-les tels quels. Un curseur malformé ou expiré renvoie une 422 avec le code E01012 InvalidCursor. Relancez la pagination sans curseur.
La plupart des endpoints de liste acceptent aussi des paramètres sort et order spécifiques à la ressource ; la référence de chaque endpoint documente les champs de tri autorisés. Changer le tri invalide les curseurs issus de l'ordre de tri précédent.

Enveloppe de réponse

Exemple de code
{
  "data": [{ "...": "..." }],
  "next_cursor": "WyIyMDI2LTA2LTEwVDA5OjE0OjAzWiIsICJtc2dfMDFr...",
  "prev_cursor": null,
  "refresh_cursor": "WyIyMDI2LTA2LTEwVDEyOjAwOjAwWiIsICJtc2dfMDFr...",
  "total": 1432
}
ChampDescription
dataLa page d'éléments.
next_cursorRenvoyez-le comme starting_after pour récupérer la page suivante. null lorsqu'il n'y a pas de page suivante, ce qui est le signal d'arrêt.
prev_cursorRenvoyez-le comme ending_before pour revenir en arrière. null lorsqu'il n'y a pas de page précédente (toujours null sur la première page).
refresh_cursorPoint d'ancrage de rafraîchissement : enregistrez-le, puis renvoyez-le comme ending_before plus tard pour récupérer les éléments apparus depuis cette réponse. Non nul tant que data n'est pas vide.
totalNombre total d'éléments correspondant aux filtres de la requête sur l'ensemble des pages. Présent uniquement lorsque include_total=true a été passé ; sinon null/absent.
next_cursor et prev_cursor sont indépendants : chacun vaut null exactement lorsque sa propre direction n'a plus de page. Vérifiez next_cursor pour décider s'il faut relancer une requête.

Parcourir les résultats

La première requête ne contient pas de curseur. Chaque requête suivante passe le next_cursor de la réponse précédente comme starting_after, et vous vous arrêtez lorsqu'il revient null.
Chaque Bird SDK expose les endpoints de liste de deux façons : une itération paresseuse qui récupère les pages de manière transparente à mesure que vous consommez les éléments, et un accesseur de page unique pour le contrôle manuel du curseur.
for await (const message of bird.email.list({ status: "bounced" })) {
  console.log(message.id);
}

Limites de débit

Les endpoints de liste partagent le groupe de limitation du débit list, distinct des lectures de ressources individuelles et des écritures. Paginer à travers une grande collection ne consomme jamais votre quota d'envoi ou de gestion. L'itération paresseuse émet une requête par page, donc une boucle serrée sur une grande collection épuise le groupe list à raison d'une requête par limit éléments ; utilisez limit=100 pour les lectures en masse.

Ressources associées