> ## Documentation Index
> Fetch the complete documentation index at: https://lava.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Zendesk

> Zendesk Support API for reading and writing tickets, users, organizations, and search across a Zendesk help-desk instance.

Zendesk Support API for reading and writing tickets, users, organizations, and search across a Zendesk help-desk instance. Best for agents that triage incoming tickets, look up customer history, post replies as an internal note or public comment, or sync support data into other systems. Tenants are subdomained at {subdomain}.zendesk.com; users connect by pasting their subdomain plus an admin/agent email and an API token generated in Zendesk Admin Center.

12 example endpoints available through Lava's AI Gateway. See the [Zendesk API docs](https://developer.zendesk.com/api-reference/) for full documentation.

<Warning>This provider requires your own credentials — connect your API key or OAuth account before use.</Warning>

<Info>This is a **catch-all provider** — any valid URL under `https://api.zendesk.com` is supported. Zendesk Support API. URL is tenant-specific: https\://\{subdomain}.zendesk.com/api/v2/\{path}. Common roots: /tickets.json (list/create), /tickets/\{id}.json (show/update/delete), /tickets/\{id}/comments.json (list comments), /search.json?query=... (cross-resource search), /users.json (list/create), /users/\{id}.json (show), /users/me.json (current user), /organizations.json, /organizations/\{id}.json. Pagination: append page\[size]=N (max 100) plus page\[after] for cursor pagination on list endpoints. Search rate-limited to 100 req/min per account; other endpoints follow the account plan limits. See [https://developer.zendesk.com/api-reference/](https://developer.zendesk.com/api-reference/) for full reference. The endpoints below are curated examples.</Info>

## Endpoints

### List recent tickets. Supports cursor pagination via page\[size]=N (max 100) and page\[after]. Use sort\_by + sort\_order for ordering (e.g., updated\_at desc).

**GET** `https://<tenant>.zendesk.com/api/v2/tickets.json?page[size]=25&sort_by=updated_at&sort_order=desc` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets.json?page[size]=25&sort_by=updated_at&sort_order=desc', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets.json%3Fpage%5Bsize%5D%3D25%26sort_by%3Dupdated_at%26sort_order%3Ddesc" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve a single ticket by ID. Add ?include=users,groups,organizations,comment\_count to sideload related records.

**GET** `https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json?include=users` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json?include=users', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets%2F%7Bticket_id%7D.json%3Finclude%3Dusers" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Create a new ticket. The first comment becomes the initial message; pass requester (by id or email) when creating on behalf of an end-user.

**POST** `https://<tenant>.zendesk.com/api/v2/tickets.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets.json', {
      body: {
    "ticket": {
      "subject": "Cannot access account",
      "comment": {
        "body": "Customer reports being locked out after reset."
      },
      "requester": {
        "name": "Ada Lovelace",
        "email": "ada@example.com"
      },
      "priority": "normal"
    }
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"ticket":{"subject":"Cannot access account","comment":{"body":"Customer reports being locked out after reset."},"requester":{"name":"Ada Lovelace","email":"ada@example.com"},"priority":"normal"}}'
    ```
  </Tab>
</Tabs>

### Update a ticket. Pass any subset of ticket fields. Set comment.public=false for an internal note. Status transitions: new → open → pending → solved → closed.

**PUT** `https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json', {
      method: 'PUT',
      body: {
    "ticket": {
      "status": "pending",
      "priority": "high",
      "comment": {
        "body": "Awaiting customer reply with the latest receipt.",
        "public": false
      }
    }
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X PUT "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets%2F%7Bticket_id%7D.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"ticket":{"status":"pending","priority":"high","comment":{"body":"Awaiting customer reply with the latest receipt.","public":false}}}'
    ```
  </Tab>
</Tabs>

### List the comment thread on a ticket, oldest first. Internal notes appear with public=false.

**GET** `https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}/comments.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}/comments.json', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets%2F%7Bticket_id%7D%2Fcomments.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Search across tickets, users, organizations, and groups using the Zendesk query syntax. Rate-limited to 100 req/min/account; returns up to 1000 results per query.

**GET** `https://<tenant>.zendesk.com/api/v2/search.json?query=type:ticket+status:open+priority:high` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/search.json?query=type:ticket+status:open+priority:high', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Fsearch.json%3Fquery%3Dtype%3Aticket%2Bstatus%3Aopen%2Bpriority%3Ahigh" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### List users. Filter with ?role=end-user|agent|admin. Cursor pagination via page\[size] and page\[after].

**GET** `https://<tenant>.zendesk.com/api/v2/users.json?page[size]=50&role=end-user` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/users.json?page[size]=50&role=end-user', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Fusers.json%3Fpage%5Bsize%5D%3D50%26role%3Dend-user" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve a single user by ID. Use /users/me.json for the authenticated agent.

**GET** `https://<tenant>.zendesk.com/api/v2/users/{user_id}.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/users/{user_id}.json', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Fusers%2F%7Buser_id%7D.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Create a new end-user, agent, or admin. Email or name is sufficient for an end-user; role defaults to end-user.

**POST** `https://<tenant>.zendesk.com/api/v2/users.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/users.json', {
      body: {
    "user": {
      "name": "Ada Lovelace",
      "email": "ada@example.com",
      "role": "end-user"
    }
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Fusers.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"user":{"name":"Ada Lovelace","email":"ada@example.com","role":"end-user"}}'
    ```
  </Tab>
</Tabs>

### List organizations with cursor pagination.

**GET** `https://<tenant>.zendesk.com/api/v2/organizations.json?page[size]=50` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/organizations.json?page[size]=50', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Forganizations.json%3Fpage%5Bsize%5D%3D50" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve a single organization by ID.

**GET** `https://<tenant>.zendesk.com/api/v2/organizations/{organization_id}.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/organizations/{organization_id}.json', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Forganizations%2F%7Borganization_id%7D.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Delete a ticket by ID. Returns 204 on success. Soft-deleted tickets can be restored from the Deleted Tickets view for 30 days before being permanently purged.

**DELETE** `https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json', { method: 'DELETE' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X DELETE "https://api.lava.so/v1/forward?u=https%3A%2F%2F%3Ctenant%3E.zendesk.com%2Fapi%2Fv2%2Ftickets%2F%7Bticket_id%7D.json" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json"
    ```
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={2}>
  <Card title="All Providers" icon="grid" href="/gateway/supported-providers">
    Browse all supported AI providers
  </Card>

  <Card title="Forward Proxy" icon="route" href="/gateway/forward-proxy">
    Learn how to construct proxy URLs and authenticate requests
  </Card>
</CardGroup>
