Zum Inhalt springen

Paginierung

Listen-Endpoints (GET /emails, /domains, /api-keys, /webhooks, /audiences, /audiences/{id}/contacts, /broadcasts, /suppressions) teilen sich ein cursorbasiertes Schema.

Parameter Beschreibung
limit Einträge pro Seite, 1 bis 100. Standard 20.
after Eine Eintrags-ID. Gibt die Seite mit Einträgen zurück, die älter sind (die nächste Seite).
before Eine Eintrags-ID. Gibt die Seite mit Einträgen zurück, die neuer sind (die vorherige Seite).

Verwende nur eines von after und before; beide zusammen liefern 422. Ergebnisse sind neueste zuerst sortiert. Cursor sind Eintrags-IDs (UUIDv7, die nach Erstellungszeit sortieren), daher bleiben Seiten stabil, während neue Einträge eintreffen.

Response
{
"object": "list",
"has_more": true,
"data": [
{ "object": "email", "id": "0192e1c4-7a3c-7a02-8e10-6c0f9d7a2b31", "...": "..." },
{ "object": "email", "id": "0192e1c4-7a3b-7c1e-9d2f-3b5a8e6f4c10", "...": "..." }
]
}

has_more sagt dir, ob in der Blätterrichtung eine weitere Seite existiert.

import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost();
let after: string | undefined;
for (;;) {
const { data, error } = await spacepost.emails.list({ limit: 100, after });
if (error) throw new Error(error.message);
for (const email of data.data) console.log(email.id, email.last_event);
if (!data.has_more) break;
after = data.data[data.data.length - 1]!.id;
}
  • Listenantworten für E-Mails lassen html und text weg; rufe eine einzelne E-Mail ab, um ihren Body zu erhalten.
  • Listenantworten für Domains lassen records weg; rufe eine einzelne Domain ab, um sie zu erhalten.
  • Ein fehlerhafter Cursor liefert 422 validation_error (“Invalid pagination cursor”).