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/sdkInitialize
import { HelmdeskClient, HelmdeskError } from '@helmdesk/sdk'
const client = new HelmdeskClient({
apiKey: 'sk_live_...',
baseUrl: 'https://helmdesk.dev', // optional, defaults to production
})Available resources
| Resource | Methods |
|---|---|
client.tickets | create, list, get, update, delete, bulkUpdate, addMessage, addNote, addTag, removeTag |
client.emails | send, sendCustom, sendBatch, preview, previewCustom, getTemplateSchema, list, get, resend, cancel |
client.emails.templates | list, import, delete |
client.emails.suppressions | list, add, remove |
client.articles | search, list, create, get, update, delete, categories, createCategory |
client.logs | write, list, issues, setIssueStatus, acknowledgeIssue, resolveIssue, deleteIssue, deleteEvents |
client.team | list |
client.webhooks | list, create, update, delete, test, deliveries |
client.feedback.conversations | list, create, get, update, reply |
client.feedback.requests | list, create, get, delete |
client.customers | list, get (id or email), getByEmail, create, update, delete, addTag, removeTag, setTags |
client.projects | list, get, create, overview |
client.apiKeys | create, revoke |
client.agentActivity | list, approve, revert |
client.account | usage |
client.sandbox | reset |
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.