> 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/help-center/help-topics/no-data/connections-expiring-disconnecting/detect-expirations-via-webhooks-not-polling.md).

# How do I detect expired user connections?

**To check whether a single connection is still valid, make a data request.** If it has been invalidated, the API returns an `authorisation has expired` error. Don't rely on the `active` flag for this.

**To detect expirations proactively, listen for** [**webhook events**](https://docs.tryterra.co/health-and-fitness-api/managing-user-health-data/receiving-data-updates) **rather than polling:**

* Fitbit sends an explicit revocation notice that Terra forwards as a `deauth` webhook.
* For other providers, Terra sends a user `connection_error` webhook when an auth-related error status is detected.

To audit all users in an environment with their last data sync, use the `GET subscriptions` endpoint, which returns each user and their last webhook update timestamp.
