- Dokumentasjon
- Grunnlag
Paginering
Markørbasert paginering på alle lister. Stabil under endringer, enkel å bruke, og innebygd i SDK-ene.
Alle endepunkter som returnerer lister bruker markørbasert paginering. Det gir stabile resultater selv når objekter legges til eller slettes mens du blar, i motsetning til offset, som kan hoppe over eller gjenta rader.
Formatet
{
"data": [ { "…": "…" }, { "…": "…" } ],
"neste": "eyJpZCI6ImZha18wMUpCWDRSOFEyTTciLCJ0IjoiMjAyNi0xMS0wMyJ9"
}
Send neste som spørringsparameteren markor for å hente neste side. Når neste er null, er du på siste side.
curl "https://api.spireapi.com/v1/fakturaer?status=forfalt&antall=100" -H "Authorization: Bearer …"
curl "https://api.spireapi.com/v1/fakturaer?status=forfalt&antall=100&markor=eyJpZCI6…" -H "Authorization: Bearer …"
Markøren er ugjennomsiktig. Ikke dekod den eller bygg den selv; formatet kan endres. Den er gyldig i 24 timer.
Parametre
| Parameter | Standard | Maks | Hva |
|---|---|---|---|
antall | 20 | 100 | Objekter per side |
markor | Fra forrige svar | ||
sortering | Avhenger av endepunkt | opprettet eller -opprettet (nyeste først) der det støttes |
Filtre (som status eller fra) må være like på alle sidene i én gjennomgang. Endrer du et filter, må du starte uten markør.
I SDK-ene
SDK-ene gjør paginering usynlig. Du får en iterator som henter neste side når du trenger den:
for faktura in spire.fakturaer.list(status="forfalt"):
print(faktura.nummer)
it := client.Fakturaer.List(ctx, &spire.FakturaListParams{Status: "forfalt"})
for it.Next() {
f := it.Current()
fmt.Println(f.Nummer)
}
if err := it.Err(); err != nil {
log.Fatal(err)
}
Vil du ha en side om gangen, for eksempel i et brukergrensesnitt, kan du be om det eksplisitt:
const side = await spire.fakturaer.listSide({ status: 'forfalt', antall: 50, markor });
// side.data, side.neste
Hente «alt siden sist»
For synkronisering er det bedre å filtrere på tid enn å bla gjennom alt:
curl "https://api.spireapi.com/v1/fakturaer?endret_etter=2026-11-02T22:00:00Z"
endret_etter finnes på alle lister. Kombiner med webhooks: webhooks gir deg endringer i sanntid, og en nattlig jobb med endret_etter fanger opp alt du eventuelt gikk glipp av.
Lister som strømmes
Masseoppslag og eksport bruker ikke paginering, men strømmer svaret som NDJSON: én JSON-linje per objekt, uten ytre liste. Les linje for linje, så trenger du ikke holde hele svaret i minnet.
curl -X POST https://api.spireapi.com/v1/virksomheter/masse -d @orgnr.json | while read linje; do
echo "$linje" | jq -r .navn
done