Limits
NextKS uses dual-level rate limiting — per API key and per organization — so a single runaway integration doesn’t block others.Per API key
| Metric | Value |
|---|---|
| Burst | 10 requests in 5 seconds |
| Sustained | ~2 requests/second |
Per organization (tenant)
| Metric | Value |
|---|---|
| Burst | 50 requests in 10 seconds |
| Sustained | ~5 requests/second |
Other limits
| Limit | Value |
|---|---|
| Recipients per request | 50 email addresses |
| Message length | 4000 characters |
429 Too Many Requests
Header: Retry-After: 1
The details message indicates which limit was hit (per-key or organization).
Idempotency
To safely retry requests without sending duplicate notifications, include anIdempotency-Key header:
- If the same key is sent within 24 hours, the cached response is returned without re-processing
- Keys are scoped per organization — different orgs can use the same key without conflict
- Keys older than 24 hours are automatically cleaned up
Best practices
- Batch recipients — Send to multiple users in a single request instead of making separate calls per user
- Respect
Retry-After— Wait the indicated number of seconds before retrying - Use idempotency keys — Include an
Idempotency-Keyheader when retrying failed requests to prevent duplicates - Use callbacks — For interactive notifications, use
callback_urlinstead of polling the status endpoint repeatedly - Cache responses — Status endpoint results can be cached for a few seconds to avoid unnecessary calls