PollyHub

Zendesk Connector

Clean

Access Zendesk customer support with managed OAuth to create, search, update, and manage tickets, users, and organizations using the Zendesk REST API v2.

SKILL.md

---
name: zendesk-connector
description: "Access Zendesk customer support with managed OAuth. Create, search, update, and manage tickets, users, and organizations. Use when the user wants to create a support ticket, search Zendesk tickets, update ticket status, list users, or manage Zendesk customer data."
metadata:
  polly:
    polly_managed_connector: true
    auth:
      - env: ZENDESK_ACCESS_TOKEN
        type: oauth2
        integration_id: zendesk
        description: Zendesk OAuth access
        scopes:
          - read
          - write
    primaryEnv: ZENDESK_ACCESS_TOKEN
---

# Zendesk Connector

Access Zendesk customer support through the Zendesk REST API v2 using managed OAuth.

## First-Time Setup

If Zendesk is not connected yet, run:

`manage_auth(action="connect", integration_id="zendesk", auth_env="ZENDESK_ACCESS_TOKEN")`

## Auth & Security

- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails, reconnect with:
  `manage_auth(action="connect", integration_id="zendesk", auth_env="ZENDESK_ACCESS_TOKEN")`

## Base URL

`https://{subdomain}.zendesk.com/api/v2`

The subdomain is organization-specific. All requests include:

`Authorization: Bearer $ZENDESK_ACCESS_TOKEN`

## Quick Usage

List tickets:

```bash
curl -sS \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  "https://<subdomain>.zendesk.com/api/v2/tickets?page[size]=10"
```

Get a ticket:

```bash
curl -sS \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  "https://<subdomain>.zendesk.com/api/v2/tickets/<ticketId>"
```

Create a ticket:

```bash
curl -sS -X POST \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket":{"subject":"New support request","description":"Details of the issue","priority":"normal"}}' \
  "https://<subdomain>.zendesk.com/api/v2/tickets"
```

Update a ticket:

```bash
curl -sS -X PUT \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket":{"status":"solved","comment":{"body":"Issue resolved.","public":true}}}' \
  "https://<subdomain>.zendesk.com/api/v2/tickets/<ticketId>"
```

Search tickets:

```bash
curl -sS \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  "https://<subdomain>.zendesk.com/api/v2/search.json?query=type:ticket+status:open"
```

List users:

```bash
curl -sS \
  -H "Authorization: Bearer $ZENDESK_ACCESS_TOKEN" \
  "https://<subdomain>.zendesk.com/api/v2/users?page[size]=10"
```

## Rules

- The subdomain is organization-specific — ask the user or derive it from their Zendesk URL
- Search uses Zendesk search syntax (e.g., `type:ticket status:open assignee:me`)
- For pagination, use cursor-based pagination with `page[size]` and `page[after]` parameters
- On API errors, surface status + response body clearly
- On 401/403, reconnect with `manage_auth(action="connect", integration_id="zendesk", auth_env="ZENDESK_ACCESS_TOKEN")`
- Never log, echo, or expose credential values in any output
Authorstella
Downloads10
Versions2
Published1d ago
Auth Requirements
ZENDESK_ACCESS_TOKENoauth2

integration: zendesk

Version History

v1.1.0latest

Add polly_managed_connector flag and connector-skill tag

Apr 9, 2026

Clean.zip
v1.0.0

Initial release of v0.8 Tier 3 connectors

Apr 9, 2026

Clean.zip

SHA-256 (latest)

a75c5419c5d2e520dd4edffed31d84932e78d139355c589f114b92a8d4f2a8bf