Webhooks

Event payloads for integrations and background jobs. Load a template into the create form, then adjust the response before creating an endpoint.

200application/jsonPOST

Payment failed event

Test payment or notification flows that react to failed events.

Use template
View payload and cURL

Headers

{
  "X-Webhook-Source": "stubpoint"
}

Body

{
  "id": "evt_payment_failed",
  "type": "payment.failed",
  "created_at": "2026-05-21T12:00:00Z",
  "data": {
    "invoice_id": "inv_123",
    "customer_id": "cus_456",
    "reason": "card_declined"
  }
}

Create with cURL

curl -i 'https://stubpoint.dev/api/endpoints' -H 'Content-Type: application/json' -d '{
  "body": "{\n  \"id\": \"evt_payment_failed\",\n  \"type\": \"payment.failed\",\n  \"created_at\": \"2026-05-21T12:00:00Z\",\n  \"data\": {\n    \"invoice_id\": \"inv_123\",\n    \"customer_id\": \"cus_456\",\n    \"reason\": \"card_declined\"\n  }\n}",
  "content_type": "application/json",
  "headers": {
    "X-Webhook-Source": "stubpoint"
  },
  "methods": [
    "POST"
  ],
  "status": 200
}'
200application/jsonPOST

Deployment finished event

Check status updates after a deployment finishes.

Use template
View payload and cURL

Headers

none

Body

{
  "type": "deployment.finished",
  "environment": "staging",
  "status": "passed",
  "duration_seconds": 84
}

Create with cURL

curl -i 'https://stubpoint.dev/api/endpoints' -H 'Content-Type: application/json' -d '{
  "body": "{\n  \"type\": \"deployment.finished\",\n  \"environment\": \"staging\",\n  \"status\": \"passed\",\n  \"duration_seconds\": 84\n}",
  "content_type": "application/json",
  "headers": null,
  "methods": [
    "POST"
  ],
  "status": 200
}'
200application/jsonPOST

Delivery retry event

Test retry and idempotency handling for repeated webhook delivery.

Use template
View payload and cURL

Headers

{
  "X-Webhook-Source": "stubpoint"
}

Body

{
  "id": "evt_retry_001",
  "type": "webhook.delivery.retry",
  "attempt": 3,
  "previous_status": 503,
  "next_attempt_at": "2026-05-21T12:05:00Z"
}

Create with cURL

curl -i 'https://stubpoint.dev/api/endpoints' -H 'Content-Type: application/json' -d '{
  "body": "{\n  \"id\": \"evt_retry_001\",\n  \"type\": \"webhook.delivery.retry\",\n  \"attempt\": 3,\n  \"previous_status\": 503,\n  \"next_attempt_at\": \"2026-05-21T12:05:00Z\"\n}",
  "content_type": "application/json",
  "headers": {
    "X-Webhook-Source": "stubpoint"
  },
  "methods": [
    "POST"
  ],
  "status": 200
}'
200application/jsonPOST

Review needed event

Check moderation or manual-review queues.

Use template
View payload and cURL

Headers

none

Body

{
  "id": "evt_review_needed",
  "type": "review.needed",
  "resource": {
    "kind": "message",
    "id": "msg_123"
  },
  "reason": "policy_check"
}

Create with cURL

curl -i 'https://stubpoint.dev/api/endpoints' -H 'Content-Type: application/json' -d '{
  "body": "{\n  \"id\": \"evt_review_needed\",\n  \"type\": \"review.needed\",\n  \"resource\": {\"kind\": \"message\", \"id\": \"msg_123\"},\n  \"reason\": \"policy_check\"\n}",
  "content_type": "application/json",
  "headers": null,
  "methods": [
    "POST"
  ],
  "status": 200
}'

Other recipe shelves