---
title: "Verify a webhook endpoint URL"
method: POST
path: "/v1/webhooks/{id}/verify"
tags: ["Webhooks"]
---

# Verify a webhook endpoint URL

`POST /v1/webhooks/{id}/verify`

## Request

- Base URL: `https://api.astrocal.dev`
- URL: `https://api.astrocal.dev/v1/webhooks/{id}/verify`
- Auth: HTTP bearer

Proves that the destination wants Astrocal traffic. With an empty body, Astrocal POSTs a challenge to the endpoint URL and requires it echoed back in the response body — either as `{"challenge": "..."}` or as plain text — with a 2xx status within 5 seconds.

If your receiver cannot control its response body, read the challenge from its request log and send it back here as `{"challenge": "whchal_..."}`.

Attempts are limited to 5 per endpoint per hour and 20 per organization per hour.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `challenge` string

## Response `200`

Verification attempted — check `verification_status` for the outcome

- object
  - `verification_status` 'pending' | 'verified' | 'failed', required
  - `verified_at` string, nullable, required
  - `verification_last_error` string, nullable, required

## Other responses

- `401`: Unauthorized
- `404`: Webhook endpoint not found
- `409`: Webhook endpoint is already verified
- `429`: Too many verification attempts

---

[API](https://skmtc.dev/astrocal/apis/astrocal-api.md) · [All operations](https://skmtc.dev/astrocal/apis/astrocal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/astrocal/apis/astrocal-api/revisions/3b953e19a348?raw)
