Home / Basics / Highnote API

API Rate Limiting

Rate limits

By default, the test environment has 50% of the rate limit of the live environment.

To maintain optimal performance, an API rate limit limits the number of requests a client can make within a specific time frame. The Highnote platform has different rate limit types:

  • Request
  • Complexity

Rate limiting is based on which type you hit first. Each type has a specific rate limit for each Auth/API type:

Request rate limits

Auth/API TypeLimitNote
API key200 requests per 10 secondsAggregate limit across all API keys assigned to an org
Client token20 requests per 10 seconds per user/subject
REST API200 requests per 10 seconds

Complexity rate limits

Auth/API TypeLimitNote
API key5,000 complexity per 10 secondsAggregate limit across all API keys assigned to an org
Client token5,000 complexity per 10 seconds per user/subject
REST APIN/A

For more information on calculating request complexity, see Request Complexity.

Rate limited responses

If your request is rate limited, the Highnote API will return a 429 TOO MANY REQUESTS status code.

If you exceed the API rate limit, the cost field will not be present in your API response. Instead of giving the query cost, the Highnote API uses a retryAfter field to show how long to wait before retrying.

The following example represents a response of a rate-limited API request:

Rate Limited Response Example
{
  "errors": [
    {
      "message": "Usage limit exceeded. More than x request complexity points used in y seconds. See https://highnote.com/docs/basics/graphql-api/api-rate-limiting for details on how to handle API rate limits."
    }
  ],
  "extensions": {
    "rateLimit": {
      "limit": 5000,
      "remaining": 50,
      "retryAfter": 10
    },
    "requestId": "REQUEST_ID"
  }
}

Best practices

Refer to the following best practices to avoid hitting rate limits:

  • Avoid polling: Avoid polling the API for asynchronous updates by registering a webhook target to receive notification events. To learn more, see Notifications.
  • Use pagination: When querying for listed data, use pagination to limit the number of requested items.
  • Implement exponential backoff: Implement retries with exponential backoff when an API request receives a 429 TOO MANY REQUESTS response. Use the following resources to implement exponential backoff:

Provide Feedback

Was this content helpful?