When it fires
POST /v1/trades was called with an amount above your API key’s per-trade limit. The detail field states the amount and the limit.
Your key also has a daily spending limit (rolling 24 hours, across all trades). That limit is checked after the trade is accepted: a trade that would exceed it is accepted with 202 and then ends as rejected, visible on GET /v1/trades/{id} and in trade webhooks, rather than returning this code synchronously.
Your key’s tier sets both limits, and individual keys can be configured with lower ones. The detail field states the limit that applied.
Why it happens
- A bot computed a larger order than intended (for example a sizing factor was off).
- The key’s limit was lowered since you designed your sizing logic.
How to fix
- For a per-trade overrun, split the order into smaller trades under the limit.
- For daily rejections, wait for the rolling window to clear or move to a higher tier.
- Keep your client’s sizing logic aware of your key’s limits.
How to raise the limit
Limits follow your key’s tier. See Rate limits, then:free→developer: request it from the info button in the Kash web app → Feedback.enterpriseormm: ask from the info button in the Kash web app → Feedback, or in Discord.
Related codes
AMOUNT_TOO_LARGE— platform-wide ceiling, separate from your key’s limitsTRADE_IN_FLIGHT_LIMIT_EXCEEDED— too many unfinished trades, not too much spend