Zendesk-compatible API

Keep the Zendesk API clients you wrote yourself. ChaosDesk accepts the same requests at /zd/api/v2 and returns the same response shapes.

Many teams have their own systems that talk to the Zendesk API: internal services using the official SDKs, back-office tools, FAQ widgets on other sites. ChaosDesk answers those requests at /zd/api/v2 with the same request and response shapes, so they change only the base URL and the API token.

Ticket writes go through the normal ticket pipeline: one audit per request, triggers and SLAs run, and the audit actor is the token’s owner.

Switch a client

  1. Create an API token for the integration user under Admin Center, Integrations, API tokens, with the write scope.
  2. Point the client at your workspace:
ClientSetting
Plain HTTPBase URL https://yourcompany.chaosdesk.io/zd/api/v2
C# ZendeskApi.ClientSubdomain yourcompany.chaosdesk.io/zd, username {email}/token, the ChaosDesk token
C# ZendeskApi_v2new ZendeskApi("https://yourcompany.chaosdesk.io/zd/api/v2", email, token)
PHP zendesk_api_client_php$client->setApiBasePath('zd/api/v2/') and your workspace host
Help-centre readersBase URL https://yourcompany.chaosdesk.io/zd
  1. Authenticate as before: Basic {email}/token:{token}, Authorization: Bearer {token}, or OAuth client credentials at POST /zd/oauth/tokens with client_id = the token owner’s email and client_secret = the token. Password authentication is not supported.

Every .json path also answers without .json. Links of the form {BaseUrl}agent/tickets/{id} redirect to the ticket in the agent workspace.

Ids

Imported records keep their Zendesk ids: ticket numbers, user, organization, group and help-centre ids. Records created in ChaosDesk get new ids above the highest imported one.

Endpoints

AreaEndpoints
TicketsGET/POST tickets, GET/PUT/DELETE tickets/{id}, GET tickets/show_many, PUT tickets/update_many, DELETE tickets/destroy_many, GET tickets/count, GET tickets?external_id=
Comments and auditsGET tickets/{id}/comments, GET tickets/{id}/audits, GET tickets/{id}/audits/{audit_id}
TagsGET/POST/PUT/DELETE tickets/{id}/tags
UploadsPOST uploads?filename= (the token attaches files to the next comment)
JobsGET job_statuses/{id} for bulk updates and deletes
SearchGET search, GET search/count, with the Zendesk query syntax
Incremental exportGET incremental/tickets/cursor, GET incremental/users/cursor, and the time-based variants
UsersGET/POST users, GET users/{id}, GET users/me, POST users/create_or_update, GET users/search
Organizations, groupsGET organizations, GET organizations/{id}, GET groups, GET groups/{id}
Help centre (public)GET help_center/{locale}/sections, .../sections/{id}/articles, .../articles/{id}, GET help_center/articles/search

Bulk operations return a job, as in Zendesk. Conflicting updates with safe_update return 409.

What does not move with a base URL

Integrations that you did not write yourself and that are hard-wired to *.zendesk.com (for example the Zendesk app for Zapier, Fivetran’s Zendesk connector or the Zendesk mobile SDKs) cannot be pointed at ChaosDesk. Use the REST API, webhooks or the messenger instead. See switching from Zendesk.

Zendesk is a trademark of Zendesk, Inc. ChaosDesk is not affiliated with, endorsed or sponsored by Zendesk, Inc.; the compatible API exists for interoperability with your own software.