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 How Apps framework client.request works.

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.