> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/garmin-async-processing-and-cache.md).

# Why does the API return "Request is processing" instead of data?

For some providers (notably Garmin), the first REST request for a given period returns **`Request is processing, try again later`** while the data is fetched asynchronously. This is a processing event with no `data` field, not an error.

{% stepper %}
{% step %}
Wait the seconds given in `retry_after_seconds`.
{% endstep %}

{% step %}
Repeat the identical request. It is then served from cache instantly.
{% endstep %}
{% endstepper %}

Handle incoming payloads by their `type` field and ignore or log non-data event types rather than failing your decoder.

Separately, **Garmin sends data once and expects you to store it.** Terra does not retain provider data indefinitely, so persist data on first receipt; re-requesting older ranges may fail (for example a `500`). To re-trigger a historical pull, you can deauthenticate and reauthenticate the user for a fresh backfill within the provider's limits. See [requesting historical data](https://docs.tryterra.co/health-and-fitness-api/managing-user-health-data/requesting-historical-data).
