---
title: "Create a webhook (PRO+)"
method: POST
path: "/webhooks"
tags: ["webhooks"]
---

# Create a webhook (PRO+)

`POST /webhooks`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/webhooks`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Supported events: task.created, task.updated, task.deleted, task.status_changed, task.preview_ready, project.created, project.updated, project.deleted, project.billable_changed, project.schedule_pushed, project.readiness_checked, project.closeout_signed_off, project.archived, project.unarchived, deal.stage_changed, deal.quote_accepted, company.created, company.updated, comment.created, member.added, member.removed, migration.completed.

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `url` string, uri, required
  - `events` string[], required
  - `secret` string, nullable: Used to compute HMAC-SHA256 signature on delivery
  - `enabled` boolean

## Response `201`

Webhook created

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `402`: Plan gate - feature not available on current plan
- `403`: Forbidden - insufficient role

---

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