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
- Create an API token for the integration user under Admin Center, Integrations, API tokens, with the
writescope. - Point the client at your workspace:
| Client | Setting |
|---|---|
| Plain HTTP | Base URL https://yourcompany.chaosdesk.io/zd/api/v2 |
C# ZendeskApi.Client | Subdomain yourcompany.chaosdesk.io/zd, username {email}/token, the ChaosDesk token |
C# ZendeskApi_v2 | new 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 readers | Base URL https://yourcompany.chaosdesk.io/zd |
- Authenticate as before: Basic
{email}/token:{token},Authorization: Bearer {token}, or OAuth client credentials atPOST /zd/oauth/tokenswithclient_id= the token owner’s email andclient_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
| Area | Endpoints |
|---|---|
| Tickets | GET/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 audits | GET tickets/{id}/comments, GET tickets/{id}/audits, GET tickets/{id}/audits/{audit_id} |
| Tags | GET/POST/PUT/DELETE tickets/{id}/tags |
| Uploads | POST uploads?filename= (the token attaches files to the next comment) |
| Jobs | GET job_statuses/{id} for bulk updates and deletes |
| Search | GET search, GET search/count, with the Zendesk query syntax |
| Incremental export | GET incremental/tickets/cursor, GET incremental/users/cursor, and the time-based variants |
| Users | GET/POST users, GET users/{id}, GET users/me, POST users/create_or_update, GET users/search |
| Organizations, groups | GET 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.