How to Build an AI Agent for Zendesk (2026): API Route vs Native Connector
An AI agent for Zendesk reads each new ticket, looks up the customer, answers from your Help Center, and replies or escalates. You can code one against the Zendesk API in a few weeks, or connect a platform that already speaks Zendesk and test it on real tickets the same day.
Key takeaways
- Building a Zendesk AI agent against the API takes weeks plus upkeep, while a native OAuth connector such as Macha can run an agent on real tickets the same day.
- Zendesk's Support API allows 200 requests a minute on Team, 400 on Professional and 700 on Enterprise, so a custom agent must honour the Retry-After header on 429 errors.
- A custom Zendesk agent's webhook endpoint should verify the X-Zendesk-Webhook-Signature header, a base64 HMAC-SHA256 of timestamp plus body, and dedupe deliveries to avoid double replies.
- Zendesk's built-in AI agents are billed per automated resolution, at $1.50 committed or $2.00 pay-as-you-go according to Zendesk's pricing page.
- Macha connects to Zendesk over OAuth, and the Macha team builds the agent, tests it on your past tickets and runs it in safe mode for you, at about $0.40 a ticket from $299 a month for 750 tickets, with a dedicated success manager included.
You build an AI agent for Zendesk in one of two ways: code it against the Zendesk REST API (Tickets API, a webhook on new tickets, and 200 to 700 requests a minute depending on plan), or connect a platform that already speaks Zendesk over OAuth. The API route takes weeks plus upkeep; a native connector such as Macha can run an agent on real tickets the same day.
| Build on the Zendesk API | Connect Macha | |
|---|---|---|
| Read/reply to tickets | You write the API client | Native connector (OAuth) |
| Trigger on new tickets | You build a webhook endpoint | Handled |
| Ground on Help Center | You embed + host a vector store | Help Center auto-sync as a Source |
| Hosting, retries, observability | Your infrastructure | Built in |
| Evaluate before go-live | You build a harness | Simulations replay past tickets |
| Time to a live agent | Weeks + ongoing | Same day to test; live in under a week |
| Setup | Your engineers | Done for you by the Macha team, with a dedicated success manager, included |
What does a Zendesk AI agent do?
The loop is the same as any support agent, wired to Zendesk: a new ticket arrives → the agent reads it and the requester's history → it calls tools (look up the order, search your help center, check a policy) → it posts a reply as a public comment or routes the ticket to a human. The hard part is doing that reliably against real tickets. (New to agents generally? Start with AI agents for customer service.)
How do you build it against the Zendesk API?
Zendesk has a full REST API, so you can build the agent yourself. The pieces:
- Read tickets: the Tickets API and Search API to pull the ticket, its comments and the requester.
- Reply / act: update the ticket or add a comment via the API.
- Trigger on new tickets: a Zendesk trigger or webhook fires your endpoint when a ticket is created.
A reply tool against the real Zendesk API looks like this:
import requests
ZD = "https://yourco.zendesk.com/api/v2"
AUTH = (f"{EMAIL}/token", API_TOKEN)
def reply_to_ticket(ticket_id: str, body: str):
r = requests.put(f"{ZD}/tickets/{ticket_id}.json",
json={"ticket": {"comment": {"body": body, "public": True}}},
auth=AUTH, timeout=10)
r.raise_for_status() # handle 429 rate limits, token refresh
return {"status": "sent"}
Wrap that (and a get_requester, a search_help_center) as tools in an agent loop on the model of your choice. Our from-scratch walkthrough is in how to build an AI agent: from scratch vs. platform.
What does the production part involve?
The API calls are the easy bit; making the agent run on real tickets is the work. You stand up a webhook to trigger the agent. It should verify Zendesk's signature (the X-Zendesk-Webhook-Signature header is a base64 HMAC-SHA256 of the timestamp header plus the raw body, keyed with the webhook's signing secret) and dedupe repeat deliveries so one ticket never gets two replies:
from fastapi import FastAPI, Request, HTTPException
app = FastAPI()
@app.post("/zendesk-webhook")
async def on_ticket(req: Request):
verify_zendesk_signature(req) # HMAC over the raw body
event = await req.json()
if already_handled(event["detail"]["id"]): # idempotency: Zendesk retries
return {"ok": True}
run_agent(event["detail"]["id"])
return {"ok": True}
Then the rest. Rate limits: Zendesk's Support API allows 200 requests a minute on Team, 400 on Professional and 700 on Enterprise (2,500 with the High Volume API add-on), and the Update Ticket endpoint has its own cap of 100 requests a minute per account. On a 429, wait the seconds given in the Retry-After header. Grounding in your Help Center (embed the articles via the Help Center API and re-index when they change), guardrails (escalate refunds, redact PII, treat ticket text as untrusted input), hosting 24/7, observability, and an eval harness over real historical tickets. That's weeks of work plus permanent upkeep, and it's the same plumbing every support agent needs.
How do you connect a native Zendesk agent instead?
If the goal is a working agent on your Zendesk, not a project to maintain, a platform that connects natively is far faster. Macha runs on top of Zendesk (and on Zendesk, Freshdesk, Gorgias, Front, HubSpot or Intercom). It's not a Zendesk replacement or a Support app you install; it connects via OAuth and works autonomously:
- One-click connect: authorize Zendesk and the agent can read tickets and custom fields, view image attachments, post public replies or internal notes, and update statuses and tags.
- Ground on your Help Center: your Zendesk Help Center syncs as a Source so replies quote real articles.
- Any other system as a tool: Custom Tools turn your order and billing APIs into agent capabilities by describing them.
- Runs and grades: triggers run the agent on every new ticket or customer message; Agent Analytics show every run (including
ticket.createdevents), and simulations replay past tickets against the agent before it goes live.
You also don't have to build it. Macha is the done-for-you option: the Macha team analyzes your past tickets, builds the knowledge base and the agent on your Zendesk, and runs it in safe mode, with drafts as internal notes, until the drafts are right. That's included on the trial and every plan. Pricing is one plan by ticket volume, about $0.40 a ticket from $299 a month for 750 tickets, billed per ticket rather than per message, and it includes setup and a dedicated success manager who handles your changes. More on the Zendesk integration on our Macha on Zendesk page.
What about Zendesk's own AI agents?
Zendesk sells built-in AI agents (the lineage of the old Answer Bot), configured no-code in the Admin Center. Its pricing page says they are billed per automated resolution and lists the rate: $1.50 committed or $2.00 pay-as-you-go. The same page includes 5 automated resolutions per agent a month on Support Team and Suite Team and 10 on Suite Professional (up to 10,000 a year), which Zendesk's help center describes as a monthly dollar allowance per seat ($2, $5 or $10 by plan since 18 May 2026, capped at $5,000 a year). A quick rule of thumb for the three routes:
- Zendesk's native AI: fastest no-code setup, you're happy on Zendesk's model, and per-resolution pricing works for your volume. Least control, least effort.
- Build on the Zendesk API yourself: you need a specific model, custom tools wired to your own systems (orders, billing), or full control of the runtime, and you have the engineering to own it. Most control; weeks to build plus permanent upkeep (hosting, evals, maintenance).
- Connect a model-agnostic platform (Macha): the control and model choice of building, but live in days instead of weeks, with the hosting, observability and eval harness handled for you.
So which should you build?
Build on the API if you need a fully custom runtime, have strict data-residency needs, or the agent is your product. For most Zendesk teams who just want tickets resolved, a native connector gets you a measurable agent on your real tickets far faster, and you keep your model of choice. You can start free on Macha with $50 of free usage and no credit card, connect Zendesk, and test an agent on your own tickets the same day, or let the Macha team build the first one for you and run it in safe mode until it's right.
FAQ
Is a Zendesk AI agent the same as Zendesk's own AI? Not necessarily. Zendesk offers built-in AI agents, but you can also run a model-agnostic agent on top of Zendesk (via its API or a platform like Macha). That helps if you want a specific model, custom tools, or to grade the agent your own way.
Do I need to install a Zendesk app? No. Macha connects to Zendesk via OAuth and works autonomously; it's an AI layer on top of Zendesk, not a Support marketplace app you install.
Can the agent take actions, not just answer? Yes. Via the Zendesk API (update, tag, route) plus your own systems' APIs as tools (order lookups, refunds), with guardrails on what it can do unattended.
How do I make sure it's accurate before it replies to customers? Ground it in your Help Center, replay it against real historical tickets first (Macha's simulations do this), start in a draft/approve mode, and widen autonomy per ticket type as it earns trust. On Macha, the team does this for you: it tests the agent on a sample of your past tickets and posts drafts as internal notes until you approve them.
What rate limit will a custom Zendesk agent hit? The Support API allows 200 requests a minute on Team, 400 on Professional and 700 on Enterprise, and Update Ticket is capped at 100 a minute per account. Back off using the Retry-After header on a 429.

