Limits
Batch size, payload size, and rate limits across the Ingestion & Decisioning API.
Retidal enforces limits at the request, payload, and rate level. Hitting one returns a specific status code — see Errors & status codes.
Prerequisites
Section titled “Prerequisites”- A project API key — see Quickstart — and familiarity with Authentication’s scopes.
Batch size
Section titled “Batch size”POST /api/v1/taccepts up to 100 events per request.POST /internal/backfill/eventsaccepts up to 1000 events per request.
Payload size
Section titled “Payload size”traitspayloads (identify/profile) are capped at 8 KiB.traitsnesting is capped at 2 levels.
Rate limits
Section titled “Rate limits”POST /api/v1/decideandPOST /api/v1/coupons/redeemare limited to 30 req/min per (project, IP).PUT /api/v1/profileis limited to 60 req/min per (project, IP).
What this unlocks
Section titled “What this unlocks”Knowing these caps unlocks designing your integration’s batching and retry strategy up front (Send data) instead of discovering them from POST /api/v1/decide’s own 400/429 in production.
Verify it worked
Section titled “Verify it worked”Confirm the batch cap is enforced by sending a request over the ingestion limit:
# events.json contains 101 eventscurl -s -o /dev/null -w "%{http_code}\n" -X POST https://api.retidal.com/api/v1/t \ -H "X-API-Key: $RETIDAL_API_KEY" -H "Content-Type: application/json" \ --data @events.json# expect: 400 — batch-size overflowIf it doesn’t work
Section titled “If it doesn’t work”If a request is rejected for hitting a batch, payload, or rate limit, work through Events not arriving. If decisioning stops responding after many rapid calls, work through Decisioning not firing.