---
title: "Create webhook"
method: POST
path: "/api/webhooks"
tags: ["Webhooks"]
---

# Create webhook

`POST /api/webhooks`

Creates a new webhook for a stack. The webhook secret is auto-generated and only
returned in the creation response. Requires Skipper or Admiral license and admin role.

## Request body

- object
  - `name` string, required
  - `stack_name` string, required — Target stack name.
  - `action` 'deploy' | 'restart' | 'stop' | 'start' | 'pull', required — Action to execute when the webhook is triggered.
  - `enabled` boolean

## Response `201`

Webhook created. The `secret` field is the HMAC signing key — save it now.

- object
  - `id` integer, required
  - `secret` string, required — HMAC-SHA256 signing secret. Store securely — this is the only time it's returned in full.

## Other responses

- `400` — Validation error.
- `403` — Insufficient permissions or license tier.
- `500` — Internal server error.

## Changes

- **2026-04-05** `7464894ea582` — 3 warning, 3 info
  - added the new `PAID_REQUIRED` enum value to the `code` response property for the response status `400`
  - added the new `PAID_REQUIRED` enum value to the `code` response property for the response status `403`
  - added the new `PAID_REQUIRED` enum value to the `code` response property for the response status `500`
  - removed the `PRO_REQUIRED` enum value from the `code` response property for the response status `400`
  - …2 more

[Change history](https://skmtc.dev/studio-saelix/apis/sencho-api/changes/api/webhooks/post.md)

---

[API](https://skmtc.dev/studio-saelix/apis/sencho-api.md) · [All operations](https://skmtc.dev/studio-saelix/apis/sencho-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/studio-saelix/sencho-api/revisions/8db6d8a0b0fe/schema)
