The ticketing API for developers
Not another helpdesk with an API bolted on. Tickets are the primitive. Build exactly what you need.
import { DispatchTickets } from '@dispatchtickets/sdk';
const client = new DispatchTickets({ apiKey: 'sk_live_...' });
const ticket = await client.tickets.create(brandId, {
title: 'Order not received',
body: 'My order #12345 hasn\'t arrived...'
});Built for builders
We provide the ticket technology. You build your perfect scenario.
Build support into your products so customers don't have to hunt for how to get ahold of you.
Tickets as a primitive
Create, update, query tickets via REST API. Build your own UI, or use ours. Your call.
Multi-tenant by default
One API key, unlimited brands. Perfect for platforms, marketplaces, and agencies.
Flexible schema
custom_fields accepts any JSON. No rigid forms. Store whatever your app needs.
Ship support in minutes
const ticket = await dispatch.tickets.create({
brandId: 'br_xxx',
title: 'Cannot access my account',
customerEmail: '[email protected]'
});const tickets = await dispatch.tickets.list({
brandId: 'br_xxx',
status: 'open'
});Technical features
REST API
Full CRUD on tickets, comments, attachments, webhooks
Webhooks
Real-time events for ticket.created, ticket.updated, comment.created
Multi-channel sources
Track origin: API, email, Slack, SMS, custom
Idempotency
Built-in support for safe retries
Cursor pagination
Efficient listing for large datasets
Custom fields
Arbitrary JSON, no schema restrictions
Open source admin UI
We build a great UI, but we can't envision what's perfect for everyone forever. Fork our Next.js + shadcn/ui admin portal. Extend it, theme it, make it yours.
Works with your stack
TypeScript SDK
npm install @dispatchtickets/sdk
Email (Postmark/Resend)
Inbound email creates tickets automatically
Slack
Create tickets from Slack, reply from Slack
Webhooks
Push events to Zapier, n8n, or your backend
Developer FAQ
Technical questions about the Dispatch Tickets API.
Use POST /v1/brands/{brandId}/tickets with your API key in the Authorization header. Include title, customerEmail, and optionally body and customFields in the JSON body. Example: await client.tickets.create(brandId, { title: 'Order issue', customerEmail: '[email protected]' });
Dispatch Tickets is built specifically for this use case. Unlike traditional helpdesks with APIs bolted on, it's API-first—meaning tickets are a primitive you can build on. You can create tickets programmatically, embed custom UIs, and integrate via webhooks without being locked into any specific UI.
Yes. Install via npm install @dispatchtickets/sdk. The SDK is fully typed, supports all API endpoints (tickets, comments, attachments, webhooks), and includes built-in error handling. Source code is available on GitHub.
Register a webhook URL for events like ticket.created, ticket.updated, or comment.created. When events occur, we POST a signed payload to your endpoint. Verify signatures using the webhook secret provided during registration. Webhooks support automatic retries with exponential backoff.
Yes. The customFields property accepts any valid JSON—objects, arrays, strings, numbers, booleans. Store user IDs, order numbers, session data, error logs, or any context your app needs. No schema configuration required.
Create a brand (workspace) for each tenant. Brands are isolated containers with separate ticket queues, custom email domains, and settings. One API key can access all brands, making it ideal for platforms, marketplaces, and agencies serving multiple clients.
API key authentication via Bearer token in the Authorization header. Keys are scoped to your account and can access all brands. For customer-facing portals, use our embeddable widget which handles authentication automatically.
Use the API to create tickets, list a customer's tickets, and add comments. Authenticate customers in your app, then make API calls on their behalf using their email as the customerEmail field. Our open-source admin UI (Next.js + shadcn/ui) can be forked as a starting point.
Yes. Configure inbound email to automatically create tickets when customers email your support address. Outbound notifications are sent when agents reply. Custom domains ([email protected]) are available on paid plans. Works with any email provider—we use Postmark for inbound and Resend for outbound.