x-api-key o, si no n’envies cap, la teva adreça IP de client. Cada àmbit manté un comptador independent amb una finestra lliscant de 60 segons.
Identificador i excepcions
El middleware escull un identificador de límit de freqüència seguint aquest ordre:- Capçalera
x-api-key→ comptador per clau. - Primer salt de
X-Forwarded-For→ comptador per IP. REMOTE_ADDR→ comptador per IP.
- La
DIDIT_WEBAPP_API_KEYinterna (utilitzada només per la consola de Didit). - Els endpoints protegits pel permís
IsValidSession(el trànsit de sessions incrustades i de l’SDK). GET /system/healthcheck(servit perHealthMiddlewareabans d’aquesta pila).- Els webhooks dels proveïdors: Stripe, cribratge AML, callbacks de verificació facial i modificacions de llistes KYC.
Límits globals
Cada sol·licitud autenticada es classifica també pel mètode HTTP en un àmbit genèric, de manera que qualsevol ruta nova hereta un valor per defecte raonable:
La creació de transaccions i la ingestió d’esdeveniments es compten a
ingest-write en lloc de generic-write: una integració d’ingestió d’alt volum obté 600 sol·licituds per minut per clau d’API sense gastar el pressupost de les seves altres escriptures.
Els límits específics dels endpoints (següent secció) s’apliquen a més del límit global. El primer àmbit que supera el seu comptador és el que retorna 429.
Límits específics dels endpoints
El middleware defineix àmbits més restrictius per a les rutes de més impacte:GET /v3/session/<id>/decision/ és servit per SessionV3RetrieveView i no es troba a l’àmbit session-decision. Només el regeix el sostre de 600/min de generic-get. El límit de 100/min per a decisions s’aplica a les rutes de decisió v1 i v2.Forma de la resposta 429
Quan superes qualsevol àmbit reps un HTTP429 amb aquest cos i aquestes capçaleres:
Les capçaleres
X-RateLimit-* només s’emeten a la resposta 429: les respostes satisfactòries no les inclouen actualment. Utilitza el valor de Retry-After (o X-RateLimit-Reset - now) com a retard abans del següent intent.
Orientació per al client
- Respecta
Retry-Aftercom a límit inferior del teu backoff. Per sobre, aplica un backoff exponencial amb variació aleatòria (jitter) (5s → 10s → 20s → 40s ± random), perquè dos clients que rebin un429al mateix temps no se sincronitzin. - Atura els reintents després d’un límit petit (per exemple, 5 intents). Propaga l’error al codi que t’ha cridat i avisa el teu equip: els 429 sostinguts normalment indiquen un bucle descontrolat, no un pic puntual.
- Fes servir un identificador per càrrega de treball. Compartir un
x-api-keyentre molts backends fa que quedin agrupats en el mateix comptador, i un veí sorollós pot deixar la resta sense recursos. Crea una aplicació separada (i, per tant, unapi_keyseparat) per entorn, marca o client; consulta Registre programàtic. - Desa en memòria cau les lectures de decisió. Els endpoints
/decision/no estan pensats per a bucles de sondeig intensius. Si necessites actualitzacions en temps real, fes servir Webhooks i cridaGET /v3/session/<id>/decision/només per completar les dades que faltin o per auditoria. - Genera els PDF fora de línia. La renderització de PDF requereix molta CPU (límit de 50 per minut). Activa-la des d’una cua quan la sessió arribi a un estat final, no en cada visualització de pàgina.
Exemple de client que gestiona el 429
Necessites més capacitat?
Si 600 sessions per minut no són suficients, per exemple per a un llançament de màrqueting o un completament de dades històriques, escriu a support@didit.me indicant l’UUID de la tevaapplication i els ritmes sostinguts i de ràfega que preveus. Les excepcions es configuren per aplicació.