---
title: "Create Webhook"
method: POST
path: "/v1.0/webhook"
tags: ["Webhooks"]
---

# Create Webhook

`POST /v1.0/webhook`

Subscribes the caller's team to a webhook event type. See the Webhooks tag description for the full list of event types and delivery rules. For detailed payload shapes per event type, see [Webhook Event Payloads](/concepts/webhooks#event-payloads).

## Headers

- `Authorization` string, required
- `Content-Type` string, required

## Request body

- WebhookRequest — Webhook subscription payload.
  - `listId` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12, required — Event type to subscribe to. See the Webhooks tag description for the full list of supported event types.
  - `callbackUrl` string, required — Callback URL that receives event payloads. Must be HTTPS and reachable from the Lofty backend.
  - `limit` integer — Maximum number of events to include in a single callback batch. Default 100, maximum 5000.
  - `permissionMode` 0 | 1 — Recipient resolution mode. `0` = assignment-based (default): callbacks fire for leads assigned to the subscribing user, or for company owners/admins. `1` = ownership-based: callbacks also fire for any lead the subscribing user manages by ownership (their team / office / personally owned), regardless of direct assignment.

## Response `200`

Subscription created. The response contains the new subscription's metadata.

- WebhookResponse
  - `subscribeId` integer, required — the subscribe id
  - `teamId` integer, required — The ID of the team to get
  - `listId` integer, required — The ID of the list to get
  - `vendorId` integer — The ID of the vendor
  - `callbackUrl` string, required — The url link that you receive information
  - `limit` integer — limitation of webhook notifications in 30 mins for each, max is 5000
  - `permissionMode` integer — Recipient resolution mode. 0 = assignment-based (default); 1 = ownership-based (also delivers leads the subscriber manages by team/office/personal ownership).

## Other responses

- `400` — Invalid payload: unsupported listId (WEBHOOK_TYPE_ERROR), invalid callbackUrl (WEBHOOK_CALLBACK_URL_INVALID), or subscription quota exceeded (WEBHOOK_EXCEED_LIMIT).
- `401` — Missing or invalid authentication token.
- `500` — Internal server error.

---

[API](https://skmtc.net/lofty/apis/lofty-service-open-apis.md) · [All operations](https://skmtc.net/lofty/apis/lofty-service-open-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lofty/lofty-service-open-apis/versions/23e640467118/schema)
