The Zendesk API, Practically

Almost everything in the agent interface is available over the Zendesk API. Knowing which endpoint and which limit applies is most of the work.

Zendesk API authentication

Three options, in increasing order of seriousness.

API token with an email address. Fastest to set up, fine for internal scripts, and it inherits that user permissions.
OAuth for anything customers install, since tokens are scoped and revocable.
Basic auth with a password. Avoid it.

Whichever you use, the credential carries a real user permissions, so create a dedicated service user rather than borrowing an admin account somebody might deactivate.

The endpoints you will actually use

Tickets. Create, update, list and show. Use side-loading to pull users and organizations in one request instead of a request per ticket.
Ticket comments. Separate from the ticket itself, which surprises people building an export.
Search. Convenient and rate limited more aggressively than the rest. Do not use it to enumerate large sets.
Incremental exports. The correct way to pull large volumes, cursor-based and designed for it.
Merge. Yes, the API can merge one ticket into another. It can't tell you which two.
Webhooks and triggers. For reacting to changes rather than polling for them.

Rate limits, and how to live with them

Limits vary by plan and by endpoint. Assume you'll hit them and build for it.

Honour the Retry-After header on a 429 rather than retrying immediately.
Use exponential backoff with jitter, so a fleet of workers does not synchronise into a thundering herd.
Prefer webhooks to polling. Most rate limit problems are a poll loop that could have been an event.
Batch and side-load. One request with side-loaded users beats fifty requests for users.

What the API won't do for you

It exposes actions, not judgement. PUT /api/v2/tickets/{id}/merge will merge two tickets the moment you name them, and deciding which two is the entire problem.

Teams do build duplicate detection on top of it, and the honest version of that project is: maintain a live index of open tickets, compute similarity across subject and body, handle identity matching across email addresses and domains, tune thresholds, add exclusions, handle the rate limits, and keep it working as your queue changes. That's a product, not a script, which is why Ticket Merger exists.

FAQ

Frequently asked questions

Where is the Zendesk API documentation?

At developer.zendesk.com, split by product. The Zendesk API documentation for Support covers tickets, users and organizations, while Sell, Chat and the apps framework each have their own reference.

Can the Zendesk API merge tickets?

Yes, there's a merge endpoint. It merges tickets you specify. Identifying the duplicates isn't part of it.

What's the Zendesk API rate limit?

It varies by plan and endpoint, and search is limited more tightly than the rest. Build for 429 responses and honour Retry-After.

Should I poll or use webhooks?

Webhooks, wherever you can. Polling burns your rate limit and adds latency for no benefit.

Skip the six-week build

Duplicate detection on the API is a product, not a weekend script. This one is already built and maintained.

Start free trial

14-day free trial. No credit card required.