Programmatic access to file, list, and manage support tickets. Tickets created here flow into the same internal CRM used by the dashboard at /dashboard/support.
/api/support-ticketsCreate a new support ticket. Authenticated requests use the session user's identity automatically. For anonymous callers, email is required.
{
"subject": "Cannot connect WhatsApp channel",
"body": "Verification webhook returns 403 every time...",
"email": "user@example.com",
"name": "Jane Doe",
"category": "bug",
"priority": "high"
}{ "success": true, "ticketId": "clx123abc", "message": "Support ticket created. Check your email for confirmation." }Both the submitter and the support inbox receive an email.
/api/support-ticketsList tickets you submitted. Admins can pass ?scope=all to see every ticket and combine with ?status=, ?priority=, ?assignedToMe=true, ?q= (subject / email search), ?cursor=, ?limit=.
{
"success": true,
"data": [ { "id": "clx123abc", "subject": "...", "status": "open", "priority": "normal" } ],
"nextCursor": null
}/api/support-tickets/{ticketId}Fetch a single ticket including its message thread. Internal notes are only included when the caller is an admin.
/api/support-tickets/{ticketId}Admin-only. Update status, priority, category, or assignedToId. Status changes trigger an email to the submitter.
open — submitted, awaiting first responsein_progress — being investigatedawaiting_user — awaiting reply from submitterresolved — fix delivered, awaiting confirmationclosed — finalized; replies disabled/api/support-tickets/{ticketId}/messagesAdd a reply to the thread. Owners and admins can post replies. Admins can pass isInternal: true to add a note that is not emailed to the user.
{ "body": "Thanks — could you share a screenshot?", "isInternal": false }Use the support guide to learn how status changes are emailed and how to track a ticket end-to-end.