Tyk

Tyk Webhooks API

Webhooks are a great way to let external applications know about the status of a user, an API or an event that has occurred in the Tyk gateway You can create webhooks that you can then re-use in your API definitions and assign to different Tyk Events such as quota violations or rate-limiting violations. Each webhook require a target_path (which is an absolute URL that should be targeted by the webhook e.g https://httpbin.org/expired-keys) and a method which can be any of GET, PUT, POST, PATCH or DELETE. Request types that do not support an encoded body will not have the event metadata encoded as part of the request. We would advise using POST where possible.

Operations 5

GET /api/hooks List webhooks. #
POST /api/hooks Create a webhook. #
DELETE /api/hooks/{hookId} Delete web hook. #
GET /api/hooks/{hookId} Get single webhook. #
PUT /api/hooks/{hookId} Update 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/tyk-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

tyk-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@tyk.io
    name: Tyk Technologies
    url: https://tyk.io/contact
  description: '

    ## <a name="introduction"></a> Introduction


    The Tyk Dashboard API offers granular, programmatic access to a centralised database of resources that your Tyk nodes can pull from. This API has a dynamic user administrative structure which means the secret key that is used to communicate with your Tyk nodes can be kept secret and access to the wider management functions can be handled on a user-by-user and organisation-by-organisation basis.


    A common question around using a database-backed configuration is how to programmatically add API definitions to your Tyk nodes, the Dashboard API allows much more fine-grained, secure and multi-user access to your Tyk cluster, and should be used to manage a database-backed Tyk node.


    The Tyk Dashboard API works seamlessly with the Tyk Dashboard (and the two come bundled together).


    ## <a name="security-hierarchy"></a> Security Hierarchy


    The Dashboard API provides a more structured security layer to managing Tyk nodes.


    ### Organisations, APIs and Users


    With the Dashboard API and a database-backed Tyk setup, (and to an extent with file-based API setups - if diligence is used in naming and creating definitions), the following security model is applied to the management of Upstream APIs:


    * **Organisations**: All APIs are *owned* by an organisation, this is designated by the ''OrgID'' parameter in the API Definition.

    * **Users**: All users created in the Dashboard belong to an organisation (unless an exception is made for super-administrative access).

    * **APIs**: All APIs belong to an Organisation and only Users that belong to that organisation can see the analytics for those APIs and manage their configurations.

    * **API Keys**: API Keys are designated by organisation, this means an API key that has full access rights will not be allowed to access the APIs of another organisation on the same system, but can have full access to all APIs within the organisation.

    * **Access Rights**: Access rights are stored with the key, this enables a key to give access to multiple APIs, this is defined by the session object in the core Tyk API.


    In order to use the Dashboard API, you''ll need to get the ''Tyk Dashboard API Access Credentials'' secret from your user profile on the Dashboard UI.


    The secret you set should then be sent along as a header with each Dashboard API Request in order for it to be successful:



    authorization: <your-secret>

    '
  license:
    name: Mozilla Public License Version 2.0
    url: https://github.com/TykTechnologies/tyk/blob/master/LICENSE.md
  title: Tyk Dashboard Webhooks API
  version: 5.7.1
servers:
- url: https://{tenant}
  variables:
    tenant:
      default: localhost:8080
      description: Your dashboard host
security:
- bearerAuth: []
tags:
- description: 'Webhooks are a great way to let external applications know about the status of a user, an API or an event that has occurred in the Tyk gateway <br/>


    You can create webhooks that you can then re-use in your API definitions and assign to different Tyk Events such as quota violations or rate-limiting violations.<br/>


    Each webhook require a target_path (which is an absolute URL that should be targeted by the webhook e.g https://httpbin.org/expired-keys) and a method which can be any of GET, PUT, POST, PATCH or DELETE.<br/>


    Request types that do not support an encoded body will not have the event metadata encoded as part of the request. We would advise using POST where possible.

    '
  name: Webhooks
paths:
  /api/hooks:
    get:
      description: Return a paginated list of webhooks.
      operationId: getWebhookList
      parameters:
      - description: Use p query parameter to say which page you want returned. Send number less than 0 to return all items.
        example: 1
        in: query
        name: p
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                hooks:
                - api_model: {}
                  event_timeout: 0
                  header_map:
                    secret: superscretkey
                    x-auth: authvalue
                  id: '363634393863643165326663643130303031383465636239'
                  method: POST
                  name: Expired Keys webhook
                  org_id: 5e9d9544a1dcd60001d0ed20
                  target_path: https://httpbin.org/expired-keys
                  template_path: ''
                  webhook_id: 1f78e319202b430e92286cff3ca759e3
                - api_model: {}
                  event_timeout: 0
                  header_map:
                    x-auth: keith
                  id: '363634623338353335373135656334633936636265663364'
                  method: POST
                  name: Webhook Receiver Post
                  org_id: 5e9d9544a1dcd60001d0ed20
                  target_path: https://httpbin.org/receiver
                  template_path: ''
                  webhook_id: 9aef65505d694792a25fd0334dde2661
                pages: 1
              schema:
                $ref: '#/components/schemas/WebHooks'
          description: Webhook fetched.
        '400':
          content:
            application/json:
              example:
                Message: Could not retrieve webhooks.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Failed to retrieve webhooks.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: 'access denied: You do not have permission to access  /api/hooks'
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '500':
          content:
            application/json:
              example:
                Message: Failed to marshal data for APIs.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Internal server error.
      summary: List webhooks.
      tags:
      - Webhooks
    post:
      description: Create a webhook. The webhook method and target_path fields are required. Method can either be DELETE,GET,PUT,POST or PATCH.
      operationId: createWebhook
      requestBody:
        content:
          application/json:
            example:
              header_map:
                another-value: somevalue
                secret: superscretkey
              method: POST
              name: Expired Keys webhook
              target_path: https://httpbin.org/expired-keys
            schema:
              properties:
                header_map:
                  additionalProperties:
                    type: string
                  type:
                  - object
                  - 'null'
                method:
                  type: string
                name:
                  type: string
                target_path:
                  type: string
              type: object
        description: Webhook data.
      responses:
        '200':
          content:
            application/json:
              example:
                Message: Webhook created
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook created.
        '400':
          content:
            application/json:
              example:
                Message: Webhook object validation failed.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: validation failed (required fields not sent in request body).
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: Request body malformed.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Malformed request body.
        '409':
          content:
            application/json:
              example:
                Message: Duplicate webhook_id.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook with ID exist.
        '500':
          content:
            application/json:
              example:
                Message: Failed to read response body, body empty.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Empty request body.
      summary: Create a webhook.
      tags:
      - Webhooks
  /api/hooks/{hookId}:
    delete:
      description: Delete webhook with ID.
      operationId: deleteWebhook
      parameters:
      - description: ID of the webhook to delete.
        example: 66498cd1e2fcd1000184ecb9
        in: path
        name: hookId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                Message: Webhook deleted
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Deleted successfully.
        '400':
          content:
            application/json:
              example:
                Message: Could not delete the webhook.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Deletion failed.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: 'access denied: You do not have permission to access  /api/hooks/{hookId}'
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                Message: Could not retrieve webhook detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook with ID not found.
        '500':
          content:
            application/json:
              example:
                Message: Attempted unauthorised access.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: You are not allowed in this org.
      summary: Delete web hook.
      tags:
      - Webhooks
    get:
      description: Get a webhook details with its ID.
      operationId: getWebhookDetail
      parameters:
      - description: ID of the webhook to fetch.
        example: 66498cd1e2fcd1000184ecb9
        in: path
        name: hookId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                api_model: {}
                event_timeout: 0
                header_map:
                  secret: superscretkey
                  x-auth: authvalue
                id: '363634393863643165326663643130303031383465636239'
                method: POST
                name: Expired Keys webhook
                org_id: 5e9d9544a1dcd60001d0ed20
                target_path: https://httpbin.org/expired-keys
                template_path: ''
                webhook_id: 1f78e319202b430e92286cff3ca759e3
              schema:
                $ref: '#/components/schemas/WebHookHandlerConf'
          description: Webhook fetched.
        '400':
          content:
            application/json:
              example:
                Message: Could not retrieve webhook detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook not found.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: 'access denied: You do not have permission to access  /api/hooks/{hookId}'
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '500':
          content:
            application/json:
              example:
                Message: Failed to marshal data for webhook detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Internal server error.
      summary: Get single webhook.
      tags:
      - Webhooks
    put:
      description: Update a web hook using its ID. The webhook method and target_path fields are required in the request body when updating. *Note the original webhook data will be completely replaced with the new update request object(so if for example you don't send the name or webhook_id fields in your request body those fields will be updated to empty string even if they existed in your original webhook object.)*
      operationId: updateWebhook
      parameters:
      - description: ID of the webhook to update
        example: 664b70285715ec4c96cbef3f
        in: path
        name: hookId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              header_map:
                another-value: somevalue
                secret: superscretkey
              method: POST
              name: Update WebHook Name
              target_path: https://httpbin.org/v2/changed-expired-keys
            schema:
              properties:
                header_map:
                  additionalProperties:
                    type: string
                  type:
                  - object
                  - 'null'
                method:
                  type: string
                name:
                  type: string
                target_path:
                  type: string
              type: object
      responses:
        '200':
          content:
            application/json:
              example:
                Message: Hook updated
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook updated.
        '400':
          content:
            application/json:
              example:
                Message: Webhook not found.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Webhook with ID not found.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: Request body malformed.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Malformed request body.
        '500':
          content:
            application/json:
              example:
                Message: Failed to read response body, body empty.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Empty request body.
      summary: Update Webhook
      tags:
      - Webhooks
components:
  schemas:
    WebHooks:
      properties:
        hooks:
          items:
            $ref: '#/components/schemas/WebHookHandlerConf'
          type:
          - array
          - 'null'
        pages:
          type: integer
      type: object
    ApiModel:
      type: object
    ApiResponse:
      properties:
        ID:
          type: string
        Message:
          type: string
        Meta: {}
        Status:
          type: string
      type: object
    WebHookHandlerConf:
      properties:
        api_model:
          $ref: '#/components/schemas/ApiModel'
        event_timeout:
          example: 0
          format: int64
          type: integer
        header_map:
          additionalProperties:
            type: string
          example:
            secret: superscretkey
            x-auth: authvalue
          type:
          - object
          - 'null'
        id:
          example: 664b613f5715ec4c96cbef3e
          type: string
        method:
          example: POST
          type: string
        name:
          example: Expired Keys webhook
          type: string
        org_id:
          example: 5e9d9544a1dcd60001d0ed20
          type: string
        target_path:
          example: https://httpbin.org/expired-keys
          type: string
        template_path:
          example: templates/default_webhook.json
          type: string
        webhook_id:
          example: 1f78e319202b430e92286cff3ca759e3
          type: string
      required:
      - method
      - target_path
      type: object
  securitySchemes:
    bearerAuth:
      description: The Tyk Dashboard API Access Credentials
      scheme: bearer
      type: http