CommetCommet
GitHubDiscordStatus
Create webhook endpoint POSTDelete webhook endpoint DELETEGet webhook endpoint GETList webhook endpoints GETTest webhook endpoint POSTUpdate webhook endpoint PATCH
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

Create webhook endpoint

Create a new webhook endpoint. The response includes the signing secret which is only returned once.

POST
/webhooks

Create a new webhook endpoint. The response includes the signing secret which is only returned once.

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Header Parameters

Idempotency-Key?string

Unique key used to safely retry this write for 24 hours without applying it twice.

Length1 <= length <= 200

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/webhooks" \  -H "Content-Type: application/json" \  -d '{    "url": "http://example.com",    "events": [      "subscription.created"    ]  }'
{  "id": "wh_1a2b3c4d",  "url": "https://example.com/api/webhooks/commet",  "events": [    "customer.created",    "subscription.activated",    "payment.received"  ],  "description": "Billing events",  "isActive": true,  "apiVersion": "2026-08-27",  "createdAt": "2026-09-07T12:00:00.000Z",  "object": "webhook",  "livemode": false,  "secretKey": "whsec_example_not_a_real_signing_secret"}
{  "error": {    "type": "validation_error",    "code": "validation_error",    "message": "The request contains an invalid parameter.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md"  }}
{  "error": {    "type": "authentication_error",    "code": "unauthorized",    "message": "A valid API key is required.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md"  }}
{  "error": {    "type": "authentication_error",    "code": "forbidden",    "message": "You do not have permission to perform this operation.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md"  }}
{  "error": {    "type": "conflict_error",    "code": "idempotency_in_progress",    "message": "A request with this idempotency key is still being processed.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_in_progress.md"  }}
{  "error": {    "type": "rate_limit_error",    "code": "rate_limited",    "message": "Too many requests. Retry after the interval specified in the Retry-After header.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md"  }}
{  "error": {    "type": "internal_error",    "code": "internal_error",    "message": "An unexpected error occurred while processing the request.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md"  }}
{  "error": {    "type": "internal_error",    "code": "idempotency_unavailable",    "message": "Idempotency storage is temporarily unavailable. Retry with the same idempotency key.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_unavailable.md"  }}

Track usage event POST

Track a usage event for a metered feature. Deducts from balance/credits if applicable.

Delete webhook endpoint DELETE

Permanently delete a webhook endpoint.

url*string
Formaturi
Length1 <= length
events*array<>
Items1 <= items
description?string
apiVersion?string