> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trassets.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagination in der Data API

> Alle Listen-Endpunkte unter /v1/ nutzen Cursor-Pagination: eine Seite mit limit abrufen und next_cursor aus dem Response-Body folgen, bis er null ist.

Jeder Listen-Endpunkt unter `/v1/` — Category wie Raw — nutzt Cursor-Pagination. Die Pagination-Felder stehen im Response-Body. Es gibt keine Pagination-Header und keinen `offset`-Parameter: Category-Endpunkte beantworten einen Request mit `offset` mit `400 Bad Request`, Raw-Endpunkte ignorieren ihn und liefern die erste Seite. Sende kein `offset`.

## Request

<ParamField query="limit" type="integer" default="1000">
  Zeilen pro Seite. Maximal 100.000 bei Category-Endpunkten, 10.000 bei Raw-Endpunkten.
</ParamField>

<ParamField query="cursor" type="string">
  Der `next_cursor`-Wert aus der vorherigen Antwort, unverändert übergeben. Für die erste Seite weglassen.
</ParamField>

Behalte innerhalb eines Laufs auf jeder Seite dieselben Filterparameter bei.

## Response

```json theme={null}
{
  "data": [ { "…": "…" } ],
  "count": 1000,
  "next_cursor": "eyJjb2wiOiAi…",
  "total": 167953
}
```

<ResponseField name="data" type="array">
  Die Zeilen dieser Seite.
</ResponseField>

<ResponseField name="count" type="integer">
  Anzahl der Zeilen in `data`.
</ResponseField>

<ResponseField name="next_cursor" type="string | null">
  Opaker Cursor für die nächste Seite. `null`, wenn keine Zeilen mehr folgen. Auf Raw-Endpunkten trägt jede volle Seite einen Cursor, der letzte Request kann deshalb ein leeres `data`-Array liefern.
</ResponseField>

<ResponseField name="total" type="integer">
  Category-Endpunkte: Zeilen, die ab der Cursor-Position zur Abfrage passen; auf der ersten Seite alle passenden Zeilen. Raw-Endpunkte: Zeilenzahl der Tabelle beim letzten Sync, auf jeder Seite gleich.
</ResponseField>

Raw-Endpunkte (`/v1/raw/{table_name}`) ergänzen den Body um `table_name` und senden einen `X-Snapshot-At`-Header mit dem Zeitstempel des letzten erfolgreichen Syncs der Tabelle.

## Beispiel

```bash theme={null}
# Erste Seite
curl -G "https://api.trassets.ai/v1/property/properties" \
  -H "X-API-Key: $TRASSETS_API_KEY" \
  -d "limit=1000"

# Nächste Seite: next_cursor aus der vorherigen Antwort übergeben
curl -G "https://api.trassets.ai/v1/property/properties" \
  -H "X-API-Key: $TRASSETS_API_KEY" \
  -d "limit=1000" \
  -d "cursor=eyJjb2wiOiAi…"
```

Wiederhole das, bis `next_cursor` `null` ist. Eine vollständige Python-Schleife steht unter [Incremental Sync](/de/v1/guides/incremental-sync).

## Reihenfolge und Stabilität

**Category-Endpunkte:** Die Zeilen sind nach der Sortierspalte der Tabelle (oder dem Primärschlüssel) sortiert, `NULL`-Werte zuletzt, bei Gleichstand entscheidet die interne Zeilenposition — Zeilen mit gleichem Wert werden weder übersprungen noch doppelt geliefert. Tabellen ohne Sortierspalte und Primärschlüssel werden allein nach Zeilenposition paginiert.

**Raw-Endpunkte:** Die Zeilen sind nach der Schlüsselspalte der Tabelle sortiert, danach nach Zeilenposition; Tabellen ohne Schlüsselspalte werden allein nach Zeilenposition paginiert. Enthält die Schlüsselspalte `NULL`-Werte, können diese Zeilen ab der zweiten Seite fehlen. Vergleiche nach einem vollständigen Export die Zahl der exportierten Zeilen mit `total`.

<Warning>
  Ein Cursor gilt nur innerhalb eines Sync-Laufs. Die Tabellen werden bei jedem Sync neu geladen, ohne festen Zeitplan (siehe [Sync-Zyklus](/de/concepts/sync-cycle)); danach verschieben sich Zeilenpositionen. Ein Cursor von vor dem Neuladen wird weiter akzeptiert, die folgenden Seiten können aber Zeilen überspringen oder doppelt liefern. Speichere `next_cursor` nicht zwischen Läufen — starte jeden Lauf mit der ersten Seite. Vergleiche auf Raw-Endpunkten `X-Snapshot-At` über die Seiten eines Laufs; ändert er sich, starte neu. Ein veränderter Cursor oder einer aus einem älteren Format liefert `400 Bad Request`; starte dann ebenfalls bei der ersten Seite.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.