Operations 4
Documentation
Documentation
https://www.hyperdx.io/docs
APIReference
https://clickhouse.com/docs/clickstack/api-reference
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/hyperdx-webhooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: HyperDX External Webhooks API
description: API for managing HyperDX alerts and dashboards
version: 2.0.0
servers:
- url: /
description: Your HyperDX instance (http://<host>:<port>)
security:
- BearerAuth: []
tags:
- name: Webhooks
description: Endpoints for managing webhooks
paths:
/api/v2/webhooks:
get:
summary: List Webhooks
description: Retrieves webhooks for the authenticated team (paginated). Results are capped at `limit` (default and maximum 1000). When more records exist than are returned, `meta.total` exceeds `data.length`; clients with large collections must page with `limit`/`offset` to retrieve them all.
operationId: listWebhooks
tags:
- Webhooks
parameters:
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 1000
default: 1000
description: Maximum number of webhooks to return.
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
description: Number of webhooks to skip before returning results.
responses:
'200':
description: Successfully retrieved webhooks
content:
application/json:
schema:
$ref: '#/components/schemas/WebhooksListResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Unauthorized access. API key is missing or invalid.
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create Webhook
description: Creates a new webhook for the authenticated team.
operationId: createWebhook
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInput'
responses:
'200':
description: Successfully created webhook
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponseEnvelope'
'400':
description: Bad request or duplicate webhook
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/v2/webhooks/{id}:
put:
summary: Update Webhook
description: 'Replaces an existing webhook. Readable optional fields
(`description`, `body`) are a full replace: omitting them clears
them. The write-only fields `headers` and `queryParams` are never
returned on read, so omitting them preserves the stored values;
send an explicit empty object (`{}`) to clear them. Exception: if the
destination (`url` or `service`) changes, omitted `headers`/
`queryParams` are cleared rather than preserved so stored secrets are
never forwarded to a new destination.
'
operationId: updateWebhook
tags:
- Webhooks
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Webhook ID
example: 507f1f77bcf86cd799439011
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInput'
responses:
'200':
description: Successfully updated webhook
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponseEnvelope'
'400':
description: Bad request or duplicate webhook
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Webhook not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Webhook was modified concurrently; retry with current state
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
summary: Delete Webhook
description: Deletes a webhook. Blocked with a 409 while any alert still references it — reassign or remove those alerts first — so deletion never leaves an alert pointing at a missing webhook (which would silently drop notifications). Mirrors the internal webhook delete guard.
operationId: deleteWebhook
tags:
- Webhooks
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Webhook ID
example: 507f1f77bcf86cd799439011
responses:
'200':
description: Successfully deleted webhook
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyResponse'
example: {}
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Webhook not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Webhook is still referenced by one or more alerts
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
IncidentIOWebhook:
type: object
required:
- id
- name
- service
- updatedAt
- createdAt
properties:
id:
type: string
description: Webhook ID
example: 507f1f77bcf86cd799439012
name:
type: string
description: Webhook name
example: Incident Response
service:
type: string
enum:
- incidentio
description: Webhook service type
example: incidentio
url:
type: string
description: incident.io alert event HTTP source URL
example: https://api.incident.io/v2/alert_events/http/abc123
description:
type: string
description: Webhook description, shown in the UI
example: Routes alerts to incident.io for on-call escalation
updatedAt:
type: string
format: date-time
description: Last update timestamp
example: '2025-06-15T10:30:00.000Z'
createdAt:
type: string
format: date-time
description: Creation timestamp
example: '2025-01-01T00:00:00.000Z'
GenericWebhook:
type: object
required:
- id
- name
- service
- updatedAt
- createdAt
properties:
id:
type: string
description: Webhook ID
example: 507f1f77bcf86cd799439013
name:
type: string
description: Webhook name
example: PagerDuty Integration
service:
type: string
enum:
- generic
description: Webhook service type
example: generic
url:
type: string
description: Webhook destination URL
example: https://example.com/webhooks/alerts
description:
type: string
description: Webhook description, shown in the UI
example: Forwards alert payloads to an external monitoring service
body:
type: string
description: Optional request body template
example: '{"alert": "{{title}}", "severity": "{{level}}"}'
updatedAt:
type: string
format: date-time
description: Last update timestamp
example: '2025-06-15T10:30:00.000Z'
createdAt:
type: string
format: date-time
description: Creation timestamp
example: '2025-01-01T00:00:00.000Z'
WebhookInput:
type: object
required:
- name
- service
- url
description: 'Webhook create/update body. `body`, `headers`, and `queryParams`
only take effect for services that issue a templated HTTP request
(`generic`, `incidentio`). The `slack` service posts a fixed payload
to its incoming-webhook URL and ignores them, so supplying any of
these fields on a `slack` webhook is rejected. `headers` and
`queryParams` are write-only — they are accepted here but never
returned by any read endpoint, so secrets such as auth tokens do
not leak. On
update (PUT), omitted readable fields (`description`, `body`) are
cleared, while omitted `headers`/`queryParams` are preserved —
send an explicit `{}` to clear them. Exception: if the destination
(`url` or `service`) changes, omitted `headers`/`queryParams` are
cleared rather than preserved, so stored secrets are never forwarded
to a new destination; re-supply them for the new destination.
'
properties:
name:
type: string
maxLength: 1024
description: Webhook name. Must be unique per service within the team.
example: Production Alerts
service:
type: string
enum:
- slack
- incidentio
- generic
description: Webhook service type.
example: slack
url:
type: string
format: uri
maxLength: 2048
description: Webhook destination URL.
example: https://hooks.slack.com/services/REDACTED
description:
type: string
maxLength: 2048
description: Webhook description, shown in the UI.
example: 'Sends critical alerts to the #incidents channel'
body:
type: string
maxLength: 16384
description: Optional request body template. Only for generic/incidentio; rejected for slack.
example: '{"alert": "{{title}}", "severity": "{{level}}"}'
headers:
type: object
maxProperties: 100
description: Write-only. Custom HTTP headers sent with the webhook request. Never returned on read. Only for generic/incidentio; rejected for slack. Each value is capped at 4096 characters.
additionalProperties:
type: string
maxLength: 4096
example:
Authorization: Bearer secret-token
queryParams:
type: object
maxProperties: 100
description: Write-only. Query parameters appended to the webhook URL. Never returned on read. Only for generic/incidentio; rejected for slack. Each value is capped at 4096 characters.
additionalProperties:
type: string
maxLength: 4096
PaginationMeta:
type: object
required:
- total
- limit
- offset
properties:
total:
type: integer
description: Total number of items matching the query, ignoring pagination.
example: 142
limit:
type: integer
description: Maximum number of items returned in this page.
example: 50
offset:
type: integer
description: Number of items skipped before this page.
example: 100
WebhookResponseEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/Webhook'
description: The webhook object.
SlackWebhook:
type: object
required:
- id
- name
- service
- updatedAt
- createdAt
properties:
id:
type: string
description: Webhook ID
example: 507f1f77bcf86cd799439011
name:
type: string
description: Webhook name
example: Production Alerts
service:
type: string
enum:
- slack
description: Webhook service type
example: slack
url:
type: string
description: Slack incoming webhook URL
example: https://hooks.slack.com/services/REDACTED
description:
type: string
description: Webhook description, shown in the UI
example: 'Sends critical alerts to the #incidents channel'
updatedAt:
type: string
format: date-time
description: Last update timestamp
example: '2025-06-15T10:30:00.000Z'
createdAt:
type: string
format: date-time
description: Creation timestamp
example: '2025-01-01T00:00:00.000Z'
Webhook:
oneOf:
- $ref: '#/components/schemas/SlackWebhook'
- $ref: '#/components/schemas/IncidentIOWebhook'
- $ref: '#/components/schemas/GenericWebhook'
discriminator:
propertyName: service
mapping:
slack: '#/components/schemas/SlackWebhook'
incidentio: '#/components/schemas/IncidentIOWebhook'
generic: '#/components/schemas/GenericWebhook'
Error:
type: object
properties:
message:
type: string
description: Human-readable error message.
example: 'NOT_FOUND: Alert not found'
EmptyResponse:
type: object
properties: {}
WebhooksListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
description: List of webhook objects.
items:
$ref: '#/components/schemas/Webhook'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Pagination metadata for this result page.
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: API Key