Zendesk Support API for searching tickets, organizations, and users. Use when working with support tickets, customer issues, or correlating support data with Salesforce accounts.
72
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
The canonical home for this skill is Zendesk in jdrhyne/agent-skills
Access Zendesk support data — tickets, organizations, users, and search.
Store credentials in ~/.config/zendesk/credentials.json:
{
"subdomain": "your-subdomain",
"email": "you@company.com",
"api_token": "YOUR_API_TOKEN"
}Get your API token from: Zendesk Admin → Apps & Integrations → APIs → Zendesk API → Add API Token.
ZD_CREDS=~/.config/zendesk/credentials.json
ZD_SUBDOMAIN=$(jq -r '.subdomain' $ZD_CREDS)
ZD_EMAIL=$(jq -r '.email' $ZD_CREDS)
ZD_TOKEN=$(jq -r '.api_token' $ZD_CREDS)
ZD_AUTH="$ZD_EMAIL/token:$ZD_TOKEN"
ZD_BASE="https://$ZD_SUBDOMAIN.zendesk.com/api/v2"
curl -s -u "$ZD_AUTH" "$ZD_BASE/tickets.json?per_page=1"curl -s -u "$ZD_AUTH" "$ZD_BASE/tickets.json?sort_by=created_at&sort_order=desc&per_page=25" | \
jq '[.tickets[] | {id, subject, status, priority, created: .created_at, updated: .updated_at, org_id: .organization_id}]'curl -s -u "$ZD_AUTH" "$ZD_BASE/tickets/TICKET_ID.json" | jq '.ticket'curl -s -u "$ZD_AUTH" "$ZD_BASE/tickets/TICKET_ID/comments.json" | \
jq '[.comments[] | {author_id, body: .body[0:500], created: .created_at, public}]'# By status
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+status:open" | jq '.results'
# By organization name
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+organization:\"Acme Corp\"" | jq '.results'
# By subject keyword
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+subject:billing" | jq '.results'
# By date range
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+created>2025-01-01" | jq '.results'
# Combined
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+status:open+priority:high" | jq '.results'curl -s -u "$ZD_AUTH" "$ZD_BASE/organizations.json?per_page=100" | \
jq '[.organizations[] | {id, name, domain_names, created: .created_at}]'curl -s -u "$ZD_AUTH" "$ZD_BASE/organizations/autocomplete.json?name=Acme" | jq '.organizations'curl -s -u "$ZD_AUTH" "$ZD_BASE/organizations/ORG_ID.json" | jq '.organization'curl -s -u "$ZD_AUTH" "$ZD_BASE/organizations/ORG_ID/tickets.json" | \
jq '[.tickets[] | {id, subject, status, priority, created: .created_at}]'curl -s -u "$ZD_AUTH" "$ZD_BASE/users.json?per_page=100" | \
jq '[.users[] | {id, name, email, role, organization_id}]'curl -s -u "$ZD_AUTH" "$ZD_BASE/users/search.json?query=user@example.com" | jq '.users'curl -s -u "$ZD_AUTH" "$ZD_BASE/users/USER_ID/tickets/requested.json" | jq '.tickets'curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+status<solved" | \
jq 'group_by(.priority) | map({priority: .[0].priority, count: length})'TODAY=$(date +%Y-%m-%d)
curl -s -u "$ZD_AUTH" "$ZD_BASE/search.json?query=type:ticket+created>=$TODAY" | \
jq '{count: .count, tickets: [.results[] | {id, subject, status, requester_id}]}'To match Zendesk organizations to Salesforce accounts:
domain_names to Salesforce Account Websitename to Salesforce Account NameACCOUNT_NAME="Acme Corp"
curl -s -u "$ZD_AUTH" "$ZD_BASE/organizations/autocomplete.json?name=$(echo $ACCOUNT_NAME | jq -sRr @uri)" | jq '.organizations'| Endpoint | Method | Use |
|---|---|---|
/tickets.json | GET | List tickets |
/tickets/{id}.json | GET | Get ticket details |
/tickets/{id}/comments.json | GET | Get ticket comments |
/search.json?query= | GET | Search (tickets, users, orgs) |
/organizations.json | GET | List organizations |
/organizations/{id}.json | GET | Get org details |
/organizations/{id}/tickets.json | GET | Get org's tickets |
/organizations/autocomplete.json?name= | GET | Search orgs by name |
/users.json | GET | List users |
/users/search.json?query= | GET | Search users |
/users/{id}/tickets/requested.json | GET | Get user's tickets |
Responses include pagination info:
{
"tickets": [...],
"next_page": "https://...",
"previous_page": null,
"count": 4294
}Use page parameter or follow next_page URL.
X-Rate-Limit-Remaining header| Operator | Example | Description |
|---|---|---|
: | status:open | Exact match |
> < >= <= | created>2025-01-01 | Date/number comparison |
* | subject:billing* | Wildcard |
"" | "exact phrase" | Phrase match |
- | -status:closed | Negation |
type: | type:ticket | Filter by type |
xxx in xxx.zendesk.combap-jorkim/agent-skills-fork-feb-25
f4ed46f
Canonical home
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.