Channex Webhooks API

Manage event notification callbacks.

Business capability
Webhook & Event Subscription Management BC-4270.80

Operations 8

GET /webhooks List webhooks #
POST /webhooks Create a webhook #
GET /webhooks/events List webhook events #
POST /webhooks/test Test a callback URL #
GET /webhooks/{id} Retrieve a webhook #
PUT /webhooks/{id} Update a webhook #
DELETE /webhooks/{id} Delete a webhook #
POST /webhooks/{id}/test Test a webhook #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/channex:channex-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

channex-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Channex.io — Public Webhooks API
  version: 0.0.0
  description: 'Push notifications for what happens on an account. A webhook subscribes a callback URL

    to a set of events; when one occurs, Channex sends it a `POST` request.


    A webhook watches one property, or — created with `property_id: null` — every property

    of a billing account. A new webhook is inactive until `is_active` is set.


    ## What is delivered


    Every delivery is a `POST` to `callback_url` with a JSON body of five keys:


    - `event` — the event name, one of the values `/webhooks/events` lists.

    - `property_id` — the property the event happened on.

    - `user_id` — the user who caused it, or `null` for events the platform raises itself,

    which is most of them. Useful for ignoring changes your own integration made.

    - `timestamp` — when the event happened, ISO 8601 UTC with microseconds, e.g.

    `2026-09-21T13:58:55.587742Z`.

    - `payload` — the event''s own data. Present only when the webhook''s `send_data` is

    true; when it is false the key is absent altogether and the other four are all the

    delivery carries.


    A signed webhook carries three `x-hmac-*` headers besides. See the Webhook Signing Keys

    resource for what they hold and how to verify them — the `x-hmac-timestamp` header is

    Unix seconds, not the body''s `timestamp`.


    ## Retries


    A delivery is successful when the callback URL answers `2xx`. A `5xx`, a connection

    refused, a DNS failure, a timeout (30 seconds to connect, 30 to read) or a TLS error is

    retried; a `4xx`, a redirect — which is never followed — and an expired TLS certificate

    are final and are not.


    There are eleven retries after the first attempt, spaced 1 minute, 2, 4, 8, 15, 30

    minutes, then 1, 2, 4, 6 and 10 hours, so the last one lands about 24 hours after the

    event. Those gaps are the earliest a retry is made, not the exact moment: a retry can

    run up to a minute later.


    Deliveries to one host are made one at a time, so a slow endpoint delays its own queue.

    A webhook whose oldest unresolved failure is 72 hours old is deactivated — `is_active`

    becomes false, the account is notified by email, and the pending deliveries for that

    host are dropped. A `4xx` starts that clock as surely as a `5xx` does.


    ## Order


    Deliveries are not ordered: a delivery retried after a failure arrives after ones raised

    later, so a payload can describe a state older than the one before it. Treat a delivery

    as a signal that something changed rather than as the change itself, and read the

    current state back through the API — `GET /booking_revisions/{id}` for a booking event,

    the availability and restrictions endpoints for an `ari` one.'
servers:
- url: https://app.channex.io/api/v1
  description: Production server
  variables: {}
- url: https://staging.channex.io/api/v1
  description: Staging server
  variables: {}
security:
- UserApiKeyAuth: []
tags:


# --- truncated at 32 KB (62 KB total) ---
# Full source: https://artifacts.apis.io/channex/openapi/channex-webhooks-api-openapi.yml