---
title: "Create a webhook (Business+)"
method: POST
path: "/api/v1/visa/webhooks"
tags: ["Webhooks"]
---

# Create a webhook (Business+)

`POST /api/v1/visa/webhooks`

Register a URL to receive POSTs whenever a policy change matches your
filter. Response carries a one-time secret — store it now. Verify with
HMAC-SHA256 of the raw body keyed by the secret.

## Request body

- WebhookCreateBody
  - `url` string, uri, required
  - `passport_filter` ISO3[]
  - `destination_filter` ISO3[]

## Response `201`

Webhook created.

- object
  - `webhook` WebhookWithSecret
    - `id` integer
    - `url` string, uri
    - `passport_filter` ISO3[], nullable
    - `destination_filter` ISO3[], nullable
    - `active` boolean
    - `created_at` string, date-time
    - `last_triggered_at` string, date-time, nullable
    - `failures` integer
    - `secret` string
  - `message` string

## Other responses

- `400` — Missing or malformed parameter.
- `401` — Missing API key, query param or session cookie.
- `403` — Invalid / inactive key, or plan below the endpoint's minimum tier.

---

[API](https://skmtc.net/orizn/apis/orizn-visa-api.md) · [All operations](https://skmtc.net/orizn/apis/orizn-visa-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/orizn/orizn-visa-api/revisions/15b21ef9b5b0/schema)
