> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getsinbad.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getsinbad.com/_mcp/server.

# webhook.test

> Signed notification from Sinbad to your registered HTTPS receiver.

## Before you receive events

* [Register an endpoint](https://docs.getsinbad.com/api-reference/webhooks/create-webhook), store its signing secret, and [verify the receiver](https://docs.getsinbad.com/api-reference/webhooks/test-webhook).
* Subscribe the endpoint to this event type.
* Verify the timestamp and signature against the raw request body before you parse or acknowledge it. See [Webhooks](/webhooks#verify-signatures-before-parsing).

```http
POST <your receiver URL>
Content-Type: application/json
Sinbad-Webhook-Id: evt_demo
Sinbad-Webhook-Timestamp: <Unix seconds>
Sinbad-Webhook-Signature: v1=<keyId>:<HMAC-SHA256 hex>
```

## Payload examples

### Verification challenge

```json
{
  "id": "evt_demo",
  "type": "webhook.test",
  "apiVersion": "2026-10-22",
  "environment": "sinbad-staging-env",
  "partnerId": "partner_demo",
  "integrationId": "integration_demo",
  "partnerUserId": null,
  "tradeId": null,
  "sequence": null,
  "occurredAt": "2026-10-23T10:00:00.000Z",
  "sourceCommittedAt": "2026-10-23T10:00:00.000Z",
  "recordedAt": "2026-10-23T10:00:00.000Z",
  "data": {
    "challenge": "synthetic_verification_challenge"
  }
}
```

## Your response

Return HTTP 200 with the exact challenge from the verified request body.

```json
{
  "challenge": "synthetic_verification_challenge"
}
```

These payloads are synthetic examples.