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, addMessage, addTag, removeTag
client.emailssend, sendBatch, preview, getTemplateSchema
client.emails.templateslist, import
client.articlessearch, create, get, update, categories
client.logswrite, list, issues
client.teamlist
client.webhookslist, create, delete
client.feedback.conversationslist, create, get, update, reply
client.feedback.requestslist, create, get
client.customerslist, get, create, update, delete

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.