Error Codes & Troubleshooting
Common errors and how to resolve them.
HTTP Errors
| Error | Cause | Fix |
|---|---|---|
401 Invalid or missing API key |
Missing or incorrect X-API-Key header |
Check your API key in the Dashboard |
404 Call not found |
Call ID does not exist or has ended | Use GET /api/calls to list active calls |
429 Concurrent call limit reached |
Rate limit hit | End an active call first, or retry shortly |
403 Hosted STT/TTS not available |
Hosted feature is beta-gated during early access | Use BYO audio via the call WebSocket (recommended), or contact [email protected] for supervised beta access |
Platform Errors
| Error | Cause | Fix |
|---|---|---|
400 No discord bot registered |
No Discord bot token in dashboard | Add a Discord bot token in Dashboard → My Bots, or connect the shared bot via Dashboard → Platforms |
400 No telegram bot registered |
No Telegram bot token in dashboard | Add a Telegram bot token in Dashboard → My Bots |
400 meeting_url required |
No meeting URL provided and no OAuth connected | Provide a meeting URL, or connect your account via OAuth in the Dashboard |
400 No SIP trunk configured |
Trying outbound SIP without a trunk | Connect a SIP trunk in Dashboard → SIP |
409 No active WebSocket connection |
Bridge connection not ready yet | Wait a moment for the connection to establish |
Message Delivery Errors
| Error | Cause | Fix |
|---|---|---|
502 Failed to send message |
The platform rejected the message (too long, rate limited, formatting error, invalid chat) | Check the message length against the platform limit. Shorten the message or split it into multiple calls. |
404 No active conversation |
No active DM conversation on the specified platform | The user must send a message first to start a conversation. Check chamade_inbox for active conversations. |
Recovery from Disconnection
If the bridge restarts or the connection is lost, the call state becomes "disconnected". The chamade_call_status tool (or GET /api/call/{id}) will indicate this.
To recover: call chamade_call_join (or POST /api/call) again with the same platform and meeting URL. A new call ID is issued. The previous transcript is not carried over.
Tip
If your agent polls chamade_call_status regularly, it will detect disconnections automatically and can reconnect without user intervention.
