Skip to main content

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 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 .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 for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://api.zendesk.com is supported. Zendesk Support API. URL is tenant-specific: https://.zendesk.com/api/v2/. Common roots: /tickets.json (list/create), /tickets/.json (show/update/delete), /tickets//comments.json (list comments), /search.json?query=… (cross-resource search), /users.json (list/create), /users/.json (show), /users/me.json (current user), /organizations.json, /organizations/.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/ for full reference. The endpoints below are curated examples.

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
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' });
GET https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json?include=users — Free
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json?include=users', { method: 'GET' });

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
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"
}
},
});

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
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
  }
}
},
});

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
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}/comments.json', { method: 'GET' });

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
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/search.json?query=type:ticket+status:open+priority:high', { method: 'GET' });

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
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/users.json?page[size]=50&role=end-user', { method: 'GET' });

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
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/users/{user_id}.json', { method: 'GET' });

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
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"
}
},
});

List organizations with cursor pagination.

GET https://<tenant>.zendesk.com/api/v2/organizations.json?page[size]=50 — Free
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/organizations.json?page[size]=50', { method: 'GET' });

Retrieve a single organization by ID.

GET https://<tenant>.zendesk.com/api/v2/organizations/{organization_id}.json — Free
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/organizations/{organization_id}.json', { method: 'GET' });

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
const data = await lava.gateway('https://<tenant>.zendesk.com/api/v2/tickets/{ticket_id}.json', { method: 'DELETE' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests