---
title: "Create Webhook"
method: POST
path: "/webhooks"
tags: ["Shopping"]
---

# Create Webhook

`POST /webhooks`

## Request

- Base URL: `https://vesremont.com/api/v1`
- URL: `https://vesremont.com/api/v1/webhooks`
- Auth: OAuth 2 (authorization code, authorization URL `https://vesremont.com/oauth/authorize`, token URL `https://vesremont.com/oauth/token`, scopes: `webhooks:write`, `orders:read`)

Create a pending order event subscription to a public HTTPS receiver. Returns its signing secret ONCE. The receiver must echo the signed verification challenge before activation. No customer contact fields are sent. Check expires_at and requires_active_grant. OAuth scopes: webhooks:write, orders:read. Changes buyer or order state. Requires a JSON object body; use {} for an operation without body fields.

## Request body

- object
  - `callback_url` string, uri, required: Public HTTPS receiver under your control for signed verification and order events. Private-network, credential-bearing and unsafe receiver URLs are rejected; echo the signed challenge to activate.
  - `events` string[], required: Distinct order event categories to subscribe to for this application and consenting buyer session. No customer contact fields are included.

## Response `201`

Successful operation.

- object
  - `id` string, required
  - `callback_url` string, uri, required
  - `events` string[], required
  - `status` 'pending' | 'active' | 'deleted' | 'failed' | 'expired', required
  - `requires_active_grant` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `signing_secret` string, required

## Other responses

- `400`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `401`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `403`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `404`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `405`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `406`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `409`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `413`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `414`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `415`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `422`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `429`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `431`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `500`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `503`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.

---

[API](https://skmtc.dev/vesremont/apis/vesremont-public-api.md) · [All operations](https://skmtc.dev/vesremont/apis/vesremont-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vesremont/apis/vesremont-public-api/revisions/3bfec100b67d?raw)
