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

# Create event monitor

> Create a scheduled event monitor based on a reference job.



## OpenAPI

````yaml catch-all-api post /catchAll/monitors/create
openapi: 3.1.0
info:
  title: NewsCatcher CatchAll API
  version: 1.8.1
  description: >
    CatchAll is a web search API that generates unique datasets that don't exist
    anywhere else on the web. Built on NewsCatcher's proprietary real-world
    event index, it delivers state-of-the-art recall—finding all relevant
    events, not just top results.


    ### Authentication


    All endpoints except /health and /version require `x-api-key` header. If the
    key is invalid or missing, the API returns the `403 Forbidden` error.


    ### Job workflow


    1. (Optional) Get suggestions via /catchAll/initialize

    2. Submit a query via /catchAll/submit with optional date ranges and custom
    validators/enrichments

    3. Poll /catchAll/status/{job_id} until completed (10-15 minutes)

    4. Retrieve results via /catchAll/pull/{job_id}


    ### Event monitor workflow


    1. Create successful job via /catchAll/submit

    2. Create event monitor via /catchAll/monitors/create with schedule

    3. Retrieve aggregated results via /catchAll/monitors/pull/{monitor_id}


    ### Webhook workflow


    1. Create a webhook via `POST /catchAll/webhooks`

    2. Attach it to a job or event monitor via `POST
    /catchAll/webhooks/{webhook_id}/resources`,
       or pass `webhook_ids` at job or event monitor creation time
    3. Receive HTTP notifications at the configured URL when each job completes


    ### Company search workflow


    1. Create a dataset via `POST /catchAll/datasets/` or `POST
    /catchAll/datasets/upload`

    2. Wait for the dataset `latest_status` to reach `ready`

    3. Submit a job with `connected_dataset_ids` pointing to your dataset

    4. Retrieve results — each record includes a `connected_entities` array
       with relevance scores per matched company

    ### Important notes


    **Dynamic schemas**: Response schemas are generated dynamically by LLMs.
    Field names in the `enrichment` object may vary and are not deterministic
    across jobs unless explicitly specified.
  contact:
    name: NewsCatcher
    url: https://newscatcherapi.com
    email: support@newscatcherapi.com
servers:
  - url: https://catchall.newscatcherapi.com
    description: Production server
security:
  - ApiKeyAuth: []
tags:
  - name: Jobs
    description: Operations to create, monitor, and retrieve job results.
    externalDocs:
      description: Learn about job lifecycle and status tracking
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/get-started/quickstart
  - name: Event Monitors
    description: Operations to create, operate and retrieve event monitor results.
    externalDocs:
      description: >-
        Automate recurring queries with scheduled jobs and webhook
        notifications.
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/event-monitors
  - name: Webhooks
    description: >
      Operations to create and manage reusable webhook endpoints.


      A webhook is a named HTTP endpoint that receives a POST notification

      when a job or event monitor completes. Create webhooks once at the
      organization

      level and attach them to any number of jobs or event monitors via
      `webhook_ids`.

      Supports Slack, Microsoft Teams, and generic HTTP targets with
      configurable

      delivery modes, authentication, and headers.
    externalDocs:
      description: Learn about centralized webhooks and notification setup
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/guides-and-concepts/webhooks
  - name: Entities
    description: >
      Operations to create, update, and delete company entities.


      Entities are the building blocks of Company Monitors. Each entity
      represents

      a company (or person) you want to track. Add identifying information such
      as

      domain, alternative names, and key persons to improve matching quality.
    externalDocs:
      description: Learn about Company Monitors and entities
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/company-monitors
  - name: Datasets
    description: >
      Operations to create and manage datasets of entities.


      A dataset is a named collection of entities — think of it as a watchlist
      or

      portfolio. Connect a dataset to a job via `connected_dataset_ids` to
      activate

      Company Monitors. Datasets can be reused across multiple jobs and event
      monitors.
    externalDocs:
      description: Learn about datasets and Company Monitors
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/company-monitors
  - name: Projects
    description: >
      Operations to create, organize, and manage projects.


      A project is a named container for jobs, event monitors, and datasets.
      Group

      related resources by use case, team, or client, and share them with

      teammates. Resources can be assigned at creation time or post-hoc.
    externalDocs:
      description: Learn about projects and resource organization
      url: https://www.newscatcherapi.com/docs/web-search-api/concepts/projects
  - name: Meta
    description: Operations to check API health and version.
externalDocs:
  description: Find out more about NewsCatcher CatchAll API
  url: https://www.newscatcherapi.com/docs/web-search-api/get-started/introduction
paths:
  /catchAll/monitors/create:
    post:
      tags:
        - Event Monitors
      summary: Create event monitor
      description: Create a scheduled event monitor based on a reference job.
      operationId: createMonitor
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMonitorRequestDto'
            example:
              reference_job_id: 5f0c9087-85cb-4917-b3c7-e5a5eff73a0c
              schedule: every day at 12 PM
              timezone: UTC
              backfill: true
              limit: 10
              webhook_ids:
                - a1b2c3d4-e5f6-7890-abcd-ef1234567890
      responses:
        '200':
          $ref: '#/components/responses/CreateMonitorResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    CreateMonitorRequestDto:
      type: object
      required:
        - reference_job_id
        - schedule
      properties:
        reference_job_id:
          type: string
          format: uuid
          description: >
            Job ID to use as template for scheduled runs. Defines the query,
            validators, and enrichments used for each scheduled run.


            If
            [`backfill`](https://www.newscatcherapi.com/docs/web-search-api/api-reference/event-monitors/create-monitor#body-backfill)
            is true, the job's `end_date` must be within the last 7 days.
        schedule:
          type: string
          description: >
            Event monitor schedule in plain text format. Minimum frequency
            depends on your plan.
          example: every day at 12 PM UTC
        timezone:
          type: string
          description: >
            The IANA timezone identifier used as the fallback when the
            `schedule` string does not include an explicit timezone.


            If the schedule includes a timezone abbreviation (for example,
            `"every day at 9am EST"`), the parsed timezone takes priority and
            this value is ignored. 
          example: America/New_York
          default: UTC
        webhook_ids:
          type: array
          items:
            type: string
            format: uuid
          description: >
            IDs of centralized webhooks to notify on each run completion.

            Passing IDs here is equivalent to calling

            `POST /catchAll/webhooks/{webhook_id}/resources` for each ID after
            creation.

            Maximum 5 per event monitor.
          example:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
        limit:
          type: integer
          minimum: 10
          description: >
            Maximum number of records per event monitor run. If not provided,
            defaults to the plan limit.
        backfill:
          type: boolean
          default: true
          description: >
            If true, fills the data gap between the reference job's `end_date`
            and the first scheduled run. The reference job's `end_date` must be
            within the last 7 days. 


            If false, no gap filling occurs and the first run uses the current
            cron window only — the reference job's age does not matter.
        project_id:
          type: string
          format: uuid
          description: >
            Project to assign this event monitor to. The event monitor appears
            in the project's resource list after creation.
          example: 60a85db4-78ec-4b78-876a-bc7d9cdadd04
    CreateMonitorResponseDto:
      type: object
      required:
        - status
      properties:
        monitor_id:
          type:
            - string
            - 'null'
          format: uuid
          description: Event monitor ID if successful, null if error.
        status:
          type: string
          description: Creation status or error message
          example: Monitor Created Successfully
    Error:
      type: object
      properties:
        detail:
          type: string
          description: Error message.
          example: Invalid API key
    ValidationErrorResponse:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorDetail'
    ValidationErrorDetail:
      type: object
      properties:
        loc:
          type: array
          items:
            oneOf:
              - type: string
              - type: integer
          description: Location of the validation error
        msg:
          type: string
          description: Error message
        type:
          type: string
          description: Error type
  responses:
    CreateMonitorResponse:
      description: Event monitor created successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateMonitorResponseDto'
          example:
            monitor_id: 7f3a8b2c-1e4d-4a5b-9c8d-6e7f8a9b0c1d
            status: Monitor Created Successfully
    UnauthorizedError:
      description: >
        The caller could not be identified: the `x-api-key` header is missing,
        the key is

        unknown or disabled, or the key belongs to a different organization than
        the one

        requested.


        Once identity is established, an access failure returns `403` instead.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            detail: X-API-Key header is required for this endpoint
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication.

````