POST /v1/webhook-endpoints/{endpointId}/verify
curl --request POST \
--url https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"endpoint": {
"id": "whe_0123456789abcdef0123456789abcdef",
"owner_id": "<string>",
"environment": "sandbox",
"name": "<string>",
"url": "<string>",
"events": [
"payment.credentials_ready"
],
"revision": "<string>",
"enabled": true,
"verified_at": "2023-11-07T05:31:56Z",
"deleted_at": null,
"created_at": "2023-11-07T05:31:56Z",
"schema_version": "2026-10-08",
"consecutive_failures": 0,
"circuit_until": null,
"blocked_reason": null
}
}Endpoints
Verify an Endpoint
Prove that your receiver controls the endpoint URL.
POST
/
v1
/
webhook-endpoints
/
{endpointId}
/
verify
POST /v1/webhook-endpoints/{endpointId}/verify
curl --request POST \
--url https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.api.prava.space/v1/webhook-endpoints/{endpointId}/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"endpoint": {
"id": "whe_0123456789abcdef0123456789abcdef",
"owner_id": "<string>",
"environment": "sandbox",
"name": "<string>",
"url": "<string>",
"events": [
"payment.credentials_ready"
],
"revision": "<string>",
"enabled": true,
"verified_at": "2023-11-07T05:31:56Z",
"deleted_at": null,
"created_at": "2023-11-07T05:31:56Z",
"schema_version": "2026-10-08",
"consecutive_failures": 0,
"circuit_until": null,
"blocked_reason": null
}
}Prava sends a signed challenge to the endpoint URL. Your receiver should check the signature and respond with a
See Security for signature verification and Receiver examples for working handlers.
2xx JSON body that echoes the exact challenge value. On success, the response returns the endpoint with verified_at set, and you can enable it.
| Error | Meaning |
|---|---|
409 WEBHOOK_CHALLENGE_FAILED | The response didn’t echo the challenge value in a complete JSON body. |
409 WEBHOOK_DESTINATION_CHANGED | The endpoint URL changed while verification was running. Verify again. |
422 WEBHOOK_RECEIVER_UNAVAILABLE | Prava couldn’t reach the receiver securely. Check its public DNS, HTTPS certificate and availability. |