Apps
You use the Zendesk Apps framework (ZAF) to build Zendesk apps. A Zendesk app enhances or extends the functionality of a Zendesk product. The app runs in an iframe that's embedded in one or more locations of the host product. ZAF gives an app access to the host product's resources using the ZAF client and the Apps framework APIs.
The following products support Zendesk apps:
- Support
- Chat
- Sell
ZAF client
An app accesses the host product's resources using an instance of the ZAF client. You can use the client's methods to:
- Listen for events
- Get or set a property, such as a ticket id
- Invoke an action, such as appending text to a ticket comment
You can also use the client's request() method to make requests to a Zendesk or third-party API.
For more information, see the ZAF Client API reference documentation.
Apps framework APIs
The resources available to the ZAF client vary based on the app's host product and location. The Apps framework APIs organize the resources:
-
Core Apps API — Events, properties, and actions for all products and locations that support Zendesk apps
-
Apps Support API — Events, properties, and actions for Support apps
-
Apps Chat API — Events, properties, and actions for Chat apps
-
Apps Sell API — Events, properties, and actions for Sell apps
Authentication
The ZAF client uses the browser's Zendesk session cookie to authenticate method calls. This avoids having to pass authentication information.
The client's request()
method also lets you authenticate API calls using
request headers or query parameters. For more information, see Making API
requests from a Zendesk
app.
Rate limits
Requests from an app to Zendesk APIs are subject to the following rate limits:
If a request exceeds the apps rate limit, ZAF logs a message in the browser console.
If a request exceeds the account rate limit, the Zendesk API returns a response
with an HTTP "429 Too Many Requests" response status code and a
Retry-After
header. By default, ZAF will retry the request after the Retry-After
period
passes. To disable this behavior, set the request()
method's autoRetry
option to false.