Errores
Todos tienen la misma forma:request_id también viene en la cabecera X-Request-Id. Si algo va mal y no sabes
por qué, mándanoslo: con él podemos encontrar exactamente qué pasó.
type | HTTP | Cuándo |
|---|---|---|
invalid_request_error | 400 | El cuerpo o los parámetros no son válidos |
authentication_error | 401 | Falta la key, o está revocada o expirada |
permission_error | 403 | La key no tiene el scope, o tu rol no alcanza |
not_found_error | 404 | No existe |
rate_limit_error | 429 | Demasiadas peticiones, o cuota de IA agotada |
api_error | 500 | Fallo nuestro |
Un detalle a propósito: pedir un equipo al que no perteneces devuelve
403, no
404. Si devolviéramos 404 solo cuando el equipo no existe, la API se convertiría en
una forma de averiguar qué equipos existen.Límites de peticiones
Por minuto, según el plan del equipo mejor posicionado al que perteneces:| Plan | Peticiones por minuto |
|---|---|
| Free | 30 |
| Essential | 60 |
| Pro | 120 |
| Max | 300 |
429 con Retry-After (en segundos) además de las
cabeceras de arriba.
Cuota de IA
Los endpoints de IA (/ai/ask, /ai/plan-sprint) y las herramientas ask_team y
plan_sprint_from_text consumen la misma cuota mensual de IA que la app. No hay un
contador aparte, ni cargos sorpresa: cuando se agota, se agota, y la API devuelve 429
con code: quota_exceeded.
Puedes ver cuánto te queda:
Paginación
Las listas se paginan con un cursor:starting_after. El máximo de limit es
100; el valor por defecto, si no lo mandas, es 25.