Documentation Index
Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
Use this file to discover all available pages before exploring further.
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.
Jeder Listen-Endpunkt akzeptiert zwei Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|
first | integer | Maximale Anzahl von Elementen pro Seite, die zurückgegeben werden (Standardwert variiert je nach Endpoint) |
after | string | Opaker Cursor aus einer vorherigen Antwort. Für die erste Seite weglassen |
Antworten mit Listen enthalten Paginierungsmetadaten:
{
"items": [...],
"has_next_page": true,
"end_cursor": "eyJsYXN0X2lkIjoiYWJjMTIzIn0=",
"total": 142
}
| Field | Beschreibung |
|---|
items | Array mit den Ergebnissen für die aktuelle Seite |
has_next_page | true, 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 |
total | Gesamtzahl der übereinstimmenden Einträge (kann bei einigen Endpunkten aus Performancegründen ausgelassen werden) |
Beispiel: Sitzungen seitenweise abrufen
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Verwenden Sie den Wert end_cursor aus der vorherigen Antwort:
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10&after=eyJsYXN0X2lkIjoiYWJjMTIzIn0=" \
-H "Authorization: Bearer $DEVIN_API_KEY"
import os
import requests
org_id = os.environ["DEVIN_ORG_ID"]
url = f"https://api.devin.ai/v3/organizations/{org_id}/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")
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/{org_id}/sessions?first=25&after=CURSOR_FROM_PREVIOUS_PAGE"
Cursorbasierte 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.