Getting help
Something fails, a result looks wrong, or you have a question: ask the CallQA team. A person of the team reads every ticket and answers, usually within a few hours on business days. The answer reaches you in the app, by email, and through your coding agent if it opened the ticket.
There are three ways to open a ticket. They all lead to the same conversation.
From your coding agent (MCP)
If your agent uses the MCP server, it can contact us itself, for example when a tool fails in a way the error and its hint do not explain. Four tools:
| Tool | What it does | Scope |
|---|---|---|
contact_support |
Opens a ticket: subject, message, kind, optional call_id, run_id, scenario_id, client and context |
read |
list_support_tickets |
The organization's tickets, with their status and unread answers | read |
get_support_ticket |
One ticket and every message: our answers have author staff |
read |
reply_support_ticket |
Adds a message (and reopens the ticket) | read |
Any key can open a ticket, even a read only one, so an agent stuck on an error can always
reach us. A good ticket says what the agent was doing, the exact tool calls and error codes,
what it already tried, what it expected, and the ids involved. You can simply tell your
agent "report this to CallQA support".
When we answer, the agent reads it with get_support_ticket, and get_setup_status lists
answers not read yet. We also email the answer to the admins of your organization (and to
the person who created the key), since an agent cannot read email.
From the app
Support in the sidebar lists your organization's tickets. + New ticket opens one; the thread page shows the conversation, a reply box and Close ticket. A badge on Support counts our answers nobody of your organization has opened yet. Admins and members open and reply; guests read.
From the API
The same tickets under /api/v1/support/tickets (see the
API reference):
curl -X POST https://app.callqa.dev/api/v1/support/tickets \
-H "Authorization: Bearer $CALLQA_API_KEY" -H "Content-Type: application/json" \
-d '{"kind": "bug", "subject": "Run stays queued",
"body": "Run 3f0c... has been queued for 20 minutes.", "run_id": "3f0c..."}'
GET /support/tickets/{id} returns the messages; POST /support/tickets/{id}/messages
replies; POST /support/tickets/{id}/close closes.
Kinds and statuses
Kinds: bug, question, feedback, billing, abuse_report (a call you think breaks the
Acceptable Use Policy; these reach the team first).
| Status | Meaning |
|---|---|
open |
The team has to answer |
waiting_customer |
The team needs something from you |
answered |
The team answered |
closed |
Solved. A new reply reopens it |
Good to know
- Never send secrets. API keys, passwords, tokens and webhook secrets do not belong in a
ticket. Anything that looks like one is replaced by
[redacted secret]before it is stored, and the answer says how many were removed (secrets_redacted). - Limits. At most 20 new tickets and 200 messages a day per organization (
429 rate_limitedbeyond). Subject up to 200 characters, message up to 20,000,contextup to 8 KB of JSON. - Ids help. A
call_id,run_idorscenario_idof your organization is linked to the ticket, so we see the call, the run or the scenario at once. - Response time. We aim to answer within a few hours on business days (Europe/Paris). This is not a contractual service level.
- Email. You can also write to [email protected].