# Paginierung der Public API

Jede Listenoperation antwortet mit derselben Hülle: die Einträge der Seite in `data` und Links zu den benachbarten Seiten in `links`. Kostendaten ergänzen in `meta`, was die ganze Abfrage umfasst.

## Eine Liste seitenweise lesen

<Stepper>

1. Fordere die erste Seite mit `page=1` und dem gewünschten `limit` an.
2. Verarbeite `data`.
3. Ist `links.next` gesetzt, fordere diesen Link an; er behält jeden Filter der ersten Anfrage. Ist er `null`, war das die letzte Seite.

</Stepper>

```bash
curl --get https://api.costfluent.com/v1/budgets \
  --data page=1 --data limit=100 \
  --header "Authorization: Bearer $COSTFLUENT_API_TOKEN"
```

```json
{
  "links": {
    "self": "https://api.costfluent.com/v1/budgets?page=1&limit=100",
    "first": "https://api.costfluent.com/v1/budgets?page=1&limit=100",
    "prev": null,
    "next": "https://api.costfluent.com/v1/budgets?page=2&limit=100",
    "last": "https://api.costfluent.com/v1/budgets?page=3&limit=100"
  },
  "data": []
}
```

## Seitengröße

| Operation | `limit` | Standard |
|---|---|---|
| Jede Liste, etwa Budgets, Kostenberichte oder Integrationen | 1 bis 100; ein größerer oder kleinerer Wert wird auf diesen Bereich begrenzt | 20 |
| Kostendaten, `GET /v1/costs` | 1 bis 5.000; ein größerer Wert wird mit `400` abgelehnt | 20 |

## Kostendaten in großen Mengen lesen

Kostendaten sind die eine Massenabfrage: Fordere `limit=5000` an, um einen Zeitraum mit so wenigen Anfragen wie möglich zu lesen. Die Paginierung reicht bis 100.000 Zeilen, `page × limit`; eine Anfrage darüber hinaus wird mit `400` abgelehnt, und ihr Fehler sagt, den Zeitraum aufzuteilen. Lies einen großen Zeitraum als mehrere kürzere Bereiche von `startDate` bis `endDate`, jeden ab Seite 1.

:::note
`meta.totalRecords` zählt jede Zeile, auf die die Abfrage passt; `meta.totalRecords` geteilt durch `limit` sagt dir also vorab, wie viele Seiten du erwarten kannst.
:::

## Wie es sich verhält

- `page` beginnt bei 1. Eine Seite hinter dem Ende antwortet mit `200` und leerem `data`.
- `links.last` ist `null`, wenn die Gesamtzahl nicht bekannt ist.

## Verwandte Seiten

- [Rate Limits](/de/api/rate-limits)
- [Fehler](/de/api/errors)
- [API-Referenz](/api)
