Skip to content

Send a test event to a webhook endpoint

The webhook_endpoints.test operation: POST /api/v1/webhook_endpoints/{id}/test in the REST API and the webhook_endpoints_test tool in the MCP server.

POST/api/v1/webhook_endpoints/{id}/test

Sends a webhook_endpoint.test event to this endpoint only, signed like every delivery, so you can check that your receiver verifies Ownrecord-Signature and answers 2xx. It works for enabled and disabled endpoints.

The call returns the queued delivery at once; it is attempted right after (one attempt, no retries). Read the outcome with webhook_deliveries.get: status, responseCode and the start of your response body. The test event isn't part of the event feed, and endpoints can't subscribe to it.

At a glance

  • REST: POST /api/v1/webhook_endpoints/{id}/test
  • MCP tool: webhook_endpoints_test
  • Operation ID: webhook_endpoints.test
  • Scope: Brand
  • Permission: webhooks:write
  • Risk tier: write
  • Dry run: Supported (send Ownrecord-Dry-Run: true)
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: API key with the webhooks:write scope
  • Since: M4

Request

Path parameters

FieldTypeDescription
idwe_… ID

Body

This operation takes no body.

Response

200 OK with a JSON object:

FieldTypeDescription
idwhd_… ID
object"webhook_delivery"
endpointIdwe_… ID
brandIdbrd_… ID
livemodeboolean
eventIdevt_… ID
eventTypestring
triggerone of event, test, redeliver
redeliveryOfwhd_… ID or null
statusone of pending, succeeded, failed, canceled
attemptinteger (at least 0)
maxAttemptsinteger (at least 1)
nextAttemptAtdate-time or null
responseCodeinteger or null
canceledReasonone of endpoint_disabled, endpoint_deleted or null
attemptsarray of object
attempts[].attemptinteger (at least 1)
attempts[].atdate-time
attempts[].outcomeone of succeeded, http_error, timeout, network_error, blocked
attempts[].responseCodeinteger or null
attempts[].responseExcerptstring or null
attempts[].durationMsinteger (at least 0) or null
attempts[].errorstring or null
createdAtdate-time
updatedAtdate-time

Examples

Send a test event

HTTP
POST /api/v1/webhook_endpoints/we_01m4tx5nj8emwbyf7y9vcf47z0/test
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14

Response (200):

JSON
{
  "id": "whd_01m4tx5nj8emwbyf7y9vcf47z3",
  "object": "webhook_delivery",
  "endpointId": "we_01m4tx5nj8emwbyf7y9vcf47z0",
  "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "livemode": false,
  "eventId": "evt_01m4tx5nj8emwbyf7y9vcf47z5",
  "eventType": "webhook_endpoint.test",
  "trigger": "test",
  "redeliveryOf": null,
  "status": "pending",
  "attempt": 0,
  "maxAttempts": 1,
  "nextAttemptAt": "2026-10-14T10:30:00.000Z",
  "responseCode": null,
  "canceledReason": null,
  "attempts": [],
  "createdAt": "2026-10-14T10:30:00.000Z",
  "updatedAt": "2026-10-14T10:30:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No endpoint with this ID is visible to the request.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't send test webhooks for this brand.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, scope_required, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, approval_required, approval_rejected, approval_expired, stale_approval, approval_policy_denied, rate_limited, internal_error.