Webhook Relay Buckets API
Input and output grouping. Bucket allows to have multiple endpoints for the same destination or multiple destinations for fan-out style webhook forwarding.
Input and output grouping. Bucket allows to have multiple endpoints for the same destination or multiple destinations for fan-out style webhook forwarding.
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/webhook-relay:webhook-relay-buckets-api"
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.
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: 3.2.0
info:
version: '1.0'
title: Webhook Relay Buckets API
description: '# Introduction
Fast, secure tunnels to your internal networks.'
termsOfService: https://webhookrelay.com/tos/
contact:
email: support@webhookrelay.com
servers:
- url: https://my.webhookrelay.com/
tags:
- name: Buckets
description: Input and output grouping. Bucket allows to have multiple endpoints for the same destination or multiple destinations for fan-out style webhook forwarding.
paths:
/v1/buckets:
x-summary: List and create buckets
get:
tags:
- Buckets
summary: List All Buckets
responses:
200:
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Bucket'
operationId: getV1Buckets
x-operation-id-source: derived
post:
tags:
- Buckets
description: You may create your own bucket using this action. It takes a JSON object containing a bucket request. Once bucket is created, it gets assigned a default input to accept webhooks but you will still have to create a new output to give it a destination.
summary: Create a New Bucket
responses:
201:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Bucket'
400:
description: Invalid bucket request supplied
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BucketRequest'
required: true
operationId: postV1Buckets
x-operation-id-source: derived
/v1/buckets/{bucketID}:
x-summary: Get and delete buckets
parameters:
- name: bucketID
in: path
description: ID of a bucket to return
required: true
schema:
type: string
put:
tags:
- Buckets
description: Update bucket.
summary: Update Bucket
responses:
200:
description: Bucket updated
content:
application/json:
schema:
$ref: '#/components/schemas/Bucket'
400:
description: Invalid bucket update request supplied
404:
description: Bucket not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Bucket'
required: true
operationId: putV1BucketsByBucketID
x-operation-id-source: derived
get:
tags:
- Buckets
summary: Get Bucket Details
responses:
200:
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Bucket'
example:
created_at: 1496610194
updated_at: 1532192772
id: 339ed2e3-70cf-4a81-8db8-e95a9251155d
name: webhook-demo
description: auto-created input for http://localhost:8090/webhook
suspended: false
account_id: bd7e1dfc-54c8-408c-a885-7498bf1d8522
auth:
created_at: -62135596800
updated_at: -62135596800
id: ''
type: none
inputs:
- created_at: 1496610195
updated_at: 1496610195
id: 5e722a5e-f3d9-4eec-9e9f-79f1158e4b10
name: ingress for http://localhost:8090/webhook
bucket_id: 339ed2e3-70cf-4a81-8db8-e95a9251155d
description: auto-created input for http://localhost:8090/webhook
created_by: ''
outputs:
- created_at: 1496610196
updated_at: 1496610196
id: 3ec1899c-7069-4f55-88c6-5d8f5da4fa30
name: http://localhost:8090/webhook
bucket_id: 339ed2e3-70cf-4a81-8db8-e95a9251155d
destination: http://localhost:8090/webhook
internal: true
description: auto-created output for http://localhost:8090/webhook
created_by: ''
404:
description: Bucket not found
operationId: getV1BucketsByBucketID
x-operation-id-source: derived
delete:
tags:
- Buckets
summary: Delete Bucket
responses:
200:
description: Successful Response
404:
description: Bucket not found
operationId: deleteV1BucketsByBucketID
x-operation-id-source: derived
components:
schemas:
AndRule:
title: And Rule
type: array
items:
$ref: '#/components/schemas/Rules'
HeaderItem:
title: Header values
type: array
items:
type: string
NotRule:
title: Not Rule
type: array
items:
$ref: '#/components/schemas/Rules'
Input:
title: Input
type: object
properties:
id:
type: string
readOnly: true
created_at:
type: integer
readOnly: true
updated_at:
type: integer
readOnly: true
name:
type: string
function_id:
type: string
description: ID of the function that will be executed for this input
headers:
type: object
$ref: '#/components/schemas/Headers'
status_code:
type: integer
description: Response status code to return when this input receives a webhook
body:
type: string
description: Response body to return when this input receives a webhook
response_from_output:
type: string
description: Output ID to specify a single output for response or set it to 'anyOutput' to return response from any output. Output should respond within 10 seconds
custom_domain:
type: string
description: Specify any custom domain from your Reserved Domains, such as example.hooks.webhookrelay.com or hooks.example.com (if used with your own top level domain name, create a CNAME pointing at hooks.webhookrelay.com)
path_prefix:
type: string
description: When used with custom domains, path_prefix can host multiple input endpoints on a single domain, such as hooks.example.com/github -> Jenkins CI, hooks.example.com/gitlab -> Spinnaker
description:
type: string
Output:
title: Output
type: object
properties:
id:
type: string
readOnly: true
created_at:
type: integer
readOnly: true
updated_at:
type: integer
readOnly: true
bucket_id:
type: string
readOnly: true
name:
type: string
disabled:
type: boolean
description: Allows to disable specific output destination without deleting the output itself.
internal:
type: boolean
description: When internal output receives webhook, it forwards it to any connected agent (relay CLI, Docker agent or WebSocket connection)
tls_verification:
type: boolean
description: Enforce TLS verification where possible (internal and public destinations)
destination:
type: string
description: Destination, where to forward the webhook, such as 'http://localhost:4000'
headers:
type: object
description: Headers to override (for example Host)
$ref: '#/components/schemas/Headers'
rules:
type: object
description: Request matching rules, documentation can be found here https://webhookrelay.com/docs/webhooks/public/public-destination
$ref: '#/components/schemas/Rules'
timeout:
type: integer
description: Timeout in seconds, value between 0 and 180
description:
type: string
function_id:
type: string
description: ID of the function that will be executed for this output
Bucket:
title: Bucket
type: object
properties:
id:
type: string
readOnly: true
created_at:
type: integer
readOnly: true
updated_at:
type: integer
readOnly: true
name:
type: string
description:
type: string
suspended:
type: boolean
readOnly: true
description: Indicates that webhooks will not be received due to quota limits
stream:
type: boolean
description: Enable/disabled streaming to WebSocket clients from this bucket
ephemeral:
type: boolean
description: If ephemeral is enabled, Webhook Relay will not persist request body, headers or response details
auth:
type: object
$ref: '#/components/schemas/BucketAuth'
inputs:
type: array
readOnly: true
items:
$ref: '#/components/schemas/Input'
outputs:
type: array
readOnly: true
items:
$ref: '#/components/schemas/Output'
OrRule:
title: Or Rule
type: array
items:
$ref: '#/components/schemas/Rules'
RuleParameter:
title: RuleParameter
type: object
properties:
name:
type: string
source:
type: string
enum:
- header
- payload
- query
BucketAuth:
title: BucketAuth
type: object
properties:
id:
type: string
readOnly: true
created_at:
type: integer
readOnly: true
updated_at:
type: integer
readOnly: true
type:
type: string
username:
type: string
password:
type: string
token:
type: string
Headers:
title: Headers for request/response
type: object
additionalProperties:
$ref: '#/components/schemas/HeaderItem'
description: A hashmap of header keys and a list of values for each string, Go equivalent map[string][]string
example:
Content-Type:
- JSON
Foo:
- Bar
BucketRequest:
title: Bucket create request
type: object
properties:
name:
type: string
description:
type: string
MatchRule:
title: Match Rule
type: object
properties:
parameter:
type: object
$ref: '#/components/schemas/RuleParameter'
type:
type: string
enum:
- value
- contains
- does-not-contain
- regex
- payload-hash-sha1
- payload-hash-sha256
value:
type: string
substring:
type: string
regex:
type: string
secret:
type: string
Rules:
title: Rules
type: object
properties:
and:
type: object
$ref: '#/components/schemas/AndRule'
or:
type: object
$ref: '#/components/schemas/OrRule'
not:
type: object
$ref: '#/components/schemas/NotRule'
match:
type: object
$ref: '#/components/schemas/MatchRule'
externalDocs:
description: Find out more in the official documentation.
url: https://webhookrelay.com/docs
x-tagGroups:
- name: Authentication
tags:
- Tokens
- name: Webhook Forwarding
tags:
- Buckets
- Outputs
- Inputs
- Logs
- Functions
- name: Tunneling
tags:
- Tunnels