---
title: "Create an Event Subscription"
method: POST
path: "/v1/event_subscriptions"
tags: ["Event Subscriptions"]
---

# Create an Event Subscription

`POST /v1/event_subscriptions`

Create an event subscription corresponding to your Chariot account.

## Request body

- object
  - `url` string, required — The webhook url where we'll send notifications.
  - `category` 'grant.created' | 'grant.updated' | 'unintegrated_grant.created' | 'unintegrated_grant.updated' | 'donor_account.created' | 'donor_account.updated' | 'authorization_token.created' | 'authorization_token.updated' | 'grant_request.created' | 'grant_request.updated' | 'disbursement.created' | 'disbursement.updated' | 'inbound_transfer.created' | 'inbound_transfer.updated' | 'donation.created' | 'donation.updated' | 'deposit.created' | 'deposit.updated' | 'verification_request.created' | 'verification_request.updated', required — The category of the event. This is useful for filtering events. Event names follow the pattern `{resource}.{event_type}` where `event_type` is either `created` or `updated`. Status transitions (for example, a Donor Account moving to `approved` or `rejected`) are emitted as `{resource}.updated` events — fetch the object to read its current status.
  - `signing_secret` string — The key that will be used to sign webhooks. If no value is passed, a random string will be used as default. This is necessary to verify that the webhook is coming from Chariot. While this parameter is optional, it is highly recommended to pass a value for the secret and implement webhook signature verification.

## Response `201`

Created

- EventSubscription — Webhooks are event notifications we send to you by HTTPS POST requests. Event Subscriptions are how you configure your application to listen for them.
  - `id` string — The unique identifier for the event subscription
  - `created_at` string, date-time — The date and time the event subscription was created
  - `status` 'active' | 'disabled' | 'deleted' | 'requires_attention' — The status of the event subscription. This indicates if we'll send notifications to this subscription * active: subscription is active and events will be delivered normally * disabled: subscription is temporarily disabled and events will not be delivered * deleted: subscription has been deleted and events will not be delivered * requires_attention: subscription has been disabled due to delivery failures and events will not be delivered
  - `url` string, required — The webhook url where we'll send notifications.
  - `category` 'grant.created' | 'grant.updated' | 'unintegrated_grant.created' | 'unintegrated_grant.updated' | 'donor_account.created' | 'donor_account.updated' | 'authorization_token.created' | 'authorization_token.updated' | 'grant_request.created' | 'grant_request.updated' | 'disbursement.created' | 'disbursement.updated' | 'inbound_transfer.created' | 'inbound_transfer.updated' | 'donation.created' | 'donation.updated' | 'deposit.created' | 'deposit.updated' | 'verification_request.created' | 'verification_request.updated' — The category of the event. This is useful for filtering events. Event names follow the pattern `{resource}.{event_type}` where `event_type` is either `created` or `updated`. Status transitions (for example, a Donor Account moving to `approved` or `rejected`) are emitted as `{resource}.updated` events — fetch the object to read its current status.

## Other responses

- `400` — The request is invalid or contains invalid parameters
- `401` — Unauthorized. The request is missing the security (OAuth2 Bearer token) requirements and the server is unable to verify the identify of the caller.
- `403` — Access denied
- `404` — Resource Not Found
- `500` — Internal Server Error

---

[API](https://skmtc.net/chariot-giving/apis/specs.md) · [All operations](https://skmtc.net/chariot-giving/apis/specs/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/chariot-giving/specs/revisions/8446023e02fb/schema)
