> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pubrio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitor Validate Webhook

> Send a signed test payload to a webhook URL and report whether it was accepted.

**This performs a real HTTP delivery**, not a URL syntax check. The receiver must accept a `POST` and respond successfully — a URL that merely serves a page on `GET` still fails. On failure you get `40023` (URL not valid or unreachable) or `40022` (test delivery failed), and `details` carries the raw upstream response body, which can be several kilobytes of HTML. Pass `monitor_id` to sign the test with that monitor's real signature; omit it and a placeholder signature is used.



## OpenAPI

````yaml en-openapi POST /monitors/webhook/validate
openapi: 3.0.0
info:
  description: >-
    The Pubrio API delivers market expansion intelligence — real-time signals
    that flag when a company enters a new market — alongside the company and
    people data beneath them. Search, look up, and enrich accounts and contacts,
    and subscribe to typed, dated movement signals across 200+ markets.
  version: 1.0.0
  title: Pubrio OpenAPI
  termsOfService: https://pubrio.com/en/terms-of-service
  contact:
    email: king.lai@pubrio.com
    name: King Lai
    url: https://pubrio.com/en/get-in-touch
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.pubrio.com
security:
  - pubrio_api_key: []
tags:
  - name: Profile
    description: Workspace profile information and usage statistics
  - name: Enrichment
    description: Enrich people and company records with detailed B2B data
  - name: Lookalike
    description: Find companies similar to a given company
  - name: Search
    description: Search for people, companies, jobs, news, and advertisements with filters
  - name: Lookup
    description: >-
      Look up detailed information for specific people, companies, jobs, news,
      advertisements, and technologies
  - name: LinkedIn
    description: Look up people and company data via LinkedIn profile URLs
  - name: Redeem
    description: Redeem credits to unlock people contact details (single and batch)
  - name: Channels
    description: Manage outreach channel templates (create, update, delete, list)
  - name: Monitor
    description: Create and manage data monitors with webhooks, statistics, and processing
  - name: Filters
    description: >-
      Retrieve available filter values for search parameters (technologies,
      locations, verticals, etc.)
  - name: API Keys
    description: List and inspect API request logs and usage analytics for API keys
  - name: Insights
    description: Aggregated signal insights for companies (jobs, news, advertisements).
  - name: Export
    description: Bulk data exports (credit-gated).
  - name: Expansion
    description: >-
      Company market-expansion intelligence: signals, stages, markets, and
      exports.
externalDocs:
  description: >-
    The Pubrio API is used to search, preview and enrich Contacts and Accounts.
    Pubrio database provides extensive B2B contacts and sales intelligence data.
  url: https://docs.pubrio.com
paths:
  /monitors/webhook/validate:
    post:
      tags:
        - Monitor
      summary: Validate monitor webhook
      description: >-
        Send a signed test payload to a webhook URL and report whether it was
        accepted.


        **This performs a real HTTP delivery**, not a URL syntax check. The
        receiver must accept a `POST` and respond successfully — a URL that
        merely serves a page on `GET` still fails. On failure you get `40023`
        (URL not valid or unreachable) or `40022` (test delivery failed), and
        `details` carries the raw upstream response body, which can be several
        kilobytes of HTML. Pass `monitor_id` to sign the test with that
        monitor's real signature; omit it and a placeholder signature is used.
      operationId: monitors_validate_webhook
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                monitor_id:
                  type: string
                  format: uuid
                  description: >-
                    Unique identifier of an existing monitor to test. Optional
                    for testing new configurations.
                name:
                  type: string
                  description: Name of the monitor.
                description:
                  type: string
                  description: Description of the monitor.
                detection_mode:
                  type: string
                  description: >-
                    How signals are detected. `signal_first` scans the market
                    broadly; `company_first` tracks a named account list and
                    requires at least one company, domain or LinkedIn URL.
                    **Immutable after creation** — changing it on an existing
                    monitor returns `40021`. Create a new monitor instead.
                  enum:
                    - company_first
                    - signal_first
                signal_types:
                  type: array
                  items:
                    type: string
                    enum:
                      - jobs
                      - news
                      - advertisements
                      - expansions
                  description: Types of signals to monitor.
                signal_filters:
                  type: array
                  items:
                    type: object
                    required:
                      - signal_type
                    properties:
                      signal_type:
                        type: string
                        enum:
                          - jobs
                          - news
                          - advertisements
                          - expansions
                        description: Which stream this entry filters.
                      filters:
                        type: object
                        description: >-
                          Filters for this stream. `jobs`, `news` and
                          `advertisements` take the parameters of [Job
                          Search](/en/api-reference/endpoint/companies/job_search),
                          [News
                          Search](/en/api-reference/endpoint/companies/news_search)
                          and [Advertisement
                          Search](/en/api-reference/endpoint/companies/advertisements_search).
                          `expansions` takes the [Expansion
                          Search](/en/api-reference/endpoint/expansions/market_lookup)
                          vocabulary: `froms` / `tos`, `window_days`, `stages`,
                          `scopes`, `momentum`, `freshness`, `signal_types`,
                          `signal_subtypes`, `signal_strengths`, `source_types`.
                          Resolve slugs from [Expansion
                          Reference](/en/api-reference/endpoint/expansions/types).
                  description: One entry per signal stream the monitor watches.
                  example:
                    - signal_type: jobs
                      filters:
                        locations:
                          - US
                    - signal_type: news
                      filters:
                        locations:
                          - US
                    - signal_type: advertisements
                      filters:
                        target_locations:
                          - US
                    - signal_type: expansions
                      filters:
                        tos:
                          - US
                        stages:
                          - expanding
                          - scaling
                        signal_types:
                          - HIRE
                          - EXEC
                        signal_strengths:
                          - high
                          - very_high
                company_filters:
                  type: object
                  description: >-
                    Global company filters. Accepts the same parameters as the
                    [Company
                    Search](/en/api-reference/endpoint/companies/search)
                    endpoint.
                  example:
                    locations:
                      - US
                    employees:
                      - - 501
                        - 1000
                      - - 1001
                        - 5000
                companies:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    List of company domain_search_id UUIDs. Alternative: use
                    `domains` or `linkedin_urls`.
                domains:
                  type: array
                  items:
                    type: string
                  description: List of company domains. Alternative to `companies`.
                linkedin_urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  description: List of LinkedIn company URLs. Alternative to `companies`.
                is_company_enrichment:
                  type: boolean
                  description: Whether to enrich company data.
                is_people_enrichment:
                  type: boolean
                  description: Whether to enrich people data.
                people_enrichment_configs:
                  type: array
                  items:
                    type: object
                  description: >-
                    Array of people enrichment layers. Contains
                    `max_people_to_return` (1-25), `people_contact_types` (see
                    [Redeem](/en/api-reference/endpoint/redeem/people)), and
                    `filters` (see [People
                    Search](/en/api-reference/endpoint/people/search)).
                  example:
                    - filters:
                        people_locations:
                          - US
                      max_people_to_return: 3
                      people_contact_types:
                        - email-work
                destination_type:
                  type: string
                  description: Delivery destination type.
                  enum:
                    - webhook
                    - email
                    - sequences
                destination_config:
                  type: object
                  description: >-
                    Configuration for the destination. For webhook: requires
                    `webhook_url` (string), optional `headers` (object) and
                    `body` (object). For email: accepts `email` (string) or
                    `emails` (array of strings). For sequences: requires
                    `sequence_identifier` (string) plus at least one of
                    `is_people_search_enrolled` / `is_company_contact_enrolled`
                    set to true.
                  example:
                    webhook_url: https://your-webhook.com/endpoint
                    headers:
                      Authorization: Bearer token
                    body:
                      pipeline: my-webhook
                frequency_minute:
                  type: integer
                  description: 'Trigger frequency in minutes. Min: 0, Max: 10080.'
                  minimum: 0
                  maximum: 10080
                max_failure_trigger:
                  type: integer
                  description: >-
                    Maximum consecutive failures before pausing. Min: 1, Max:
                    10.
                  minimum: 1
                  maximum: 10
                max_daily_trigger:
                  type: integer
                  description: 'Maximum triggers per day. Min: 0, Max: 86400.'
                  minimum: 0
                  maximum: 86400
                max_records_per_trigger:
                  type: integer
                  description: >-
                    Controls the maximum number of records delivered per
                    trigger. Lower values reduce payload size per delivery,
                    which is recommended for large result sets or rate-limited
                    integrations. Min: 1, Max: 100, Default: 25. See [Setting up
                    Webhooks](/en/developer-guides/setting-up-webhooks) for
                    guidance.
                  minimum: 1
                  maximum: 100
                notification_email:
                  type: string
                  format: email
                  description: Email for failure notifications.
                max_retry_per_trigger:
                  type: integer
                  description: 'Maximum retries per trigger. Min: 0, Max: 3.'
                  minimum: 0
                  maximum: 3
                retry_delay_second:
                  type: integer
                  description: 'Delay between retries in seconds. Min: 1, Max: 5.'
                  minimum: 1
                  maximum: 5
              required:
                - destination_config
      responses:
        '200':
          description: >-
            Successful response containing the webhook validation results — the
            destination configuration and the test request/response payloads. On
            webhook failure the endpoint responds 400
            (MONITOR_WEBHOOK_URL_INVALID) with the webhook's response in the
            error details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      destination_config:
                        type: object
                        description: The destination configuration that was tested.
                      request_payload:
                        type: object
                        description: >-
                          The request payload sent to the webhook during
                          validation.
                      response_payload:
                        type: object
                        description: The response payload received from the webhook.
              example:
                data:
                  destination_config:
                    webhook_url: https://usewebhook.com/example
                    headers:
                      X-Custom-Auth: your-token
                    body:
                      source: pubrio
                  request_payload:
                    monitor:
                      monitor_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      name: My Monitor
                      detection_mode: signal_first
                      signal_types:
                        - jobs
                        - news
                        - advertisements
                      signal_filters:
                        - ...
                      company_filters:
                        ...: ...
                      is_company_enrichment: true
                      is_people_enrichment: true
                      people_enrichment_configs:
                        - ...
                    metadata:
                      total_signals: 3
                      total_companies: 1
                      total_people: 0
                    triggered_at: '2026-04-05T22:43:06.973Z'
                    signals:
                      - signal_type: jobs
                        signal:
                          signal_type: jobs
                          job_search_id: ...
                          companies:
                            - ...
                        companies:
                          - ...
                      - ...
                    source: pubrio
                  response_payload: OK
        '400':
          $ref: '#/components/responses/general_error'
        '429':
          $ref: '#/components/responses/rate_limit_error'
        '500':
          $ref: '#/components/responses/server_error'
components:
  responses:
    general_error:
      description: >-
        Bad request. The request was malformed or contained invalid parameters.
        Check the error code and message for details.
      content:
        application/json:
          schema:
            required:
              - code
              - message
              - details
            type: object
            properties:
              code:
                example: 40001
                type: integer
              message:
                example: >-
                  Errors and codes will vary depending on the scenario, please
                  see the documentation for information.
                type: string
              details:
                type: object
    rate_limit_error:
      description: >-
        Rate limit exceeded. Too many requests were made in a given time period.
        Retry after the rate limit window resets.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: Request rate limit exceeded. Please wait and try again later.
                type: string
    server_error:
      description: >-
        Internal server error. An unexpected error occurred on the server.
        Contact support if the error persists.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: An unexpected error occurred on the server.
                type: string
  securitySchemes:
    pubrio_api_key:
      type: apiKey
      name: pubrio-api-key
      description: >-
        A unique API token that represents the actions you perform through the
        API and the corresponding permissions and operations. You can create it
        through the [Settings](https://dashboard.pubrio.com/#/settings/)
        section.
      in: header

````