Zendesk
Let a support agent work your Zendesk queue without quietly solving the ticket that mattered. It searches and reads tickets, replies, adds internal notes, sets status and priority, assigns and tags, and a reply or a solve can wait for a person.
- host
- {subdomain}.zendesk.com
- connect
- API key, per user
Create ticket
zendesk-create-ticket
Reply to ticket
zendesk-reply-to-ticket
Add internal note
zendesk-add-internal-note
Set ticket status
zendesk-set-ticket-status
Reads and writes in Zendesk. Writes are off until you switch them on.
Each one is a named operation from the pack. Reads change nothing.
Writes
Create ticket
read backzendesk-create-ticket
Create one ticket with a subject and an opening comment. The requester is the user given by requester_id, or by requester email (Zendesk creates an end user for an email it does not know), or the connected agent when both are left out. A public opening comment can be emailed to the requester by the account's triggers.
Reply to ticket
read backzendesk-reply-to-ticket
Send a public reply on one ticket. The requester and the ticket's CCs can be emailed it by the account's triggers.
Add internal note
read backzendesk-add-internal-note
Add an internal note to one ticket. Agents see it; the requester does not.
Set ticket status
read backzendesk-set-ticket-status
Set one ticket's status to open, pending, hold or solved. Solving it can email the requester through the account's triggers, and Zendesk closes a solved ticket later by its own automations.
Set ticket priority
read backzendesk-set-ticket-priority
Set one ticket's priority to low, normal, high or urgent.
Assign ticket
read backzendesk-assign-ticket
Assign one ticket to an agent, and optionally move it to a group the agent belongs to. The agent must belong to the ticket's group, or to the group given.
Add ticket tags
read backzendesk-add-ticket-tags
Add one tag to a ticket. The ticket's other tags stay.
Reads
Search tickets
zendesk-search-tickets
Search tickets with Zendesk's search syntax, e.g. status<solved requester:dana@example.com tags:billing. Returns up to 10 tickets a page in results, with count and next_page. Sort by updated_at, created_at, priority, status or ticket_type (relevance when left out). Pass page for the next page. Zendesk returns at most 1000 results a query; narrow it with a date such as created>2026-10-01. New or changed tickets can take a few minutes to appear in search.
List tickets
zendesk-list-tickets
List the account's tickets, 10 a page, in ascending id order unless sort is given. Each ticket has id, subject, status, priority, type, requester_id, assignee_id, group_id, tags and dates. When meta.has_more is true, pass meta.after_cursor as cursor for the next page. Archived tickets (closed for more than 120 days) are left out by Zendesk. Use search-tickets to filter.
Get ticket
zendesk-get-ticket
Get one ticket: subject, description (the opening comment), status, priority, type, requester_id, assignee_id, group_id, organization_id, tags, custom fields and dates. Read its conversation with list-ticket-comments.
List ticket comments
zendesk-list-ticket-comments
List a ticket's comments, 10 a page, oldest to newest unless sort is -created_at. Each comment has id, author_id, body, html_body, public (false for an internal note), attachments and created_at. When meta.has_more is true, pass meta.after_cursor as cursor for the next page.
List user tickets
zendesk-list-user-tickets
List the tickets one user requested, 10 a page, by ticket id. Use it to see a customer's history. When meta.has_more is true, pass meta.after_cursor as cursor for the next page. Archived tickets are left out by Zendesk.
Search users
zendesk-search-users
Find users (customers and agents) by name, email or other text, e.g. an email address or role:agent. Returns up to 20 users a page in users, each with id, name, email, role, organization_id and tags, with count and next_page. Pass page for the next page.
Get user
zendesk-get-user
Get one user: name, email, role (end-user, agent or admin), organization_id, time zone, locale, tags, whether suspended, and custom user fields.
List groups
zendesk-list-groups
List the account's agent groups, 50 a page, each with id, name, description and whether it is the default group. Use a group id with assign-ticket or create-ticket. When meta.has_more is true, pass meta.after_cursor as cursor for the next page.
How do users connect? Each one brings their own Zendesk.
- 1.Call for the userYour server invokes the action for the signed-in user. Without a Zendesk connection, the SDK throws EndUserNotConnectedError with a connect link.
- 2.The user pastes a keyThe link opens a form that shows where in Zendesk's settings to create the key. The link lasts 10 minutes and works once.
- 3.Anlyon checks itThe key is checked with Zendesk before it is kept, and bound to {subdomain}.zendesk.com. It is never shown back.
- 4.Your server confirmsYour server confirms the connection for the user who is signed in, and the call goes through.
Guardrails. Suggested limits and approvals, for you to review.
Suggested limits
- 50 tickets created a day
- 200 public replies a day
- 300 internal notes a day
- 300 status changes a day
- 200 priority changes a day
- 200 assignments a day
- 300 tags added a day
Suggested approvals
- A person approves replying to a requester
- A person approves creating a ticket
- A person approves solving a ticket
What the key must allow
- An API token, with token access turned on
- Your Zendesk subdomain and the email of the agent the calls act as
Good to know
- The calls act as the agent whose email you give, so pick one whose role fits.
- A closed ticket cannot be changed. An account trigger can change a status again after an update.
For your own account
- 1.In Zendesk, open Admin Center, Apps and integrations, APIs, Zendesk API, turn on token access and add a token.
- 2.In Anlyon, open Actions, then Integrations, and choose Zendesk.
- 3.Enter your subdomain (acme for acme.zendesk.com), an agent's email and the token.
- 4.Anlyon checks them with Zendesk before storing them. They become a secret named ZENDESK, bound to your subdomain's host.
Zendesk in your code. For one of your users, or for your own account.
Act for one of your users from your server, or connect your company's own Zendesk with the CLI.
import { Client, EndUserNotConnectedError } from "@anlyonhq/sdk";const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });try { const { data } = await anlyon .forUser(session.userId) .actions.invoke("zendesk-add-internal-note", { ticket_id: "35436", body: "Refund issued, waiting on the bank." }); return { status: "done", grade: data.grade };} catch (error) { if (error instanceof EndUserNotConnectedError) { // The user connects their own Zendesk, then you call again. return { status: "connect_required", url: error.connectUrl }; } throw error;}Other integrations. Under the same limits, approvals and receipts.
Available
Stripe
Payments · API key
Refunds under a money ceiling, and every customer, payment and invoice to read.
Available
GitHub
Code · API key
Issues, pull requests and code, in the repositories you choose.
Available
HubSpot
CRM · Sign in
Contacts, companies and deals: search them and change them.
- Anlyon app
- Available
- Your own app
- Recommended for production
