The ticketing API for developers

Not another helpdesk with an API bolted on. Tickets are the primitive. Build exactly what you need.

app.ts
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

Create a ticket
const ticket = await dispatch.tickets.create({
  brandId: 'br_xxx',
  title: 'Cannot access my account',
  customerEmail: '[email protected]'
});
List tickets
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.