Saltar al contingut principal
Didit aplica diverses capes de límits de freqüència per mantenir l’API estable i permetre, alhora, ràfegues de trànsit saludables. Els límits s’apliquen per identificador: la teva 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:
  1. Capçalera x-api-key → comptador per clau.
  2. Primer salt de X-Forwarded-For → comptador per IP.
  3. REMOTE_ADDR → comptador per IP.
Les crides següents eludeixen completament el límit de freqüència:
  • La DIDIT_WEBAPP_API_KEY interna (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 per HealthMiddleware abans 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.
El codi també defineix FREE_SESSION_RATE_LIMIT = 10 i PAID_SESSION_RATE_LIMIT = 600. Aquestes constants no s’apliquen actualment a POST /v3/session/: aquest endpoint utilitza el límit únic session-v2-create de 600/min per a totes les aplicacions. No planifiquis la capacitat en funció d’un límit per flux de treball del pla gratuït fins que no estigui documentat com a actiu.

Forma de la resposta 429

Quan superes qualsevol àmbit reps un HTTP 429 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-After com 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 un 429 al 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-key entre 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, un api_key separat) 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 crida GET /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 teva application i els ritmes sostinguts i de ràfega que preveus. Les excepcions es configuren per aplicació.
Darrera modificació el 7 de novembre del 2026