> 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/webhook/failures-errors-and-retries/response-codes-are-your-server.md).

# Are my webhook 401/404/500 errors on Terra's side?

The HTTP status shown next to a [webhook delivery](https://docs.tryterra.co/health-and-fitness-api/integration-setup/setting-up-data-destinations/webhooks) in the dashboard is the response **your** endpoint (or a proxy in front of it) returned, not an error generated by Terra. Terra's own pipeline only ever emits `504` (timeout), `503` (connection refused/reset) or `500` (no usable response). Any other code, such as `401`, `404`, `429` or `507`, is recorded exactly as your server returned it.

Interpret accordingly:

* `404`: the configured destination URL is wrong or unreachable.
* `401`: auth middleware is rejecting Terra's unauthenticated POST. **Let the webhook route accept it and verify via the signature header instead.**
* `429`: your endpoint is rate-limiting deliveries.
* `500`: your handler threw while processing.
* `504`: your server took too long to respond.

Check your server logs and confirm the dashboard destination URL matches a live route. Once the endpoint returns `2xx`, delivery resumes automatically.
