COSS
Webhook endpoints

Create a webhook endpoint

POST
/v1/webhook_endpoints

Registers a URL that receives signed event notifications. Webhook endpoints belong to the API key's own environment: a coss_test_… key only ever sees sandbox endpoints, and a coss_live_… key only production ones. The response carries the signing secret, which is returned only here and when it is rolled: store it, and verify every delivery with it (verifyWebhook in the SDK).

Authorization

bearerAuth
headerAuthorizationBearer <token>

A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.

Header Parameters

Coss-Version?"2026-10-10"

The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.

Value in"2026-10-10"

Request Body

application/json
  1. body
url*string

An https:// URL COSS posts events to.

Length1 <= length <= 2048
description?|

A note for your own reference. null clears it.

Lengthlength <= 256
event_types?array<>

Event types delivered to this endpoint. An empty array means every event type, including ones added later. Defaults to every event type.

Itemsitems <= 25
api_version?"2026-10-10"

The API version (Coss-Version) events are rendered in for this endpoint. Each event carries it as api_version. Defaults to the version of the request that creates the endpoint.

Value in"2026-10-10"

Response Body

The endpoint and its signing secret.

application/json
  1. response
object*"webhook_endpoint"
Value in"webhook_endpoint"
id*string
url*string
description*string|null
event_types*array<string>

Event types delivered to this endpoint. An empty array means every event type, including ones added later.

api_version*string

The API version (Coss-Version) events are rendered in for this endpoint. Each event carries it as api_version.

enabled*boolean

A disabled endpoint receives nothing until it is enabled again.

previous_secret_expires_at*|

After a secret roll, deliveries are also signed with the previous secret until this time. null when only the current secret signs.

Formatdate-time
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
secret*string

The endpoint's whsec_… signing secret, used to verify the requests COSS sends. Returned only when the endpoint is created and when its secret is rolled — store it now; it cannot be read back through the API.

import { Coss } from "coss";const coss = new Coss({  apiKey: process.env.COSS_API_KEY,  baseUrl: "https://api.coss.com",});const { data, error } = await coss.webhookEndpoints.create({  url: "https://example.com/webhooks/coss",  description: "Production receiver",  event_types: [    "email.sent",    "email.delivered",  ],});
{  "object": "webhook_endpoint",  "id": "whep_01k7c8m4q2f3e9v6t5r1n0p8yz",  "url": "https://example.com/webhooks/coss",  "description": "Production receiver",  "event_types": [    "email.delivered",    "email.bounced"  ],  "api_version": "2026-10-10",  "enabled": true,  "previous_secret_expires_at": null,  "created_at": "2026-01-15T09:30:00.000Z",  "updated_at": "2026-01-15T09:30:00.000Z",  "secret": "whsec_6Jk…"}