| 400 | invalid_request | The message names the field to fix, such as search needs a kind. Fix the request and call again |
| 400 | transcript_removed | Kviria no longer reads the user’s words. Parse them into the request’s fields and call again |
| 400 | invalid_state | The state was altered. Start again with an empty state |
| 400 | anchor_required | Send the user’s position on the first call of a conversation |
| 400 | unsupported_field, invalid_body | The message names the problem. Fix it and send the call once more |
| 400 | payment_rejected: and a reason, or payment_settle_failed | The payment did not go through. already_claimed: that payment was already used |
| 400 | invalid JSON body, or a message about the agent name | Fix the request |
| 401 | unauthorized | No key or token, or one Kviria does not know. Send a key, or connect with OAuth. See Connect and pay |
| 402 | free_daily_limit_exhausted | Today’s free turns are used up. Top up, then send the call again |
| 413 | payload_too_large | The body is over 16 KB (64 KB on the MCP server) |
| 429 | turn_minute_limit | Too many turns this minute. Wait for Retry-After |
| 429 | payment_rate_limit | More than 5 payments this minute. Wait for Retry-After |
| 429 | payment_verify_capacity | Payments cannot be checked right now. Try again later |
| 429 | service_busy | Kviria is under heavy demand. Wait for Retry-After |
| 500 | Server Error | Try again after a short pause |