Parallel Monitor API

The Monitor API watches the web for material changes on a fixed frequency. Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected. - `event_stream` monitors track a search query and emit an event for each new material change. - `snapshot` monitors track a specific task run's output and emit an event when the output changes. Results can be polled via the events endpoint or delivered via webhooks.

Operations 7

POST /v1/monitors Create Monitor #
GET /v1/monitors List Monitors #
GET /v1/monitors/{monitor_id} Retrieve Monitor #
POST /v1/monitors/{monitor_id}/cancel Cancel Monitor #
GET /v1/monitors/{monitor_id}/events List Monitor Events #
POST /v1/monitors/{monitor_id}/trigger Trigger Monitor Run #
POST /v1/monitors/{monitor_id}/update Update Monitor #

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/parallel-monitor-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

parallel-monitor-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Parallel Chat API (Beta) Chat API (Beta) Monitor API
  description: Parallel API
  contact:
    name: Parallel Support
    url: https://parallel.ai
    email: support@parallel.ai
  version: 0.1.2
servers:
- url: https://api.parallel.ai
  description: Parallel API
security:
- ApiKeyAuth: []
tags:
- name: Monitor
  description: 'The Monitor API watches the web for material changes on a fixed frequency. Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.

    - `event_stream` monitors track a search query and emit an event for each new material change.

    - `snapshot` monitors track a specific task run''s output and emit an event when the output changes.


    Results can be polled via the events endpoint or delivered via webhooks.'
paths:
  /v1/monitors:
    post:
      tags:
      - Monitor
      summary: Create Monitor
      description: 'Create a monitor.


        Monitors run on a fixed frequency to detect material changes in web content.

        Set `type=event_stream` to monitor a search query, or `type=snapshot` to

        monitor a specific task run''s output. The monitor runs once immediately at

        creation, then continues on the configured schedule.'
      operationId: create_monitor_v1_monitors_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMonitorRequest'
      responses:
        '201':
          description: Monitor created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorResponse'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable content: request validation error'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unprocessable content: request validation error'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-code-samples:
      - lang: Python
        source: "from parallel import Parallel\n\nclient = Parallel()\n\nmonitor = client.monitor.create(\n    type=\"event_stream\",\n    frequency=\"1d\",\n    settings={\"query\": \"Extract recent news about AI\"},\n)\nprint(monitor.monitor_id)"
      - lang: TypeScript
        source: "import Parallel from \"parallel-web\";\n\nconst client = new Parallel();\n\nconst monitor = await client.monitor.create({\n    type: 'event_stream',\n    frequency: '1d',\n    settings: { query: 'Extract recent news about AI' },\n});\nconsole.log(monitor.monitor_id);"
    get:
      tags:
      - Monitor
      summary: List Monitors
      description: 'List monitors ordered by creation time, newest first.


        Monitors are sorted by `created_at` descending. `limit` defaults to 100.

        Use `next_cursor` from the response and pass it as `cursor` to fetch the

        next page. Pagination ends when `next_cursor` is absent.


        By default only `active` monitors are returned. Pass `status=cancelled`

        or both values to include cancelled monitors.


        The legacy Monitor API (`/v1alpha/monitors` endpoints) is documented under

        the `Monitor (Alpha)` tag.'
      operationId: list_monitors_v1_monitors_get
      parameters:
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Pagination token from `next_cursor` in a previous response. Omit to start from the most recently created monitor.
          title: Cursor
        description: Pagination token from `next_cursor` in a previous response. Omit to start from the most recently created monitor.
      - name: limit
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            maximum: 10000
            minimum: 1
          - type: 'null'
          description: Maximum number of monitors to return. Defaults to 100. Between 1 and 10000.
          title: Limit
        description: Maximum number of monitors to return. Defaults to 100. Between 1 and 10000.
      - name: type
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              enum:
              - event_stream
              - snapshot
              type: string
          - type: 'null'
          description: Filter by monitor type. Pass multiple times to filter by multiple values. Omit to return all types.
          title: Type
        description: Filter by monitor type. Pass multiple times to filter by multiple values. Omit to return all types.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              enum:
              - active
              - cancelled
              type: string
          - type: 'null'
          description: Filter by monitor status. Pass multiple times to filter by multiple values. Defaults to `active` only.
          title: Status
        description: Filter by monitor status. Pass multiple times to filter by multiple values. Defaults to `active` only.
      responses:
        '200':
          description: Paginated list of monitors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMonitorResponse'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-code-samples:
      - lang: Python
        source: "from parallel import Parallel\n\nclient = Parallel()\n\npage = client.monitor.list(limit=10)\nfor monitor in page.monitors:\n    print(monitor.monitor_id, monitor.status)"
      - lang: TypeScript
        source: "import Parallel from \"parallel-web\";\n\nconst client = new Parallel();\n\nconst page = await client.monitor.list({ limit: 10 });\nfor (const monitor of page.monitors) {\n    console.log(monitor.monitor_id, monitor.status);\n}"
  /v1/monitors/{monitor_id}:
    get:
      tags:
      - Monitor
      summary: Retrieve Monitor
      description: 'Retrieve a monitor.


        Retrieves a specific monitor by `monitor_id`. Returns the monitor

        configuration including status, frequency, query, and webhook settings.'
      operationId: retrieve_monitor_v1_monitors__monitor_id__get
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          title: Monitor Id
      responses:
        '200':
          description: Monitor retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorResponse'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Monitor not found
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: Monitor not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-code-samples:
      - lang: Python
        source: 'from parallel import Parallel


          client = Parallel()


          monitor = client.monitor.retrieve("monitor_id")

          print(monitor.status)'
      - lang: TypeScript
        source: 'import Parallel from "parallel-web";


          const client = new Parallel();


          const monitor = await client.monitor.retrieve(''monitor_id'');

          console.log(monitor.status);'
  /v1/monitors/{monitor_id}/cancel:
    post:
      tags:
      - Monitor
      summary: Cancel Monitor
      description: 'Cancel a monitor.


        Permanently stops the monitor from running. Cancellation is irreversible —

        create a new monitor to resume monitoring. Cancelling an already-cancelled

        monitor is a no-op.'
      operationId: cancel_monitor_v1_monitors__monitor_id__cancel_post
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          title: Monitor Id
      responses:
        '200':
          description: Monitor cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorResponse'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Monitor not found
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: Monitor not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable content: request validation error'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unprocessable content: request validation error'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-code-samples:
      - lang: Python
        source: 'from parallel import Parallel


          client = Parallel()


          monitor = client.monitor.cancel("monitor_id")

          print(monitor.status)'
      - lang: TypeScript
        source: 'import Parallel from "parallel-web";


          const client = new Parallel();


          const monitor = await client.monitor.cancel(''monitor_id'');

          console.log(monitor.status);'
  /v1/monitors/{monitor_id}/events:
    get:
      tags:
      - Monitor
      summary: List Monitor Events
      description: 'List events for a monitor, newest first.


        Pass `event_group_id` to narrow results to a single execution. Otherwise

        returns all executions newest-first; use `next_cursor` to paginate.

        Set `include_completions=true` to also include no-change executions.'
      operationId: list_monitor_events_v1_monitors__monitor_id__events_get
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          title: Monitor Id
      - name: event_group_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter to a single execution. Values come from `event_group_id` in webhook events and listed events. Pagination params are ignored when set.
          title: Event Group Id
        description: Filter to a single execution. Values come from `event_group_id` in webhook events and listed events. Pagination params are ignored when set.
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Pass `next_cursor` from a previous response to retrieve more events.
          title: Cursor
        description: Pass `next_cursor` from a previous response to retrieve more events.
      - name: limit
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            maximum: 100
            minimum: 1
          - type: 'null'
          description: Maximum number of events to return. Defaults to 20. Between 1 and 100.
          title: Limit
        description: Maximum number of events to return. Defaults to 20. Between 1 and 100.
      - name: include_completions
        in: query
        required: false
        schema:
          type: boolean
          description: When true, include completion events for executions that ran but detected no material changes. Useful for auditing execution history.
          default: false
          title: Include Completions
        description: When true, include completion events for executions that ran but detected no material changes. Useful for auditing execution history.
      responses:
        '200':
          description: Monitor events retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMonitorEvents'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Monitor not found
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: Monitor not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable content: invalid cursor or request validation error'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unprocessable content: invalid cursor or request validation error'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-code-samples:
      - lang: Python
        source: "from parallel import Parallel\n\nclient = Parallel()\n\npage = client.monitor.events(\"monitor_id\", limit=20)\nfor event in page.events:\n    print(event)"
      - lang: TypeScript
        source: "import Parallel from \"parallel-web\";\n\nconst client = new Parallel();\n\nconst page = await client.monitor.events('monitor_id', { limit: 20 });\nfor (const event of page.events) {\n    console.log(event);\n}"
  /v1/monitors/{monitor_id}/trigger:
    post:
      tags:
      - Monitor
      summary: Trigger Monitor Run
      description: 'Trigger an immediate monitor run.


        Enqueues a one-off execution of the monitor outside its normal schedule.

        The monitor''s regular schedule is not affected. An event is only emitted

        if the execution detects a material change. Cancelled monitors cannot be

        triggered.'
      operationId: trigger_monitor_run_v1_monitors__monitor_id__trigger_post
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          title: Monitor Id
      responses:
        '204':
          description: Monitor run enqueued.
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Monitor not found
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: Monitor not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable content: request validation error'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unprocessable content: request validation error'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-code-samples:
      - lang: Python
        source: 'from parallel import Parallel


          client = Parallel()


          client.monitor.trigger("monitor_id")'
      - lang: TypeScript
        source: 'import Parallel from "parallel-web";


          const client = new Parallel();


          await client.monitor.trigger(''monitor_id'');'
  /v1/monitors/{monitor_id}/update:
    post:
      tags:
      - Monitor
      summary: Update Monitor
      description: 'Update a monitor.


        Only fields explicitly included in the request body are changed. Pass

        `null` for `webhook` or `metadata` to clear those fields. Pass `type` and

        `settings` to update type-specific settings on an `event_stream` monitor.

        At least one field must be provided. Cancelled monitors cannot be updated.'
      operationId: update_monitor_v1_monitors__monitor_id__update_post
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          title: Monitor Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMonitorRequest'
      responses:
        '200':
          description: Monitor updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorResponse'
        '401':
          description: 'Unauthorized: invalid or missing credentials'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unauthorized: invalid or missing credentials'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Monitor not found
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: Monitor not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable content: request validation error'
          content:
            application/json:
              example:
                type: error
                error:
                  ref_id: fcb2b4f3-c75e-4186-87bc-caa1a8381331
                  message: 'Unprocessable content: request validation error'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-code-samples:
      - lang: Python
        source: "from parallel import Parallel\n\nclient = Parallel()\n\nmonitor = client.monitor.update(\n    \"monitor_id\",\n    frequency=\"12h\",\n    type=\"event_stream\",\n    settings={\"query\": \"Extract recent funding news about AI startups\"},\n)\nprint(monitor.frequency)"
      - lang: TypeScript
        source: "import Parallel from \"parallel-web\";\n\nconst client = new Parallel();\n\nconst monitor = await client.monitor.update('monitor_id', {\n    frequency: '12h',\n    type: 'event_stream',\n    settings: { query: 'Extract recent funding news about AI startups' },\n});\nconsole.log(monitor.frequency);"
components:
  schemas:
    MonitorEventStreamResponseSettings:
      properties:
        query:
          type: string
          title: Query
          description: The search query being monitored.
          examples:
          - Extract recent news about AI
        output_schema:
          anyOf:
          - $ref: '#/components/schemas/JsonSchema'
          - type: 'null'
          description: JSON schema that constrains and structures the event output. When set, events are returned as JSON objects matching this schema.
        include_backfill:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Include Backfill
          description: If true, the first execution returns a sample of recent historical events matching the query (preview only — not exhaustive). If false or omitted, only events from the monitor's creation date onward are returned. Subsequent executions are always incremental.
        advanced_settings:
          anyOf:
          - $ref: '#/components/schemas/AdvancedMonitorSettings'
          - type: 'null'
          description: Advanced monitor configuration.
      type: object
      required:
      - query
      title: MonitorEventStreamResponseSettings
      description: Type-specific response fields for an `event_stream` monitor.
    MonitorCompletionEvent:
      properties:
        event_type:
          type: string
          enum:
          - completion
          const: completion
          title: Event Type
          description: Discriminant for the completion event variant.
          default: completion
        timestamp:
          type: string
          format: date-time
          title: Timestamp
          description: Timestamp of when the monitor execution completed, as an RFC 3339 string.
          examples:
          - '2025-01-15T10:30:00Z'
      type: object
      required:
      - timestamp
      title: MonitorCompletionEvent
      description: 'Emitted when a monitor execution ran but detected no material changes.


        Only returned when `include_completions=true` is passed to the list events

        endpoint. Useful for auditing execution history alongside content events.'
    MonitorResponse:
      properties:
        type:
          type: string
          enum:
          - event_stream
          - snapshot
          title: Type
          description: The type of monitor.
          examples:
          - event_stream
          - snapshot
        monitor_id:
          type: string
          title: Monitor ID
          description: ID of the monitor.
        status:
          type: string
          enum:
          - active
          - cancelled
          title: Status
          description: Status of the monitor.
          examples:
          - active
          - cancelled
        frequency:
          type: string
          title: Frequency
          description: 'Frequency of the monitor. Format: ''<number><unit>'' where unit is ''h'' (hours), ''d'' (days), or ''w'' (weeks). Must be between 1h and 30d (inclusive).'
          examples:
          - 1h
          - 12h
          - 1d
          - 7d
          - 30d
        processor:
          type: string
          enum:
          - lite
          - base
          title: Processor
          description: Processor to use for the monitor. `lite` is faster and cheaper; `base` performs more thorough analysis at higher cost and latency. Defaults to `lite`.
          examples:
          - lite
          - base
        webhook:
          anyOf:
          - $ref: '#/components/schemas/MonitorWebhook'
          - type: 'null'
          description: Webhook configuration for the monitor.
        metadata:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Metadata
          description: 'User-provided metadata stored with the monitor and echoed back in webhook notifications and GET responses, so you can map events to objects in your application. Keys: max 16 chars; values: max 512 chars.'
          examples:
          - slack_thread_id: '1234567890.123456'
            user_id: U123ABC
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Timestamp of the creation of the monitor, as an RFC 3339 string.
          examples:
          - '2025-01-15T10:30:00Z'
        last_run_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Run At
          description: Timestamp of the last run for the monitor, as an RFC 3339 string.
          examples:
          - '2025-01-15T10:30:00Z'
        settings:
          anyOf:
          - $ref: '#/components/schemas/MonitorEventStreamResponseSettings'
          - $ref: '#/components/schemas/MonitorSnapshotResponseSettings'
          title: Settings
          description: 'Type-specific configuration. Shape is determined by `type`: `MonitorEventStreamResponseSettings` for `event_stream`, `MonitorSnapshotResponseSettings` for `snapshot`.'
        output:
          anyOf:
          - $ref: '#/components/schemas/MonitorSnapshotOutput'
          - type: 'null'
          description: Runtime output state. Present only for `snapshot` monitors; `null` for `event_stream` monitors.
      type: object
      required:
      - type
      - monitor_id
      - status
      - frequency
      - processor
      - created_at
      - settings
      title: MonitorResponse
      description: 'Response object for a monitor.


        The `type` field at the root determines the concrete shape of `settings`:

        `event_stream` uses `MonitorEventStreamResponseSettings`, and `snapshot`

        uses `MonitorSnapshotResponseSettings`. Snapshot monitors also carry an

        `output` field (`MonitorSnapshotOutput`) with the latest computed state.'
    MonitorEventStreamSettings:
      properties:
        query:
          type: string
          title: Query
          description: Search query to monitor for material changes.
          examples:
          - Extract recent news about AI
        output_schema:
          anyOf:
          - $ref: '#/components/schemas/JsonSchema'
          - type: 'null'
          description: JSON schema that constrains and structures the event output. When set, events are returned as JSON objects matching this schema instead of free-form text.
        include_backfill:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Include Backfill
          description: If true, the first execution returns a sample of recent historical events matching the query (preview only — not exhaustive). If false or omitted, only events from the monitor's creation date onward are returned. Subsequent executions are always incremental.
        advanced_settings:
          anyOf:
          - $ref: '#/components/schemas/AdvancedMonitorSettings'
          - type: 'null'
          description: Advanced monitor configuration.
      type: object
      required:
      - query
      title: MonitorEventStreamSettings
      description: Type-specific settings for an `event_stream` monitor.
    CreateMonitorRequest:
      properties:
        type:
          type: string
          enum:
          - event_stream
          - snapshot
          title: Type
          description: Type of monitor to create. `event_stream` monitors a search query for material changes; `snapshot` monitors a specific task run's output. Determines the expected shape of `settings`.
          examples:
          - event_stream
          - snapshot
        frequency:
          type: string
          title: Frequency
          description: 'Frequency of the monitor. Format: ''<number><unit>'' where unit is ''h'' (hours), ''d'' (days), or ''w'' (weeks). Must be between 1h and 30d (inclusive).'
          examples:
          - 1h
          - 12h
          - 1d
          - 7d
          - 30d
        processor:
          type: string
          enum:
          - lite
          - base
          title: Processor
          description: Processor to use for the monitor. `lite` is faster and cheaper; `base` performs more thorough analysis at higher cost and latency. Defaults to `lite`.
          default: lite
        webhook:
          anyOf:
          - $ref: '#/components/schemas/MonitorWebhook'
          - type: 'null'
          description: Webhook to receive notifications about the monitor's execution.
        metadata:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Metadata
          description: 'User-provided metadata stored with the monitor and echoed back in webhook notifications and GET responses, so you can map events to objects in your application. Keys: max 16 chars; values: max 512 chars.'
          examples:
          - slack_thread_id: '1234567890.123456'
            user_id: U123ABC
        settings:
          anyOf:
          - $ref: '#/components/schemas/MonitorEventStreamSettings'
          - $ref: '#/components/schemas/MonitorSnapshotSettings'
          title: Settings
          description: 'Type-specific settings for the monitor. The expected shape is determined by the root `type` field: pass `MonitorEventStreamSettings` when `type` is `event_stream`, and `MonitorSnapshotSettings` when `type` is `snapshot`.'
      type: object
      required:
      - type
      - frequency
      - settings
      title: CreateMonitorRequest
      description: 'Request body to create a monitor.


        The `type` field at the root determines the expected shape of `settings`:

        `event_stream` requires `MonitorEventStreamSettings`, and `snapshot`

        requires `MonitorSnapshotSettings`.'
    AdvancedMonitorSettings:
      properties:
        source_policy:
          anyOf:
          - $ref: '#/components/schemas/SourcePolicy'
          - type: 'null'
          description: 'Domain filtering preferences: preferred and disallowed domains for monitor search results.'
          examples:
          - exclude_domains:
            - reddit.com
            - x.com
            - .ai
            include_domains:
            - wikipedia.org
            - usa.gov
            - .edu
        location:
          anyOf:
          - type: string
          - type: 'null'
          title: Location
          description: ISO 3166-1 alpha-2 country code for geo-targeted monitor results.
          examples:
          - us
          - gb
          - de
          - jp
      type: object
      title: AdvancedMonitorSettings
      description: Advanced monitor configuration.
    McpToolCall:
      properties:
        tool_call_id:
          type: string
          title: Tool Call ID
          description: Identifier for the tool call.
        server_name:
          type: string
          title: Server Name
          description: Name of the MCP server.
        tool_name:
          type: string
          title: Tool Name
          description: Name of the tool being called.
        arguments:
          type: string
          title: Arguments
          description: Arguments used to call the MCP tool.
        content:
          anyOf:
          - type: string
          - type: 'null'
          title: Content
          descript

# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/parallel/refs/heads/main/openapi/parallel-monitor-api-openapi.yml