This page provides details about rate limiting for app migration, and can help you understand how to anticipate rate limiting and manage how your app responds.
This page is specific to Connect apps. For Forge apps, follow these rate limiting guidelines.
When calling app migration APIs we highly recommend that vendors implement exponential backoffs and retries to increase resilience to events affecting API call responses, such as:
It is vital that apps handle responses with the HTTP 429 Too Many Requests status code, the Retry-After header, HTTP 5xx server errors, and network timeouts.
Apps should treat receiving a 429 HTTP response, a Retry-After header, or HTTP 5xx errors as signals to retry the request after an appropriate delay.
When implementing retries for app migration API calls, we recommend following these best practices:
Retry requests in the following scenarios:
Retry-After header if presentHTTP 408 - Request TimeoutHTTP 500 - Internal Server ErrorHTTP 502 - Bad GatewayHTTP 503 - Service UnavailableHTTP 504 - Gateway TimeoutYou must only retry requests that are safe to retry multiple teams without changing the result.
The following articles provide useful insights and techniques related to retry and backoff processing:
As with all web requests, you may receive HTTP 429 Too Many Requests responses for requests made to the app migration platform
from the cloud app. When this occurs, check for the Retry-After header and implement exponential backoff as described above.
When calling the app migration platform methods from your server app, if the rate limit is exceeded you will receive a RuntimeException
with an exception message App migration API rate limit exceeded..
You will get this new exception message for the following versions of Cloud migration assistant:
During Jira app migration, apps may be subject to both a point-based 'quota' rate limit and a 'burst-rate' limit mechanism in which they may receive 429 responses. The documentation in Jira Cloud Platform rate limiting explains these mechanisms further.
To ensure your app migration code does not impact any other Confluence customer on the same infrastructure,
you must include the HTTP header Migration-App with each request to any
Confluence REST API. You can use any value with this header.
See an example
1 2Migration-App: true
Use this header to ensure that your migration path does not impact customers, and avoids the possibility that your app key can be banned from app migration.
The table below details the current rate limits in Confluence.
| Limit | Frequency | Time |
|---|---|---|
| 6000 requests | per app per Confluence cloud instance | one minute |
| 12000 requests | per Confluence cloud instance | one minute |
As with all web requests, you may receive HTTP 429 Too Many Requests responses.
Activity by other users of your app, or by other apps / users on the same cloud site may consume some of the quota that would be available to you. To prepare for such variability, all apps need to implement the retry policy of rate limiting responses.
Rate this page: