Verifiable Webhooks API

Endpoints to allow you to create and manage webhooks that will be called when a special event occurs. On this special event Verifiable will attempt to make an HTTP POST to the URL specified in the webhook. The payload of this request can vary, depending on the `type`. The `type` is included in the `X-WebhookType` header. This allows you to register multiple webhooks on the same endpoint and still be able to distinguish the webhook types. The webhook dispatcher expects the remote server to return an HTTP success status code. If it cannot be delivered, it will retry the callback a maximum of 3 times. By default, we do not allow you to use insecure URLs for callbacks. You can optionally create a webhook that allows insecure URLs for testing purposes. We recommend you to use an HTTPS callback with a valid SSL certificate so that the integrity of the callback is ensured. For added security we will pass the webhook id (which is only known to the creator) in the `X-WebhookId` header, and we will pass an optional secret in the `X-Secret` header. To be able to uniquely track webhook messages we also include the `X-TraceId` header. This will contain a unique value that doesn't change for every attempt we make to send a specific message. You can use this to keep a log of all messages that you have successfully processed. You can refer to [Webhook Callbacks](/references/api/webhook-callbacks/) to find the model that is included in the payload of the HTTP request to the callback URL.

Business capability
Webhook & Event Subscription Management BC-4270.80

Operations 6

POST /webhooks Create a new webhook #
GET /webhooks List all webhooks #
GET /webhooks/{webhookId} Get details from a webhook #
PATCH /webhooks/{webhookId} Update a webhook #
DELETE /webhooks/{webhookId} Delete a webhook #
GET /webhookslog List all webhooks logs #

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/verifiable-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

verifiable-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Verifiable API Documentation Webhooks API
  description: '# Introduction


    This document contains the official documentation for the latest version of the Verifiable API.'
  version: 26.12.1.962
servers:
- url: https://discovery.verifiable.com/api
  description: Production
- url: https://discovery-staging.verifiable.com/api
  description: Staging
tags:
- name: Webhooks
  description: Endpoints to allow you to create and manage webhooks that will be called when a special event occurs.
paths:
  /webhooks:
    post:
      tags:
      - Webhooks
      summary: Create a new webhook
      description: Creates a new webhook that will be called when the specified event is triggered.
      operationId: CreateWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequestModel'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '409':
          description: Conflict
        '500':
          description: Server Error
      security:
      - Bearer: []
    get:
      tags:
      - Webhooks
      summary: List all webhooks
      description: List all webhooks created on this organization.
      operationId: ListWebhooks
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebhookModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Server Error
      security:
      - Bearer: []
  /webhooks/{webhookId}:
    get:
      tags:
      - Webhooks
      summary: Get details from a webhook
      description: Get details from a previously created webhook.
      operationId: GetWebhook
      parameters:
      - name: webhookId
        in: path
        description: Identifier of a previously created webhook.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
    patch:
      tags:
      - Webhooks
      summary: Update a webhook
      description: Update a previously created webhook.
      operationId: PatchWebhook
      parameters:
      - name: webhookId
        in: path
        description: Identifier of a previously created webhook.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPatchModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: Conflict
        '500':
          description: Server Error
      security:
      - Bearer: []
    delete:
      tags:
      - Webhooks
      summary: Delete a webhook
      description: Deletes a previously created webhook.
      operationId: DeleteWebhook
      parameters:
      - name: webhookId
        in: path
        description: Identifier of a previously created webhook to be deleted.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
  /webhookslog:
    get:
      tags:
      - Webhooks
      summary: List all webhooks logs
      description: List all webhooks logs on this organization.
      operationId: ListWebhooksLog
      parameters:
      - name: type
        in: query
        description: If set, the items will be filtered with the specified webhook type.
        schema:
          enum:
          - VerificationCompleted
          - ExportCompleted
          - LicenseExpiresSoon
          - LicenseExpired
          - LicenseChanged
          - DatasetScanCompleted
          - LicenseStatusChanged
          - ProviderStatusChanged
          - ProviderProfileImportCompleted
          - CredentialingRequestChanged
          - GenerateReport
          - DatasetScanMatchesChanged
          - NpdbUpdateRequestRejected
          type: string
      - name: status
        in: query
        description: If set, the items will be filtered with the specified webhook log status.
        schema:
          enum:
          - Triggered
          - Completed
          - Failed
          type: string
      - name: sortDirection
        in: query
        description: The direction the returned data will be sorted by.
        schema:
          enum:
          - Asc
          - Desc
          type: string
      - name: traceId
        in: query
        description: If set, the items will be filtered with the specified webhook log trace id.
        schema:
          type: string
          format: uuid
      - name: before
        in: query
        description: If set, the items will be filtered with timestamp value less the provided value.
        schema:
          type: string
          format: date-time
      - name: beforeInclusive
        in: query
        description: If set to `true`, will include events created exactly at `before` date and time too.
        schema:
          type: boolean
      - name: after
        in: query
        description: If set, the items will be filtered with timestamp value more the provided value.
        schema:
          type: string
          format: date-time
      - name: afterInclusive
        in: query
        description: If set to `true`, will include events created exactly at `after` date and time too.
        schema:
          type: boolean
      - name: sortedBy
        in: query
        description: The property by which the returned data will be sorted.
        schema:
          enum:
          - Timestamp
          type: string
      - name: sort
        in: query
        description: If set, the properties and directions the returned data will be sorted by.
        schema:
          type: object
          properties:
            Keys:
              enum:
              - Timestamp
              type: string
            Values:
              enum:
              - Asc
              - Desc
              type: string
      - name: offset
        in: query
        description: The offset for the page to start.
        deprecated: true
        schema:
          type: integer
          format: int32
      - name: cursor
        in: query
        description: The cursor to render the page requested. To load the first page send an empty cursor, then the system will generate the cursors to go to the next and/or previous pages automatically.
        schema:
          type: string
      - name: count
        in: query
        description: The number of items to include in a single page.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksLogPageModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
components:
  schemas:
    WebhookRequestModel:
      required:
      - type
      - url
      type: object
      properties:
        type:
          enum:
          - VerificationCompleted
          - ExportCompleted
          - LicenseExpiresSoon
          - LicenseExpired
          - LicenseChanged
          - DatasetScanCompleted
          - LicenseStatusChanged
          - ProviderStatusChanged
          - ProviderProfileImportCompleted
          - CredentialingRequestChanged
          - GenerateReport
          - DatasetScanMatchesChanged
          - NpdbUpdateRequestRejected
          type: string
          description: The event type that should trigger this webhook.
        url:
          type: string
          description: The URL we will make an HTTP POST request to when an event of `type` occurs.
          format: uri
        secret:
          type: string
          description: An optional secret which will be passed in the `X-Secret` header to the webhook callback URL.
        allowInsecureUrl:
          type: boolean
          description: Set to true to allow insecure callback URLs such as URLs without SSL or URLs with self signed certificates.
        includeSensitiveInfo:
          type: boolean
          description: If set to false, the sensitive info will be masked in the webhook payload. The default value is true.
      additionalProperties: false
    WebhooksLogPageModel:
      type: object
      properties:
        sort:
          type:
          - object
          - 'null'
          properties:
            Keys:
              enum:
              - Timestamp
              type: string
            Values:
              enum:
              - Asc
              - Desc
              type: string
        previousCursor:
          type:
          - string
          - 'null'
        nextCursor:
          type:
          - string
          - 'null'
        nextOffset:
          type:
          - integer
          - 'null'
          format: int32
        pageSize:
          type: integer
          format: int32
        count:
          type: integer
          format: int32
        totalCount:
          type:
          - integer
          - 'null'
          format: int32
        items:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/WebhookLogModel'
        sortedBy:
          enum:
          - Timestamp
          type:
          - string
          - 'null'
        sortDirection:
          enum:
          - Asc
          - Desc
          type:
          - string
          - 'null'
      additionalProperties: false
    WebhookModel:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier associated with this webhook.
          format: uuid
        type:
          enum:
          - VerificationCompleted
          - ExportCompleted
          - LicenseExpiresSoon
          - LicenseExpired
          - LicenseChanged
          - DatasetScanCompleted
          - LicenseStatusChanged
          - ProviderStatusChanged
          - ProviderProfileImportCompleted
          - CredentialingRequestChanged
          - GenerateReport
          - DatasetScanMatchesChanged
          - NpdbUpdateRequestRejected
          type: string
          description: The event type that should trigger this webhook.
        url:
          type: string
          description: The URL we will make an HTTP POST request to when an event of `type` occurs.
          format: uri
        allowInsecureUrl:
          type: boolean
          description: Set to true if the webhook was created to allow insecure URLs that use no SSL or self signed certificates.
        includeSensitiveInfo:
          type: boolean
          description: If set to false, the sensitive info will be masked in the webhook payload. The default value is true.
      additionalProperties: false
    WebhookPatchModel:
      type: object
      properties:
        url:
          type: string
          description: The URL we will make an HTTP POST request to when an event of `type` occurs.
          format: uri
        secret:
          type: string
          description: An optional secret which will be passed in the `X-Secret` header to the webhook callback URL.
        allowInsecureUrl:
          type: boolean
          description: Set to true to allow insecure callback URLs such as URLs without SSL or URLs with self signed certificates.
        includeSensitiveInfo:
          type: boolean
          description: If set to false, the sensitive info will be masked in the webhook payload. The default value is true.
      additionalProperties: false
    WebhookLogModel:
      type: object
      properties:
        type:
          enum:
          - VerificationCompleted
          - ExportCompleted
          - LicenseExpiresSoon
          - LicenseExpired
          - LicenseChanged
          - DatasetScanCompleted
          - LicenseStatusChanged
          - ProviderStatusChanged
          - ProviderProfileImportCompleted
          - CredentialingRequestChanged
          - GenerateReport
          - DatasetScanMatchesChanged
          - NpdbUpdateRequestRejected
          type: string
          description: The event type that should trigger this webhook.
        url:
          type: string
          description: The URL we will make an HTTP POST request to when an event of `type` occurs.
          format: uri
        timestamp:
          type: string
          description: The timestamp when this webhook was created.
          format: date-time
        status:
          enum:
          - Triggered
          - Completed
          - Failed
          type: string
          description: 'The status of this webhook. Could be one of the following: Triggered, Completed, or Failed'
        attempt:
          type: integer
          description: The current attempt to call this webhook could be in the range from one to ten. Where ten is the max and last attempt.
          format: int32
        failureReason:
          type: string
          description: If set, the failure reason explaining why we could not call this webhook.
        payload:
          type: string
          description: If set, the payload of this webhook. Which is a serialized object as JSON.
        responseStatus:
          type: integer
          description: 'If set, the response HTTP status code of this webhook. e.g: 2xx, 4xx, 5xx'
          format: int32
        responseTime:
          type: integer
          description: If set, the response time it took to complete this webhook.
          format: int32
        responsePayload:
          type: string
          description: If set, the response HTTP payload of this webhook. As a string
        responseHeaders:
          description: If set, the response HTTP headers associated with this webhook.
        id:
          type: string
          description: Unique identifier associated with this webhook.
          format: uuid
        traceId:
          type: string
          description: Trace identifier associated with this webhook. This identifier is unique per webhook we trigger, but each attempt to call the webhook shares the same identifier.
          format: uuid
        webhookId:
          type: string
          format: uuid
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: 'Enter your bearer token in the format: Bearer {your token}'
      scheme: bearer
      bearerFormat: custom
x-tagGroups:
- name: Authentication
  tags:
  - Authentication
- name: Definitions
  tags:
  - Definitions
- name: Providers
  tags:
  - Providers
  - ProvidersInfo
  - ProviderProfiles
  - Notes
  - Files
- name: Facilities
  tags:
  - Facilities
  - FacilitiesInfo
  - FacilitiesSpecialties
- name: Verifications
  tags:
  - Licenses
  - Datasets
  - DEA
  - BoardCertifications
- name: Monitoring
  tags:
  - Monitoring
  - Alerts
- name: Credentialing
  tags:
  - CredentialingRequests
- name: Integrations
  tags:
  - Integrations
  - Webhooks
- name: Audits
  tags:
  - Audit
- name: Account
  tags:
  - Users
- name: Organizations
  tags:
  - Reports
- name: Models
  tags:
  - Dataset Records
  - Webhook Callbacks