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

> ## Agent Instructions
> The Exa API is served at https://api.exa.ai. Authenticate with `Authorization: Bearer $EXA_API_KEY` (or `x-api-key: $EXA_API_KEY`); create keys at https://dashboard.exa.ai/api-keys.
> Prefer the official SDKs, `exa-py` (`pip install exa-py`) and `exa-js` (`npm install exa-js`); both read `EXA_API_KEY` from the environment.
> Tool-using agents can call Exa without writing code through the hosted MCP server at https://mcp.exa.ai/mcp, or install the Exa agent skill with `npx skills add exa-labs/agent-skills` (skill file: https://exa.ai/docs/skill.md).
> The OpenAPI specs at https://exa.ai/docs/exa-spec.yaml and https://exa.ai/docs/team-management-spec.yaml are the source of truth for request and response schemas.

# Create a Websets monitor

> 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



## OpenAPI

````yaml exa-spec.yaml POST /v0/monitors
openapi: 3.1.0
info:
  title: Exa Public API
  version: 2.0.0
servers:
  - url: https://api.exa.ai
security:
  - apiKey: []
  - bearer: []
paths:
  /v0/monitors:
    servers:
      - url: https://api.exa.ai/websets
    post:
      tags:
        - Monitors
      summary: Create a Monitor
      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
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMonitorParameters'
      responses:
        '201':
          description: Monitor created successfully
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Unique identifier for the request.
              required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
      security:
        - apiKey: []
        - bearer: []
components:
  schemas:
    CreateMonitorParameters:
      properties:
        websetId:
          description: The id of the Webset
          type: string
        cadence:
          $ref: '#/components/schemas/MonitorCadence'
          description: How often the monitor will run
        behavior:
          $ref: '#/components/schemas/MonitorBehavior'
          description: Behavior to perform when monitor runs
        metadata:
          propertyNames:
            type: string
          additionalProperties:
            type: string
          type: object
      required:
        - websetId
        - cadence
        - behavior
      type: object
    Monitor:
      properties:
        id:
          description: The unique identifier for the Monitor
          type: string
        object:
          enum:
            - monitor
          description: The type of object
          type: string
        status:
          enum:
            - enabled
            - disabled
          description: The status of the Monitor
          type: string
        websetId:
          description: The id of the Webset the Monitor belongs to
          type: string
        cadence:
          $ref: '#/components/schemas/MonitorCadence'
          description: How often the monitor will run
        behavior:
          $ref: '#/components/schemas/MonitorBehavior'
          description: Behavior to perform when monitor runs
        lastRun:
          $ref: '#/components/schemas/MonitorRun'
          title: MonitorRun
          description: The last run of the monitor
          nullable: true
        nextRunAt:
          format: date-time
          type: string
          description: Date and time when the next run will occur in
          nullable: true
        metadata:
          description: Set of key-value pairs you want to associate with this object.
          propertyNames:
            maxLength: 250
            type: string
          additionalProperties:
            type: string
            maxLength: 1000
          type: object
        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
      required:
        - id
        - object
        - status
        - websetId
        - cadence
        - behavior
        - lastRun
        - nextRunAt
        - metadata
        - createdAt
        - updatedAt
      type: object
    MonitorCadence:
      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:
          default: Etc/UTC
          description: IANA timezone (e.g., "America/New_York")
          type: string
      required:
        - cron
      type: object
    MonitorBehavior:
      properties:
        config:
          properties:
            query:
              description: >-
                The query to search for. By default, the query from the last
                search is used.
              minLength: 2
              maxLength: 10000
              type: string
            criteria:
              description: >-
                The criteria to search for. By default, the criteria from the
                last search is used.
              maxItems: 5
              items:
                properties:
                  description:
                    minLength: 2
                    maxLength: 1000
                    type: string
                required:
                  - description
                type: object
              type: array
            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:
              exclusiveMinimum: 0
              description: The maximum number of results to find
              type: number
            behavior:
              $ref: '#/components/schemas/WebsetSearchBehavior'
              default: 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.
          type: object
        type:
          type: string
          const: search
          default: search
          description: >-
            Configure the Monitor to find new Items matching your search
            criteria
      required:
        - type
        - config
      type: object
    MonitorRun:
      properties:
        id:
          description: The unique identifier for the Monitor Run
          type: string
        object:
          enum:
            - monitor_run
          description: The type of object
          type: string
        monitorId:
          description: The monitor that the run is associated with
          type: string
        status:
          enum:
            - created
            - running
            - completed
            - canceled
            - failed
          description: The status of the Monitor Run
          type: string
        completedAt:
          format: date-time
          type: string
          description: When the run completed
          nullable: true
        failedAt:
          format: date-time
          type: string
          description: When the run failed
          nullable: true
        failedReason:
          type: string
          description: The reason the run failed
          nullable: true
        canceledAt:
          format: date-time
          type: string
          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
        type:
          type: string
          enum:
            - search
            - refresh
          description: The type of the Monitor Run
      required:
        - id
        - object
        - monitorId
        - status
        - type
        - completedAt
        - failedAt
        - failedReason
        - canceledAt
        - createdAt
        - updatedAt
      type: object
    Entity:
      oneOf:
        - $ref: '#/components/schemas/CompanyEntity'
        - $ref: '#/components/schemas/PersonEntity'
        - $ref: '#/components/schemas/ArticleEntity'
        - $ref: '#/components/schemas/ResearchPaperEntity'
        - $ref: '#/components/schemas/CustomEntity'
    WebsetSearchBehavior:
      enum:
        - override
        - append
      type: string
    CompanyEntity:
      properties:
        type:
          type: string
          const: company
          default: company
      required:
        - type
      title: Company
      type: object
    PersonEntity:
      properties:
        type:
          type: string
          const: person
          default: person
      required:
        - type
      title: Person
      type: object
    ArticleEntity:
      properties:
        type:
          type: string
          const: article
          default: article
      required:
        - type
      title: Article
      type: object
    ResearchPaperEntity:
      properties:
        type:
          type: string
          const: research_paper
          default: research_paper
      required:
        - type
      title: Research Paper
      type: object
    CustomEntity:
      properties:
        description:
          minLength: 2
          maxLength: 200
          type: string
        type:
          type: string
          const: custom
          default: custom
      required:
        - type
        - description
      title: Custom
      type: object
  securitySchemes:
    apiKey:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        Pass your Exa API key in the x-api-key header. You can also authenticate
        with Authorization: Bearer <key>.
    bearer:
      type: http
      scheme: bearer
      description: >-
        Pass your Exa API key in the x-api-key header. You can also authenticate
        with Authorization: Bearer <key>.

````