Skip to content
Nexxtool AI

Errors & rate limits

Rate limits (per API key, sliding 1-second window)

TierRequests / second
free10
starter50
pro200
scale1,000

Every response includes:

X-RateLimit-Limit:     50
X-RateLimit-Remaining: 47
X-RateLimit-Window:    1s

When the limit is exceeded:

HTTP/1.1 429 Too Many Requests
Retry-After:           1
Content-Type:          application/json

{ "ok":false, "error":"rate_limit_exceeded", "limit":50, "window_ms":1000, "retry_after_ms":318, "tier":"starter" }

Quota (monthly cap)

Each tier has a monthly check cap. When exhausted:

HTTP/1.1 402 Payment Required
{ "ok":false, "error":"quota_exceeded", "tier":"free", "used":1000, "cap":1000, "remaining":0, "upgrade_url":"/docs/pricing" }

The cap resets on the 1st of each calendar month (UTC). Upgrades take effect on the next request.

Idempotency

Pass Idempotency-Key: <any-string> to make retries safe. Replays return the original response with header Idempotent-Replay: true. Same key with a different body returns 409 idempotency_key_conflict.

Stored for 24 hours, then garbage-collected.

Check errors

These are returned in the issues array of a 200 response — not as HTTP errors. The check completed and was billed; the output failed your rule set.

All problems are reported, one entry per issue. Label prefixes:

Your blocked phrases previously appeared as filler:; they now appear as blocked:. Built-in slop remains filler:.

System errors

StatusErrorAction
500quota_check_failedDB unreachable. Retry with backoff.
500validator_errorInternal validator threw. Report to support; safe to retry.
503db_not_configuredService is bootstrapping. Retry after 30s.

Reporting issues

Email support@nexxtool.ai with the validation_id when applicable.