Zum Hauptinhalt springen
Alle Listenendpunkte in der Organization-API und der Enterprise-API verwenden cursorbasierte Paginierung. Das sorgt für eine konsistente, effiziente Paginierung – unabhängig von der Größe der Ergebnismenge.

Funktionsweise

Jeder Listen-Endpunkt akzeptiert zwei Query-Parameter:
ParameterTypBeschreibung
firstintegerMaximale Anzahl von Elementen pro Seite, die zurückgegeben werden (Standardwert variiert je nach Endpoint)
afterstringOpaker Cursor aus einer vorherigen Antwort. Für die erste Seite weglassen

Antwortformat

Antworten mit Listen enthalten Paginierungsmetadaten:
{
  "items": [...],
  "has_next_page": true,
  "end_cursor": "eyJsYXN0X2lkIjoiYWJjMTIzIn0=",
  "total": 142
}
FieldBeschreibung
itemsArray mit den Ergebnissen für die aktuelle Seite
has_next_pagetrue, wenn es weitere Ergebnisse gibt
end_cursorÜbergeben Sie diesen Wert als after-Parameter, um die nächste Seite abzurufen. null, wenn has_next_page false ist
totalGesamtzahl der übereinstimmenden Einträge (kann bei einigen Endpunkten aus Performancegründen ausgelassen werden)

Beispiel: Sitzungen seitenweise abrufen

Erste Seite

curl "https://api.devin.ai/v3/organizations/sessions?first=10" \
  -H "Authorization: Bearer $DEVIN_API_KEY"

Nächste Seite

Verwenden Sie den Wert end_cursor aus der vorherigen Antwort:
curl "https://api.devin.ai/v3/organizations/sessions?first=10&after=eyJsYXN0X2lkIjoiYWJjMTIzIn0=" \
  -H "Authorization: Bearer $DEVIN_API_KEY"

Alle Ergebnisse abrufen

import os
import requests

url = "https://api.devin.ai/v3/organizations/sessions"
headers = {"Authorization": f"Bearer {os.environ['DEVIN_API_KEY']}"}
all_sessions = []
cursor = None

while True:
    params = {"first": 50}
    if cursor:
        params["after"] = cursor

    response = requests.get(url, headers=headers, params=params).json()
    all_sessions.extend(response["items"])

    if not response.get("has_next_page"):
        break
    cursor = response["end_cursor"]

print(f"Fetched {len(all_sessions)} sessions")

Migration von offset-basierter Paginierung

Wenn Sie von API v1 oder v2 migrieren, ersetzen Sie offset/limit durch after/first:
# Vorher (v1/v2)
curl ".../v1/sessions?offset=50&limit=25"

# Nachher
curl ".../v3/organizations/sessions?first=25&after=CURSOR_FROM_PREVIOUS_PAGE"
Cursor-basierte Paginierung ist zuverlässiger als Offset-basierte Paginierung, weil sie nicht dadurch beeinflusst wird, dass zwischen den Seiten Einträge hinzugefügt oder entfernt werden.