---
title: "Enqueue a signed test webhook delivery to a URL."
method: POST
path: "/v1/webhooks/test"
tags: ["Webhooks"]
---

# Enqueue a signed test webhook delivery to a URL.

`POST /v1/webhooks/test`

Useful for verifying your endpoint's HMAC-SHA256 handling before linking it to real events. IP-rate-limited (independent of per-key burst).

## Request body

- object — Send a signed test webhook delivery to the supplied URL. Useful for verifying your endpoint's HMAC handling before linking it.
  - `url` string, uri, required
  - `event` 'job.completed' | 'job.failed' | 'billing.topup_succeeded' | 'billing.topup_failed'

## Response `202`

Test delivery queued

- WebhookTestAccepted — 202 response from `POST /v1/webhooks/test`. The delivery is asynchronous. `signing_secret` is the per-delivery secret integrators verify `OnPage-Signature` against.
  - `delivery_id` string, required
  - `status` 'queued', required
  - `signing_secret` string, required

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `403` — Scope forbidden
- `422` — URL not allowed
- `429` — Too many requests. Body is a `oneOf` of rate-limit / org-active-limit / org-queued-limit / scan-queue-saturated variants — branch on `error.code`. `Retry-After` is present when the limiter emits it; `X-RateLimit-*` is present on rate-limit-middleware 429s; `X-Concurrency-*` is present on concurrency-limit 429s (ORG_ACTIVE_LIMIT_REACHED / ORG_QUEUED_LIMIT_REACHED).

---

[API](https://skmtc.dev/on-page/apis/on-page-ai-api.md) · [All operations](https://skmtc.dev/on-page/apis/on-page-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/on-page/on-page-ai-api/revisions/a081e8701c19/schema)
