Skip to content

Node.js SDK

The @helmdesk/sdk package provides a fully typed client for all API endpoints. It uses native fetch and works in Node.js 18+, Deno, Bun, and Cloudflare Workers.

Installation

npm install @helmdesk/sdk

Initialize

import { HelmdeskClient, HelmdeskError } from '@helmdesk/sdk'

const client = new HelmdeskClient({
  apiKey: 'sk_live_...',
  baseUrl: 'https://helmdesk.dev', // optional, defaults to production
})

Available resources

ResourceMethods
client.ticketscreate, list, get, update, delete, bulkUpdate, addMessage, addNote, addTag, removeTag
client.emailssend, sendCustom, sendBatch, preview, previewCustom, getTemplateSchema, list, get, resend, cancel
client.emails.templateslist, import, delete
client.emails.suppressionslist, add, remove
client.articlessearch, list, create, get, update, delete, categories, createCategory
client.logswrite, list, issues, setIssueStatus, acknowledgeIssue, resolveIssue, deleteIssue, deleteEvents
client.teamlist
client.webhookslist, create, update, delete, test, deliveries
client.feedback.conversationslist, create, get, update, reply
client.feedback.requestslist, create, get, delete
client.customerslist, get (id or email), getByEmail, create, update, delete, addTag, removeTag, setTags
client.projectslist, get, create, overview
client.apiKeyscreate, revoke
client.agentActivitylist, approve, revert
client.accountusage
client.sandboxreset

Error handling

All API errors throw a HelmdeskError with typed properties:

import { HelmdeskError } from '@helmdesk/sdk'

try {
  await client.tickets.get('invalid-id')
} catch (err) {
  if (err instanceof HelmdeskError) {
    console.log(err.status) // 404
    console.log(err.code)   // "not_found"
    console.log(err.message) // "Ticket not found"
  }
}

See Error Handling for the full list of error codes.