Tickets
Open support tickets, read the replies, answer and close them.
Support tickets belong to your account, so every route here needs a whole-account key (403 ACCOUNT_KEY_REQUIRED otherwise). They are the same tickets as in the dashboard.
The ticket object
{
"id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"subject": "Custom domain stuck on provisioning",
"category": "technical",
"priority": "normal",
"status": "open",
"createdAt": "2026-10-16T09:00:00.000Z",
"updatedAt": "2026-10-16T09:00:00.000Z"
}status is open, in_progress, waiting or closed.
List
GET
/account/ticketsYour tickets.
Read one, with its messages
GET
/account/tickets/{ticketId}{
"success": true,
"data": {
"id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"subject": "Custom domain stuck on provisioning",
"category": "technical",
"priority": "normal",
"status": "waiting",
"createdAt": "2026-10-16T09:00:00.000Z",
"updatedAt": "2026-10-16T09:40:00.000Z",
"messages": [
{ "id": "…", "message": "www.myshop.id has been provisioning for an hour.", "createdAt": "2026-10-16T09:00:00.000Z", "from": "you", "senderName": null },
{ "id": "…", "message": "The CNAME points at an old address. Please change it to cname.helipod.app.", "createdAt": "2026-10-16T09:40:00.000Z", "from": "support", "senderName": "Helipod Support" }
]
}
}from is you or support.
Open a ticket
POST
/account/ticketsReturns
201 with the ticket object.Prop
Type
curl -X POST https://api.helipod.io/api/account/tickets \
-H "Authorization: Bearer hel_your_key" -H "Content-Type: application/json" \
-d '{
"subject": "Custom domain stuck on provisioning",
"category": "technical",
"message": "www.myshop.id on service 9a8b7c6d-5e4f-4a3b-9c2d-1e0f9a8b7c6d has been provisioning for an hour."
}'You can open at most 5 tickets an hour (429 TOO_MANY_TICKETS); reply to an open ticket instead.
Reply
POST
/account/tickets/{ticketId}/messagesAdds your message (1 to 10,000 characters). Returns
201.curl -X POST https://api.helipod.io/api/account/tickets/$TICKET/messages \
-H "Authorization: Bearer hel_your_key" -H "Content-Type: application/json" \
-d '{ "message": "Changed the CNAME, thanks." }'{ "success": true, "data": { "id": "…", "ticketId": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f", "message": "Changed the CNAME, thanks.", "from": "you", "createdAt": "2026-10-16T09:45:00.000Z" } }A closed ticket answers 409 TICKET_CLOSED: open a new one.
Close
POST
/account/tickets/{ticketId}/closeReturns the ticket object with
status: "closed".