Reference
Every error response from the Normalyze API returns a consistent JSON object. Click any error to expand details and see an example response and fix.
The batch was processed successfully. Check uncategorized_count in the response — a high number may indicate your transaction strings have unusual formatting.
A new API key was created successfully. The raw key is returned once and cannot be retrieved again.
Store the key immediately in a secrets manager or environment variable.
The x-api-key header is missing, malformed, or the key has been revoked.
Ensure you're sending the header x-api-key: nyz_live_... on every request. Keys starting with anything other than nyz_live_ will always fail.
An active API key already exists for the email address you provided. One key per email is allowed on the free tier.
Call POST /v1/keys/revoke with your email first, then generate a new key. Or use the existing key — check GET /v1/keys/usage to retrieve your prefix.
The request body failed Pydantic validation. Common causes: missing required fields, wrong types, empty transactions array, or exceeding the 500-transaction limit per batch.
Check the loc field to identify which field failed. Ensure transactions is a non-empty array with at most 500 items, and each item has a non-empty raw string.
The uploaded CSV is missing a raw column. This is the only required column — id, amount, and timestamp are optional.
Ensure your CSV has a header row with at least a raw column. Indian bank exports often call it Narration or Description — rename it to raw before uploading.
Your free tier allowance of 500 transactions has been exhausted. This limit is lifetime, not monthly — it applies until you upgrade to a paid plan.
Upgrade via Stripe Checkout (link on the pricing page) to continue with unlimited metered usage at $0.005 per transaction.
An unexpected error occurred during normalisation. This is rare and typically indicates a malformed input that bypassed validation, or a transient infrastructure issue.
Retry the request once. If the error persists, isolate the problematic transaction string and contact support@normalyze.dev with the full request body.
For AI agents
All error responses are machine-readable JSON objects. Recommended handling:
401 → check and refresh API key422 → inspect detail[].loc and fix input schema429 → halt and surface upgrade prompt to user500 → retry once with exponential backoff, then surface error