Update an endpoint

PATCH
/v1/hooks/applications/{application}/endpoints/{endpoint_id}

Changes the URL, description, filter types, rate limit, metadata or enabled. Enabling it again clears a failure streak. The secret stays the same (see roll secret).

Authorization

bearerAuth
headerAuthorizationBearer <token>

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

Path Parameters

application*string

The application's id (happ_…) or your uid for it.

endpoint_id*string

The endpoint's id.

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
Lengthlength <= 2048
description?|
Lengthlength <= 256
filter_types?array<>

Event types delivered to this endpoint (existing, unarchived ones). An empty array means every type, including ones added later.

Itemsitems <= 250
rate_limit_per_second?|

At most this many requests per second to this endpoint.

Range1 <= value <= 1000
metadata?

Your own key-value pairs (at most 16; keys up to 40 characters, values up to 500).

enabled?boolean

Response Body

The endpoint.

application/json
  1. response
object*"hook_endpoint"
Value in"hook_endpoint"
id*string
application_id*string
url*string
description*string|null
filter_types*array<string>
rate_limit_per_second*integer|null
enabled*boolean
disabled_reason*|

manual: disabled by you or its user. failing: its deliveries failed every attempt for five days, so COSS disabled it. null while enabled.

Value in"manual""failing"null
disabled_at*|
Formatdate-time
failing_since*|

When its current run of failed deliveries began; cleared by the next success. null while healthy.

Formatdate-time
previous_secret_expires_at*|

After a secret roll, requests are also signed with the previous secret until then.

Formatdate-time
metadata*
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
import { Coss } from "coss";const coss = new Coss({  apiKey: process.env.COSS_API_KEY,  baseUrl: "https://api.coss.com",});const { data, error } = await coss.hooks.endpoints.update("customer_8812", "hep_01k7c8m4q2f3e9v6t5r1n0p8yz", {  enabled: false,});
{  "object": "hook_endpoint",  "id": "hep_01k7c8m4q2f3e9v6t5r1n0p8yz",  "application_id": "happ_01k7c8m4q2f3e9v6t5r1n0p8yz",  "url": "https://example.com/webhooks",  "description": "Production",  "filter_types": [    "invoice.paid"  ],  "rate_limit_per_second": null,  "enabled": true,  "disabled_reason": null,  "disabled_at": null,  "failing_since": null,  "previous_secret_expires_at": null,  "metadata": {},  "created_at": "2026-01-15T09:30:00.000Z",  "updated_at": "2026-01-15T09:30:00.000Z"}