Exa

Exa Monitors API

The Monitors API from Exa — 6 operation(s) for monitors.

Operations 12

POST /monitors Create a Monitor #
GET /monitors List Monitors #
POST /monitors/batch Batch Action on Monitors #
GET /monitors/{id} Get a Monitor #
PATCH /monitors/{id} Update a Monitor #
DELETE /monitors/{id} Delete a Monitor #
POST /monitors/{id}/trigger Trigger a Monitor #
POST /v0/monitors Create a Monitor #
GET /v0/monitors List Monitors #
GET /v0/monitors/{id} Get Monitor #
PATCH /v0/monitors/{id} Update Monitor #
DELETE /v0/monitors/{id} Delete Monitor #

Documentation

Specifications

Schemas & Data

Other Resources

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/exa-ai-monitors-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

exa-ai-monitors-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Exa Monitors API
  version: 2.0.0
  description: Exa Monitors API - subset of the Exa Public API.
servers:
- url: https://api.exa.ai
security:
- apiKey: []
- bearer: []
tags:
- name: Monitors
paths:
  /monitors:
    post:
      operationId: createMonitor
      summary: Create a Monitor
      description: 'Creates a new Monitor to run recurring Exa searches on a schedule.


        Monitors automatically execute your search query on a recurring schedule and deliver results to your webhook endpoint with automatic deduplication:


        - **Date-based filtering** only fetches content since the last run


        - **Semantic deduplication** tracks previous outputs to surface only new developments


        The response includes a `webhookSecret` that is only returned once at creation time. Store it securely for webhook signature verification.'
      tags:
      - Monitors
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSearchMonitorParameters'
      responses:
        '201':
          description: The created monitor with webhook secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSearchMonitorResponse'
    get:
      operationId: listMonitors
      summary: List Monitors
      description: Lists all monitors for the authenticated team. Supports filtering by status and cursor-based pagination.
      tags:
      - Monitors
      parameters:
      - in: query
        name: status
        schema:
          type: string
          enum:
          - active
          - paused
          - disabled
          description: Filter monitors by status
      - in: query
        name: cursor
        schema:
          type: string
          description: Pagination cursor from a previous response
      - in: query
        name: limit
        schema:
          type: integer
          minimum: 1
          maximum: 100
          description: Number of results per page
          default: 50
      - in: query
        name: name
        schema:
          type: string
          maxLength: 250
          description: Filter monitors by name (case-insensitive substring match)
      - in: query
        name: metadata
        schema:
          description: 'Filter monitors by metadata key-value pairs (exact match, AND semantics). Use bracket notation: `metadata[key]=value`.'
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
        style: deepObject
        explode: true
        description: 'Filter monitors by metadata key-value pairs (exact match, AND semantics). Use bracket notation: `metadata[key]=value`.'
      responses:
        '200':
          description: A paginated list of monitors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSearchMonitorsResponse'
  /monitors/batch:
    post:
      operationId: batchMonitors
      summary: Batch Action on Monitors
      description: 'Perform a batch action on monitors matching the provided filters.


        Supported actions:

        - **delete**: Permanently remove matching monitors

        - **pause**: Pause matching monitors

        - **unpause**: Unpause matching monitors


        Use `dry_run: true` (the default) to preview which monitors would be affected before performing the action. Results are paginated via the `limit` parameter; loop until `has_more` is `false` to process all matching monitors.'
      tags:
      - Monitors
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchMonitorsRequest'
      responses:
        '200':
          description: Batch action result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchMonitorsResponse'
  /monitors/{id}:
    get:
      operationId: getMonitor
      summary: Get a Monitor
      description: Retrieves a single monitor by its ID.
      tags:
      - Monitors
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: The monitor ID
        required: true
        description: The monitor ID
      responses:
        '200':
          description: The monitor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMonitor'
    patch:
      operationId: updateMonitor
      summary: Update a Monitor
      description: Updates an existing monitor. All fields are optional. For `search`, you can send a partial object containing only the fields you want to change. Set `trigger` to `null` to remove the schedule.
      tags:
      - Monitors
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: The monitor ID
        required: true
        description: The monitor ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSearchMonitorParameters'
      responses:
        '200':
          description: The updated monitor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMonitor'
    delete:
      operationId: deleteMonitor
      summary: Delete a Monitor
      description: Deletes a monitor. This cannot be undone.
      tags:
      - Monitors
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: The monitor ID
        required: true
        description: The monitor ID
      responses:
        '200':
          description: The deleted monitor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMonitor'
  /monitors/{id}/trigger:
    post:
      operationId: triggerMonitor
      summary: Trigger a Monitor
      description: Triggers a run immediately, regardless of the schedule. Works for monitors with status `active` or `paused`.
      tags:
      - Monitors
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: The monitor ID
        required: true
        description: The monitor ID
      responses:
        '200':
          description: Whether the monitor was triggered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TriggerSearchMonitorResponse'
  /v0/monitors:
    servers:
    - url: https://api.exa.ai/websets
    post:
      description: 'Creates a new `Monitor` to continuously keep your Websets updated with fresh data.


        Monitors automatically run on your defined schedule to ensure your Websets stay current without manual intervention:


        - **Find new content**: Execute `search` operations to discover fresh items matching your criteria

        - **Update existing content**: Run `refresh` operations to update items contents and enrichments

        - **Automated scheduling**: Configure `cron` expressions and `timezone` for precise scheduling control'
      operationId: monitors-create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMonitorParameters'
      responses:
        '201':
          description: Monitor created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              example: req_N6SsgoiaOQOPqsYKKiw5
              required: true
      summary: Create a Monitor
      tags:
      - Monitors
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst monitor = await exa.websets.monitors.create({\n  websetId: \"webset_id\",\n  cadence: {\n    cron: \"0 9 * * 1\", // Every Monday at 9 AM\n    timezone: \"America/New_York\",\n  },\n  behavior: {\n    type: \"search\",\n    config: {\n      behavior: \"append\",\n      query: \"new companies to monitor\",\n      count: 10,\n    },\n  },\n});\n\nconsole.log(`Created monitor: ${monitor.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nmonitor = exa.websets.monitors.create(\n    params={\n        \"websetId\": \"webset_id\",\n        \"cadence\": {\n            \"cron\": \"0 9 * * 1\",  # Every Monday at 9 AM\n            \"timezone\": \"America/New_York\",\n        },\n        \"behavior\": {\n            \"type\": \"search\",\n            \"config\": {\n                \"behavior\": \"append\",\n                \"query\": \"new companies to monitor\",\n                \"count\": 10,\n            },\n        },\n    }\n)\n\nprint(f\"Created monitor: {monitor.id}\")"
    get:
      description: Lists all monitors for the Webset.
      operationId: monitors-list
      parameters:
      - name: cursor
        required: false
        in: query
        description: The cursor to paginate through the results
        schema:
          minLength: 1
          type: string
      - name: limit
        required: false
        in: query
        description: The number of results to return
        schema:
          minimum: 1
          maximum: 200
          default: 25
          type: number
      - name: websetId
        required: false
        in: query
        description: The id of the Webset to list monitors for
        schema:
          type: string
      responses:
        '200':
          description: List of monitors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMonitorsResponse'
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              example: req_N6SsgoiaOQOPqsYKKiw5
              required: true
      summary: List Monitors
      tags:
      - Monitors
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst monitors = await exa.websets.monitors.list({\n  webset_id: \"webset_id\",\n});\n\nconsole.log(`Found ${monitors.data.length} monitors`);\nmonitors.data.forEach((monitor) => {\n  console.log(`- ${monitor.id}: ${monitor.status}`);\n});"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nmonitors = exa.websets.monitors.list(webset_id=\"webset_id\")\n\nprint(f\"Found {len(monitors.data)} monitors\")\nfor monitor in monitors.data:\n    print(f\"- {monitor.id}: {monitor.status}\")"
  /v0/monitors/{id}:
    servers:
    - url: https://api.exa.ai/websets
    get:
      description: Gets a specific monitor.
      operationId: monitors-get
      parameters:
      - name: id
        required: true
        in: path
        description: The id of the Monitor
        schema:
          type: string
      responses:
        '200':
          description: Monitor details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              example: req_N6SsgoiaOQOPqsYKKiw5
              required: true
      summary: Get Monitor
      tags:
      - Monitors
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: '// npm install exa-js

          import Exa from "exa-js";

          const exa = new Exa("YOUR_EXA_API_KEY");


          const monitor = await exa.websets.monitors.get("monitor_id");


          console.log(`Monitor: ${monitor.id} - ${monitor.status}`);'
      - lang: python
        label: Python
        source: '# pip install exa-py

          from exa_py import Exa


          exa = Exa("YOUR_EXA_API_KEY")


          monitor = exa.websets.monitors.get("monitor_id")


          print(f"Monitor: {monitor.id} - {monitor.status}")'
    patch:
      description: Updates a monitor configuration.
      operationId: monitors-update
      parameters:
      - name: id
        required: true
        in: path
        description: The id of the Monitor
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMonitor'
      responses:
        '200':
          description: Monitor updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              example: req_N6SsgoiaOQOPqsYKKiw5
              required: true
      summary: Update Monitor
      tags:
      - Monitors
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst monitor = await exa.websets.monitors.update(\"monitor_id\", {\n  cadence: {\n    cron: \"0 14 * * *\", // Every day at 2 PM\n    timezone: \"America/New_York\",\n  },\n});\n\nconsole.log(`Updated monitor: ${monitor.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nmonitor = exa.websets.monitors.update(\n    \"monitor_id\",\n    params={\n        \"cadence\": {\n            \"cron\": \"0 14 * * *\",  # Every day at 2 PM\n            \"timezone\": \"America/New_York\",\n        }\n    },\n)\n\nprint(f\"Updated monitor: {monitor.id}\")"
    delete:
      description: Deletes a monitor.
      operationId: monitors-delete
      parameters:
      - name: id
        required: true
        in: path
        description: The id of the Monitor
        schema:
          type: string
      responses:
        '200':
          description: Monitor deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              example: req_N6SsgoiaOQOPqsYKKiw5
              required: true
      summary: Delete Monitor
      tags:
      - Monitors
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: '// npm install exa-js

          import Exa from "exa-js";

          const exa = new Exa("YOUR_EXA_API_KEY");


          await exa.websets.monitors.delete("monitor_id");


          console.log("Monitor deleted successfully");'
      - lang: python
        label: Python
        source: '# pip install exa-py

          from exa_py import Exa


          exa = Exa("YOUR_EXA_API_KEY")


          exa.websets.monitors.delete("monitor_id")


          print("Monitor deleted successfully")'
components:
  schemas:
    MonitorRun:
      type:
      - object
      properties:
        id:
          type:
          - string
          description: The unique identifier for the Monitor Run
        object:
          type:
          - string
          enum:
          - monitor_run
          description: The type of object
        status:
          type:
          - string
          enum:
          - created
          - running
          - completed
          - canceled
          - failed
          description: The status of the Monitor Run
        monitorId:
          type:
          - string
          description: The monitor that the run is associated with
        type:
          type:
          - string
          enum:
          - search
          - refresh
          description: The type of the Monitor Run
        completedAt:
          type: string
          format: date-time
          description: When the run completed
          nullable: true
        failedAt:
          type: string
          format: date-time
          description: When the run failed
          nullable: true
        failedReason:
          type: string
          description: The reason the run failed
          nullable: true
        canceledAt:
          type: string
          format: date-time
          description: When the run was canceled
          nullable: true
        createdAt:
          type:
          - string
          format: date-time
          description: When the run was created
        updatedAt:
          type:
          - string
          format: date-time
          description: When the run was last updated
      required:
      - id
      - object
      - monitorId
      - status
      - type
      - completedAt
      - failedAt
      - failedReason
      - canceledAt
      - createdAt
      - updatedAt
    SearchMonitorWebhookOutput:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: The HTTPS URL to receive webhook events. Must not point to localhost or private IP ranges.
        events:
          type: array
          items:
            type: string
            enum:
            - monitor.created
            - monitor.updated
            - monitor.deleted
            - monitor.run.created
            - monitor.run.completed
          description: Which events to subscribe to. Defaults to all events if not specified.
      required:
      - url
      additionalProperties: false
    JsonValue:
      description: Any JSON value.
      oneOf:
      - type: 'null'
      - type: boolean
      - type: number
      - type: string
      - type: array
        items:
          $ref: '#/components/schemas/JsonValue'
      - type: object
        propertyNames:
          type: string
        additionalProperties:
          $ref: '#/components/schemas/JsonValue'
    ListSearchMonitorsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SearchMonitor'
          description: The list of monitors
        hasMore:
          type: boolean
          description: Whether there are more results
        nextCursor:
          anyOf:
          - type: string
          - type: 'null'
          description: Cursor for the next page
      required:
      - data
      - hasMore
      additionalProperties: false
    TriggerSearchMonitorResponse:
      type: object
      properties:
        triggered:
          type: boolean
          description: Whether the monitor was successfully triggered
      required:
      - triggered
      additionalProperties: false
    CreateSearchMonitorResponse:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the monitor
        name:
          anyOf:
          - type: string
          - type: 'null'
          description: An optional display name
        status:
          type: string
          enum:
          - active
          - paused
          - disabled
          description: The status of the monitor. `active` monitors run on schedule and can be triggered manually. `paused` monitors can only be triggered manually. `disabled` monitors are auto-disabled after 10 consecutive authentication failures.
        search:
          $ref: '#/components/schemas/SearchMonitorSearchOutput'
        trigger:
          anyOf:
          - $ref: '#/components/schemas/SearchMonitorTriggerOutput'
          - type: 'null'
          description: The interval-based schedule for automatic runs. Null if no schedule is set.
        outputSchema:
          $ref: '#/components/schemas/SearchMonitorOutputSchemaOutput'
        metadata:
          anyOf:
          - type: object
            propertyNames:
              type: string
            additionalProperties:
              type: string
            description: Caller-provided key-value metadata for your own tracking.
            example:
              slack_channel_id: C123ABC
              slack_thread_id: '1745444400.123456'
              user_id: U123ABC
          - type: 'null'
          description: Optional key-value metadata for your own tracking. Echoed back in webhook deliveries so you can route updates to systems like Slack.
          example:
            slack_channel_id: C123ABC
            slack_thread_id: '1745444400.123456'
            user_id: U123ABC
        webhook:
          $ref: '#/components/schemas/SearchMonitorWebhookOutput'
        nextRunAt:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          description: When the next scheduled run will occur. Null if no trigger is set.
          format: date-time
        createdAt:
          type: string
          format: date-time
          description: When the monitor was created
        updatedAt:
          type: string
          format: date-time
          description: When the monitor was last updated
        webhookSecret:
          type: string
          description: The secret used to verify webhook signatures. This is only returned once at creation time. Store it securely.
      required:
      - id
      - name
      - status
      - search
      - trigger
      - outputSchema
      - metadata
      - webhook
      - nextRunAt
      - createdAt
      - updatedAt
      - webhookSecret
      additionalProperties: false
    UpdateMonitor:
      type:
      - object
      properties:
        status:
          type:
          - string
          enum:
          - enabled
          - disabled
          description: The status of the monitor.
        metadata:
          type:
          - object
          additionalProperties:
            type:
            - string
        cadence:
          type:
          - object
          $ref: '#/components/schemas/MonitorCadence'
        behavior:
          type:
          - object
          $ref: '#/components/schemas/MonitorBehavior'
    SearchMonitorTrigger:
      type: object
      properties:
        type:
          type: string
          const: interval
          description: The type of trigger. Currently only `interval` is supported.
          default: interval
        period:
          type: string
          description: A duration string specifying how often the monitor runs (e.g., "1h", "6h", "1d", "7d"). Single-unit only. Minimum interval is 1 hour. The schedule is anchored to the monitor's creation time (e.g., a daily monitor created at 2:30 PM runs daily around 2:30 PM).
          example: 6h
      required:
      - type
      - period
    CustomEntity:
      type:
      - object
      properties:
        type:
          type: string
          const: custom
          default: custom
        description:
          type:
          - string
          minLength: 2
          maxLength: 200
      required:
      - type
      - description
      title: Custom
    UpdateSearchMonitorParameters:
      type: object
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          description: Update the monitor name
        status:
          type: string
          enum:
          - active
          - paused
          description: Update the monitor status (can only set to `active` or `paused`)
        search:
          type: object
          properties:
            query:
              type: string
              minLength: 1
              description: The query string for the search.
              example: Latest developments in LLM capabilities
            numResults:
              type: integer
              minimum: 1
              maximum: 100
              description: Number of results to return. Limits vary by search type. The maximum public limit is 100 results. Contact sales (hello@exa.ai) to discuss higher limits.
              example: 10
              default: 10
            contents:
              $ref: '#/components/schemas/SearchMonitorContents'
          description: Partial search params to merge. All fields are optional for updates.
        trigger:
          anyOf:
          - type: object
            properties:
              type:
                type: string
                const: interval
                description: The type of trigger. Currently only `interval` is supported.
                default: interval
              period:
                type: string
                description: A duration string specifying how often the monitor runs (e.g., "1h", "6h", "1d", "7d"). Single-unit only. Minimum interval is 1 hour.
          - type: 'null'
          description: Update the schedule. Set to null to remove the schedule.
        outputSchema:
          $ref: '#/components/schemas/SearchMonitorOutputSchema'
        metadata:
          anyOf:
          - type: object
            propertyNames:
              type: string
            additionalProperties:
              type: string
            description: Caller-provided key-value metadata for your own tracking.
            example:
              slack_channel_id: C123ABC
              slack_thread_id: '1745444400.123456'
              user_id: U123ABC
          - type: 'null'
          description: Update metadata. Set to null to remove. Echoed back in webhook deliveries so you can route updates to systems like Slack.
          example:
            slack_channel_id: C123ABC
            slack_thread_id: '1745444400.123456'
            user_id: U123ABC
        webhook:
          type: object
          properties:
            url:
              type: string
              format: uri
              description: The HTTPS URL to receive webhook events. Must not point to localhost or private IP ranges.
            events:
              type: array
              items:
                type: string
                enum:
                - monitor.created
                - monitor.updated
                - monitor.deleted
                - monitor.run.created
                - monitor.run.completed
              description: Which events to subscribe to. Defaults to all events if not specified.
          description: Partial webhook params to merge. All fields are optional for updates.
    CreateMonitorParameters:
      type:
      - object
      properties:
        websetId:
          type:
          - string
          description: The id of the Webset
        cadence:
          type:
          - object
          properties:
            cron:
              description: Cron expression for monitor cadence (must be a valid Unix cron with 5 fields). The schedule must trigger at most once per day.
              type:
              - string
            timezone:
              description: IANA timezone (e.g., "America/New_York")
              default: Etc/UTC
              type:
              - string
          required:
          - cron
          description: How often the monitor will run
        behavior:
          type:
          - object
          properties:
            type:
              type: string
              const: search
              default: search
            config:
              type:
              - object
              properties:
                query:
                  type:
                  - string
                  minLength: 2
                  maxLength: 10000
                  description: The query to search for. By default, the query from the last search is used.
                criteria:
                  type:
                  - array
                  items:
                    type:
                    - object
                    properties:
                      description:
                        type:
                        - string
                        minLength: 2
                        maxLength: 1000
                    required:
                    - description
                  maxItems: 5
                  description: The criteria to search for. By default, the criteria from the last search is used.
                entity:
                  $ref: '#/components/schemas/Entity'
                  title: Entity
                  description: The entity to search for. By default, the entity from the last search/import is used.
                count:
                  type:
                  - number
                  exclusiveMinimum: 0
                  description: The maximum number of results to find
                behavior:
                  default: append
                  type:
                  - string
                  enum:
                  - override
                  - append
                  description: The behaviour of the Search when it is added to a Webset.
              required:
              - count
              description: 'Specify the search parameters for the Monitor.


                By default, the search parameters (query, entity and criteria) from the last search are used when no parameters are provided.'
          required:
          - type
          - config
          description: Behavior to perform when monitor runs
        metadata:
          type:
          - object
          additionalProperties:
            type:
            - string
      required:
      - websetId
      - cadence
      - behavior
    Monitor:
      type:
      - object
      properties:
        id:
          type:
          - string
          description: The unique identifier for the Monitor
        object:
          type:
          - string
          enum:
          - monitor
          description: The type of object
        status:
          type:
          - string
          enum:
          - enabled
          - disabled
          description: The status of the Monitor
        websetId:
          type:
          - string
          description: The id of the Webset the Monitor belongs to
        cadence:
          type:
          - object
          properties:
            cron:
              description: Cron expression for monitor cadence (must be a valid Unix cron with 5 fields). The schedule must trigger at most once per day.
              type:
              - string
            timezone:
              description: IANA timezone (e.g., "America/New_York")
              default: Etc/UTC
              type:
              - string
          required:
          - cron
          description: How often the monitor will run
        behavior:
          type:
          - object
          properties:
            type:
              type: string
              const: search
              default: search
            config:
              type:
              - object
              properties:
                query:
                  type:
                  - string
                  minLength: 2
                  maxLength: 10000
                  description: The query to search for. By default, the query from the last search is used.
                criteria:
                  type:
                  - array
                  items:
                    type:
                    - object
                    properties:
                      description:
                        type:
                        - string
                        minLength: 2
                        maxLength: 1000
                    required:
                    - description
                  maxItems: 5
                  description: The criteria to search for. By default, the criteria from the last search is used.
                entity:
                  $ref: '#/components/schemas/Entity'
                  title: Entity
                  description: The ent

# --- truncated at 32 KB (70 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/exa-ai/refs/heads/main/openapi/exa-ai-monitors-api-openapi.yml