COSS
Log drains

Update a log drain

PATCH
/v1/log_drains/{id}

Changes the URL, description, sources or enabled flag. Omitted fields keep their current value, and the signing secret stays the same. Disabling a drain drops the lines still waiting for it, and nothing is kept for it while it is disabled; enabling it again (also after COSS disabled it for failing) sends lines logged from then on.

Authorization

bearerAuth
headerAuthorizationBearer <token>

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

Path Parameters

id*string

The log drain'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

An https:// URL COSS posts batches of log lines to.

Length1 <= length <= 2048
description?|

A note for your own reference. null clears it.

Lengthlength <= 256
sources?array<>

What the drain forwards: api (requests made with the environment's API keys), email (email events), webhook (webhook delivery attempts) and audit (changes to the environment, from the organization's audit log). An empty array means every source, including ones added later.

Itemsitems <= 4
enabled?boolean

Response Body

The updated drain.

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

What the drain forwards: api (requests made with the environment's API keys), email (email events), webhook (webhook delivery attempts) and audit (changes to the environment, from the organization's audit log). An empty array means every source, including ones added later.

enabled*boolean

A disabled drain receives nothing, and lines logged while it is disabled are not kept for it.

disabled_reason*|

manual: someone disabled it. failing: a batch failed every attempt, so COSS disabled it. null while enabled.

Value in"manual""failing"null
disabled_at*|
Formatdate-time
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.logDrains.update("drain_01k7c8m4q2f3e9v6t5r1n0p8yz", {  enabled: false,});
{  "object": "log_drain",  "id": "drain_01k7c8m4q2f3e9v6t5r1n0p8yz",  "url": "https://logs.example.com/coss",  "description": "Production logs",  "sources": [    "api",    "email"  ],  "enabled": true,  "disabled_reason": null,  "disabled_at": null,  "created_at": "2026-01-15T09:30:00.000Z",  "updated_at": "2026-01-15T09:30:00.000Z"}