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.

Operations 5

GET /v1/buckets List All Buckets #
POST /v1/buckets Create a New Bucket #
PUT /v1/buckets/{bucketID} Update Bucket #
GET /v1/buckets/{bucketID} Get Bucket Details #
DELETE /v1/buckets/{bucketID} Delete Bucket #

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/webhook-relay:webhook-relay-buckets-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

webhook-relay-buckets-api-openapi.yml Raw ↑
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