Tickets
Create, list, update, and manage support tickets programmatically. Tickets are the core of the Helmdesk helpdesk — each belongs to a project and is linked to a customer.
/api/v1/ticketsCreate a support ticket. A customer record is automatically created or matched by email.
const ticket = await helmdesk.tickets.create({
subject: 'Cannot login',
body: 'I keep getting a 403 error when...',
customerEmail: 'user@example.com',
customerName: 'Jane Smith',
priority: 'high',
})/api/v1/ticketsList tickets with pagination. Filter by status, priority, category, assignee, exact ticket number, or search by subject/email. The assignee filter accepts a user id, a comma-separated list, or 'unassigned'.
const { tickets, total } = await helmdesk.tickets.list({
status: 'open',
priority: 'high',
assignee: 'unassigned',
category: 'billing',
number: 42, // exact "#42" lookup
page: 1,
limit: 25,
})/api/v1/tickets/:idGet full ticket details including messages, tags, and customer info.
const ticket = await helmdesk.tickets.get('ticket-uuid')
// ticket.messages, ticket.tags, ticket.customer/api/v1/tickets/:idUpdate ticket status, priority, category, or assignee. The assignee must be an active member of your account — discover valid ids with the members endpoint below.
await helmdesk.tickets.update('ticket-uuid', {
status: 'resolved',
priority: 'low',
assignedTo: 'user-uuid', // or null to unassign
})/api/v1/tickets/:id/messagesReply to a ticket as staff. The reply is appended to the thread, emailed to the customer, and a 'new' ticket transitions to 'open'.
await helmdesk.tickets.addMessage('ticket-uuid', {
body: 'Thanks for reaching out! Here\'s how to fix it...',
})/api/v1/membersList the active members of your account (id, name, email, role) — the valid assignedTo values for ticket assignment. Requires the tickets:read scope.
const { members } = await helmdesk.team.list()
// members[0].userId → use as assignedTo/api/v1/tickets/:id/tagsAdd a tag (label) to a ticket for triage or categorization. Idempotent — adding an existing tag is a no-op. Returns the ticket's full tag list.
const { tags } = await helmdesk.tickets.addTag('ticket-uuid', 'needs-engineering')/api/v1/tickets/:id/tagsRemove a tag from a ticket. Returns the ticket's remaining tags.
const { tags } = await helmdesk.tickets.removeTag('ticket-uuid', 'needs-engineering')Ticket statuses
newopenpendingresolvedclosedPriority levels
lowmediumhighurgent