Error Codes
Errors are returned as { "error": { "code": "…", "message": "…", "bot": "…", "conversation": "…" } }.
| Code | HTTP | Meaning |
|---|---|---|
bot_not_found | 404 | No bot with that name for the tenant |
bot_invalid | 400 | The bot definition failed validation |
channel_unsupported | 400 | The bot isn’t enabled on the requested channel |
channel_auth | 403 | Channel authentication failed, or the tenant couldn’t be resolved |
identity_unresolved | 400 | The caller’s identity could not be resolved |
consent_required | 403 | The channel requires consent that hasn’t been granted |
consent_missing | 403 | Consent is required and absent |
window_expired | 400 | The messaging window (e.g. WhatsApp 24h) has closed |
template_required | 400 | A template message is required for this channel/state |
rate_limited | 429 | A per-user or per-conversation rate limit tripped |
state_invalid | 400 | The conversation is in a state that doesn’t allow this action |
cascade_failed | 500 | The terminal NLU stage failed |
orchestration_failed | 500 | The response path failed |
script_failed | 500 | A bot script errored |
script_budget_exceeded | 500 | A bot script exceeded its CPU / memory / wall-clock budget |
internal | 500 | Unexpected server error |
Retryability is carried on the error — transient failures are marked retryable.