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.
Todos los endpoints de lista en las APIs de Organization y Enterprise usan paginación basada en cursores. Esto ofrece una paginación uniforme y eficiente, independientemente del tamaño del conjunto de resultados.
Todos los endpoints de lista aceptan dos parámetros de consulta:
| Parámetro | Tipo | Descripción |
|---|
first | integer | Número máximo de elementos que se devolverán por página (el valor predeterminado varía según el endpoint) |
after | string | Cursor opaco de una respuesta anterior. Omítelo en la primera página |
Las respuestas de tipo lista incluyen metadatos de paginación:
{
"items": [...],
"has_next_page": true,
"end_cursor": "eyJsYXN0X2lkIjoiYWJjMTIzIn0=",
"total": 142
}
| Field | Description |
|---|
items | Array de resultados para la página actual |
has_next_page | true si hay más resultados |
end_cursor | Pasa esto como el parámetro after para obtener la página siguiente. null cuando has_next_page es false |
total | Número total de elementos coincidentes (puede omitirse en algunos endpoints por motivos de rendimiento) |
Ejemplo: paginación de sesiones
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Utiliza el valor de end_cursor de la respuesta anterior:
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10&after=eyJsYXN0X2lkIjoiYWJjMTIzIn0=" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Recopilación de todos los resultados
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")
Si estás migrando desde la API v1 o v2, reemplaza offset/limit por after/first:
# Before (v1/v2)
curl ".../v1/sessions?offset=50&limit=25"
# After
curl ".../v3/organizations/{org_id}/sessions?first=25&after=CURSOR_FROM_PREVIOUS_PAGE"
La paginación basada en cursores es más fiable que la paginación basada en offset porque no se ve afectada por elementos que se agregan o eliminan entre páginas.