> ## Documentation Index
> Fetch the complete documentation index at: https://api.csboard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PATCH /v1/webhooks/{id} — Update a Webhook Endpoint

> Change a webhook's URL, subscribed events, label, or enabled state.

Updates an endpoint in place. Re-enabling (`enabled: true`) also resets the consecutive-failure counter, so an endpoint that was auto-disabled after an outage is not disabled again by its very next hiccup.

**Authentication required.** Send your key as `Authorization: Bearer csb_pub_...`. A read key is enough — managing webhooks moves no money.


## OpenAPI

````yaml PATCH /webhooks/{id}
openapi: 3.1.0
info:
  title: CSBoard API
  version: 1.0.0
  description: >-
    Market data over the CSBoard marketplace — live listings, floats, stickers,
    minAsk prices, FX rates — plus opt-in buying straight from your balance.
    Free to read, key-gated, built for automation.
  contact:
    name: CSBoard
    url: https://csboard.com/docs
servers:
  - url: https://csboard.com/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Status
    description: Liveness and freshness probes.
  - name: Market data
    description: Read the live catalog, prices, and FX rates.
  - name: Trading
    description: Buy listings from your CSBoard balance. Opt-in, key-gated.
  - name: Account
    description: Your balance, settled funds, and trading status.
  - name: Webhooks
    description: Register an endpoint and receive signed order updates instead of polling.
paths:
  /webhooks/{id}:
    patch:
      tags:
        - Webhooks
      summary: Update a webhook endpoint
      description: >-
        Change the URL, the subscribed events, the label, or enable/disable it.
        Re-enabling also clears the consecutive-failure counter, so an endpoint
        that was auto-disabled is not disabled again by its next single hiccup.
      operationId: updateWebhook
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                events:
                  type: array
                  items:
                    type: string
                    enum:
                      - order.updated
                      - webhook.test
                enabled:
                  type: boolean
                description:
                  type: string
                  maxLength: 200
      responses:
        '200':
          description: Updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      url:
                        type: string
                        format: uri
                      events:
                        type: array
                        items:
                          type: string
                          enum:
                            - order.updated
                            - webhook.test
                        description: >-
                          Subscribed event types. An empty request value means
                          all of them; the response always lists them
                          explicitly.
                      enabled:
                        type: boolean
                      description:
                        type: string
                        nullable: true
                      last_success_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_failure_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_error:
                        type: string
                        nullable: true
                        description: >-
                          Verbatim reason the last attempt failed — HTTP status,
                          timeout, or URL rejection.
                      consecutive_failures:
                        type: integer
                        description: >-
                          Reset on any success. At 50 the endpoint is
                          auto-disabled.
                      created_at:
                        type: string
                        format: date-time
        '404':
          description: '`not_found` — no such webhook on your account.'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send your key as a Bearer token on every request: `Authorization: Bearer
        csb_pub_...`. Generate keys in your CSBoard profile.

````