Zendesk Support Tickets
Lets an agent run a Zendesk Support queue: search and list tickets, read the conversation, create tickets, and update status, priority, assignee and tags or add a public reply or internal note. It can also look up requesters, views, ticket fields and macros. Curated from Zendesk's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with Zendesk Support Tickets via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /api/v2/search |
searchTickets | Search tickets, users or organizations with Zendesk query syntax |
| GET | /api/v2/tickets |
listTickets | List recent tickets |
| POST | /api/v2/tickets |
createTicket | Create a new ticket |
| GET | /api/v2/tickets/{ticket_id} |
getTicket | Get one ticket's details |
| PUT | /api/v2/tickets/{ticket_id} |
updateTicket | Update a ticket or add a public reply / internal note |
| GET | /api/v2/tickets/{ticket_id}/comments |
listTicketComments | Read a ticket's conversation (public replies and internal notes) |
| GET | /api/v2/users/search |
searchUsers | Find users (requesters, agents) by name or email |
| GET | /api/v2/views |
listViews | List ticket views (queues) |
| GET | /api/v2/views/{view_id}/tickets |
listViewTickets | List the tickets in a view |
| GET | /api/v2/ticket_fields |
listTicketFields | List ticket fields, including custom field ids and options |
| GET | /api/v2/macros |
listMacros | List macros (canned responses and actions) |
Authentication
zendeskApiToken
HTTP Basic
HTTP Basic auth with a Zendesk API token.
How to get a credential
- Sign in to Zendesk as an admin and open Admin Center > Apps and integrations > APIs > Zendesk API.
- Turn on Token access and click Add API token; give it a description (e.g.
VX Agents) and copy the token (shown once). - Username:
{agent email}/token(the literal text/tokenafter the email, e.g.[email protected]/token). Password: the API token. - The agent acts as that user, so use an agent account with access to the groups and tickets it should handle.
Permissions used
| Access | Operations |
|---|---|
| Agent (read) | listTickets, getTicket, listTicketComments, searchTickets, searchUsers, listViews, listViewTickets, listTicketFields, listMacros |
| Agent (write tickets) | createTicket, updateTicket (status, priority, assignee, tags, public reply or internal note) |
Common errors
- 401 Unauthorized: wrong username format (must end in
/token), token deleted, or token access turned off. - 403 Forbidden: the user is an end user or lacks access to that ticket's group/brand.
- 400 / 422 Unprocessable Entity: invalid field value (e.g. unknown status, custom field id, or an empty comment body).
- 429 Too Many Requests: plan rate limit reached. Wait
Retry-Afterseconds.
Store the email/token pair as a VX Agents Basic credential, and set the subdomain server variable to your Zendesk subdomain.
Usage guide
Setup
- Credential: HTTP Basic with username
[email protected]/tokenand a Zendesk API token as the password. - Set the server variable
subdomainto your account (forhttps://acme.zendesk.comuseacme). Requests fail with a DNS/404 error until this is set. - Worth pinning as presets: the agent's own user id (for
assignee_id) and the group id your team works in.
Triage a ticket queue
- Find work:
searchTicketswithquerysuch astype:ticket status:open assignee:none,type:ticket status<solved priority:urgent,type:ticket requester:[email protected] created>7days, sorted withsort_by=updated_at&sort_order=desc. OrlistViewsthenlistViewTicketsfor an existing queue. getTicket, thenlistTicketCommentsto read the whole conversation (public: falsecomments are internal notes).listTicketFieldsonce to learn custom field ids and allowed values;listMacros(active=true) to reuse the team's canned answers.- Draft the reply and show it to the user. After they confirm,
updateTicketwith{"ticket": {"comment": {"body": "...", "public": true}, "status": "pending"}}. For an internal note use"public": false(no customer email is sent). - Classify in the same call:
priority(low/normal/high/urgent),assignee_idorgroup_id,tags(replaces all tags),custom_fields: [{"id": 123, "value": "x"}]. - New issue:
searchUserswithquery=emailto find the requester, thencreateTicketwithsubject,comment.bodyandrequester_id(orrequester: {name, email}).
Good to know
- A public comment emails the customer: confirm the text before sending. Confirm before setting
status: solved/closed; closed tickets cannot be reopened. - Statuses:
new,open,pending,hold,solved,closed. - Times are ISO 8601 UTC. Search relative dates:
created>2026-10-01,updated<3days. - Search returns at most 1,000 results (100 per page); follow
next_page. tagson update replaces the list; read the current tags first and send the full list.- No delete operations by design.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Zendesk Support Tickets” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.