> ## 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.

# Create Monitor

> Create a data monitor: an always-on watch that continuously surfaces the business signals you care about — new job postings, news, advertisements, or market-expansion moves — from the companies and filters you define, enriches each match with company and contact data, and delivers it to your destination (email or webhook) on your chosen schedule. Configure it field by field, or describe the whole monitor in one plain-language sentence with `query` and it is interpreted into the configuration within the same request.



## OpenAPI

````yaml en-openapi POST /monitors/create
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/create:
    post:
      tags:
        - Monitor
      summary: Create a monitor
      description: >-
        Create a data monitor: an always-on watch that continuously surfaces the
        business signals you care about — new job postings, news,
        advertisements, or market-expansion moves — from the companies and
        filters you define, enriches each match with company and contact data,
        and delivers it to your destination (email or webhook) on your chosen
        schedule. Configure it field by field, or describe the whole monitor in
        one plain-language sentence with `query` and it is interpreted into the
        configuration within the same request.
      operationId: monitors_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the monitor.
                description:
                  type: string
                  description: Description of the monitor.
                status:
                  type: string
                  description: >-
                    Lifecycle status to create the monitor with. Defaults to
                    `active`. Use `draft` to save a half-built monitor: only
                    `name` is required, validation is deferred until you
                    activate it, and a draft never runs.
                  enum:
                    - draft
                    - active
                    - paused
                    - inactive
                  default: active
                detection_mode:
                  type: string
                  description: >-
                    Detection mode: 'company_first' starts by finding companies
                    then checks signals, 'signal_first' starts by finding
                    signals then matches companies.
                  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
                  description: >-
                    Array of signal filter objects. Each object has
                    `signal_type` (one of: jobs, news, advertisements) and
                    `filters` (object with signal-specific parameters). See [Job
                    Search](/en/api-reference/endpoint/companies/job_search),
                    [News
                    Search](/en/api-reference/endpoint/companies/news_search),
                    or [Advertisement
                    Search](/en/api-reference/endpoint/companies/advertisements_search)
                    for available filter parameters per signal type.
                  example:
                    - filters:
                        locations:
                          - US
                      signal_type: jobs
                    - filters:
                        locations:
                          - US
                      signal_type: news
                    - filters:
                        target_locations:
                          - US
                      signal_type: advertisements
                company_filters:
                  type: object
                  description: >-
                    Global company filters applied as a second layer across all
                    signal types. Accepts the same parameters as the [Company
                    Search](/en/api-reference/endpoint/companies/search)
                    endpoint — locations, employees, technologies, verticals,
                    and more.
                  example:
                    locations:
                      - US
                    employees:
                      - - 501
                        - 1000
                      - - 1001
                        - 5000
                companies:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    List of company domain_search_id UUIDs to monitor. Used
                    primarily in company_first mode to specify target companies.
                    You can also use `domains` or `linkedin_urls` as
                    alternatives — only one of the three is required.
                domains:
                  type: array
                  items:
                    type: string
                  description: >-
                    List of company domains to monitor (e.g., ["openai.com",
                    "google.com"]). Alternative to `companies` — Pubrio resolves
                    these to the corresponding companies. Only one of
                    `companies`, `domains`, or `linkedin_urls` is required.
                linkedin_urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  description: >-
                    List of LinkedIn company URLs to monitor (e.g.,
                    ["https://linkedin.com/company/pubrio"]). Alternative to
                    `companies` — Pubrio resolves these to the corresponding
                    companies. Only one of `companies`, `domains`, or
                    `linkedin_urls` is required.
                is_company_enrichment:
                  type: boolean
                  description: Whether to enrich company data in results.
                is_people_enrichment:
                  type: boolean
                  description: Whether to enrich people data in results.
                people_enrichment_configs:
                  type: array
                  items:
                    type: object
                  description: >-
                    Array of people enrichment layers. Each layer runs an
                    independent people search. Contains `max_people_to_return`
                    (1-25), `people_contact_types` (array — refers to
                    [Redeem](/en/api-reference/endpoint/redeem/people) contact
                    types: email-work, email-personal, phone), and `filters`
                    (same parameters as [People
                    Search](/en/api-reference/endpoint/people/search) endpoint).
                  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, Default:
                    0.
                  minimum: 0
                  maximum: 10080
                  default: 0
                max_failure_trigger:
                  type: integer
                  description: >-
                    Maximum consecutive failures before pausing the monitor.
                    Min: 1, Max: 10, Default: 5.
                  minimum: 1
                  maximum: 10
                  default: 5
                max_daily_trigger:
                  type: integer
                  description: 'Maximum triggers per day. Min: 0, Max: 86400, Default: 500.'
                  minimum: 0
                  maximum: 86400
                  default: 500
                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
                  default: 25
                notification_email:
                  type: string
                  format: email
                  description: Email address for monitor failure notifications.
                max_retry_per_trigger:
                  type: integer
                  description: 'Maximum retries per trigger. Min: 0, Max: 3, Default: 1.'
                  minimum: 0
                  maximum: 3
                  default: 1
                retry_delay_second:
                  type: integer
                  description: >-
                    Delay between retries in seconds. Min: 1, Max: 5, Default:
                    1.
                  minimum: 1
                  maximum: 5
                  default: 1
                profile_id:
                  $ref: '#/components/schemas/profile_id'
                query:
                  type: string
                  maxLength: 2000
                  description: >-
                    A natural-language description of the monitor (any
                    language), e.g. "monitor companies expanding into Japan, get
                    C-level people with their work email, and email alerts to
                    me@company.com in real time". It is interpreted into the
                    fields below (detection_mode, signal_types, signal_filters,
                    people_enrichment_configs,
                    destination_type/destination_config, frequency_minute) in
                    the same request. Any field you also pass explicitly
                    overrides the interpreted value. If the text is not a
                    monitor request, the call returns 400. Capped at 2000
                    characters.
                deep:
                  type: boolean
                  description: >-
                    Optional, only used with `query`. Run the reflection pass
                    for higher interpretation accuracy (default true; roughly
                    doubles the interpretation latency). Set false for a faster
                    single pass.
              anyOf:
                - title: Natural language
                  required:
                    - query
                - title: Structured fields
                  required:
                    - name
                    - detection_mode
                    - signal_types
                    - destination_type
                    - destination_config
                - title: Draft
                  required:
                    - name
                    - status
      responses:
        '200':
          description: Successful response containing the newly created monitor details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      monitor_id:
                        type: string
                        format: uuid
                        description: Unique identifier for the newly created monitor.
                      name:
                        type: string
                        description: Name of the monitor.
                      description:
                        type: string
                        description: Description of the monitor.
                      detection_mode:
                        type: string
                        description: 'Detection mode: ''company_first'' or ''signal_first''.'
                      signal_types:
                        type: array
                        items:
                          type: string
                        description: Signal types this monitor watches.
                      signal_filters:
                        type: array
                        items:
                          type: object
                        description: >-
                          Per-signal-type filters, as stored. When you create
                          with `query`, this is what your sentence was
                          interpreted into — check it to confirm the monitor
                          watches what you meant.
                      company_filters:
                        type: object
                        description: >-
                          Company-profile filters applied to every matched
                          signal.
                      companies:
                        type: array
                        items:
                          type: string
                        description: Companies watched (company_first).
                      is_company_enrichment:
                        type: boolean
                        description: Whether matches are enriched with company details.
                      is_people_enrichment:
                        type: boolean
                        description: Whether matches are enriched with people and contacts.
                      people_enrichment_configs:
                        type: array
                        items:
                          type: object
                        description: People enrichment settings, as stored.
                      destination_type:
                        type: string
                        description: Delivery destination type.
                      destination_config:
                        type: object
                        description: Delivery destination details (emails, or webhook URL).
                      frequency_minute:
                        type: integer
                        description: How often the monitor runs, in minutes.
                      notification_email:
                        type: string
                        nullable: true
                        description: Address notified about the monitor itself.
                      max_retry_per_trigger:
                        type: integer
                        description: Retries allowed per trigger.
                      retry_delay_second:
                        type: integer
                        description: Delay between retries, in seconds.
                      max_records_per_trigger:
                        type: integer
                        description: Maximum records delivered per trigger.
                      max_daily_trigger:
                        type: integer
                        description: Maximum triggers per day.
                      max_failure_trigger:
                        type: integer
                        description: Consecutive failures before the monitor stops.
                      status:
                        type: string
                        enum:
                          - draft
                          - active
                          - paused
                          - inactive
                        description: Lifecycle status the monitor was created with.
                      masked_signature:
                        type: string
                        description: Masked webhook signature for display.
                      created_at:
                        type: string
                        format: date-time
                        description: Timestamp when the monitor was created.
                      signature:
                        type: string
                        format: uuid
                        description: >-
                          Webhook signature for verifying payloads. Only
                          returned on creation.
              example:
                data:
                  monitor_id: c9cd5421-b327-4243-9cd7-8b341b3da8bd
                  name: Expansion signals → JP
                  description: null
                  detection_mode: signal_first
                  signal_types:
                    - expansions
                  signal_filters:
                    - signal_type: expansions
                      filters:
                        tos:
                          - JP
                  company_filters: {}
                  companies: []
                  is_company_enrichment: false
                  is_people_enrichment: true
                  people_enrichment_configs:
                    - max_people_to_return: 5
                      filters:
                        management_levels:
                          - c_suite
                      people_contact_types:
                        - email-work
                  destination_type: email
                  destination_config:
                    emails:
                      - me@company.com
                  frequency_minute: 5
                  notification_email: null
                  max_retry_per_trigger: 3
                  retry_delay_second: 60
                  max_records_per_trigger: 100
                  max_daily_trigger: 24
                  max_failure_trigger: 5
                  status: active
                  masked_signature: 5••••••••••••••8b8
                  created_at: '2026-07-16T10:27:40.469Z'
                  signature: 52209a0d-f1c8-4111-a685-ac86edc678b8
        '400':
          $ref: '#/components/responses/general_error'
        '429':
          $ref: '#/components/responses/rate_limit_error'
        '500':
          $ref: '#/components/responses/server_error'
components:
  schemas:
    profile_id:
      type: integer
      description: >-
        Optional. An identifier for the user profile (workspace) making the
        request. This is no longer required as the API key already includes your
        workspace information. If provided, it helps in associating the lookup
        with a specific user, allowing for data retrieval and credit tracking. 

         Check out `user details` endpoints under the Profile tab for more information.
  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

````