API Documentation
The REST API allows developers to hook into ClientExec and connect it to third-party applications.

Build deep integrations,
expose your service for external needs,
or just make CE work the way you want

Rest API Overview

The ClientExec REST API allows developers to hook into ClientExec and connect it to third-party applications. Whether you're writing a plugin for an application or planning on hooking some internal application into ClientExec, the API can do it for you.

The ClientExec API is implemented as JSON over HTTP using all four REST commands: GET, POST, PUT and DELETE. Every resource, like Ticket, User or Invoice, has their own URL and are manipulated in isolation. The API closely follows the REST principles and it's easy to use.

You can explore the GET part of the API through any browser. We recommend Chrome.

Authentication

Use of the API is always through an App key. You can generate your Application Key in Settings > Security > Application Key. Security is provided via SSL if your ClientExec installation supports it, which is always recommended.

Rate Limiting for Hosted Solutions (Remote)

This API is rate limited for hosted solutions, we only allow a certain number of requests per minute. We reserve the right to adjust the rate limit for given endpoints in order to provide a high quality of service for all clients. As an API consumer, you should expect to be able to make at least 200 requests per minute.

If the rate limit is exceeded, ClientExec will respond with a HTTP 429 Too Many Requests response code and a body that details the reason for the rate limiter kicking in. Further, the response will have a Retry-After header that tells you for how many seconds to sleep before retrying. You should anticipate this in your API client for the smoothest possible ride.

Additional Notes

When documenting a resource, we use curly braces for identifiers, like {yourdomain} when talking about the domain for your ClientExec installation and ticket you are retrieving, i.e. https://{yourdomain}/api/ticket/{ticket#}