---
title: "Create a webhook subscription"
method: POST
path: "/v1/webhook_subscriptions"
tags: ["Webhooks"]
---

# Create a webhook subscription

`POST /v1/webhook_subscriptions`

Create a webhook subscription to receive events of the specified subscription_types whenever there is a state change.

📘 System Access Authentication

This endpoint uses the [Bearer Auth scheme with the system-level access token in the HTTP Authorization header](https://docs.gusto.com/embedded-payroll/docs/system-access)

scope: `webhook_subscriptions:write`

## Headers

- `X-Gusto-API-Version` '2026-06-15'

## Request body

- object
  - `url` string, required — The URL where webhook events will be POSTed.
  - `subscription_types` string[], required — The types of events to subscribe to.

## Response `201`

created

- WebhookSubscription — The representation of webhook subscription.
  - `uuid` string, required — The UUID of the webhook subscription.
  - `url` string — The webhook subscriber URL. Updates will be POSTed to this URL.
  - `status` 'pending' | 'verified' | 'removed' | 'unreachable' — The status of the webhook subscription.
  - `subscription_types` string[] — Receive updates for these types.

## Other responses

- `422` — Unprocessable Entity This may happen when the body of your request contains errors such as `invalid_attribute_value`, or the request fails due to an `invalid_operation`. See the [Errors Categories](https://docs.gusto.com/embedded-payroll/docs/error-categories) guide for more details.

---

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