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

# Create a Monitor

> Create a Page (fetch) or Topic (search) Monitor and capture its baseline run.



## OpenAPI

````yaml https://agent.tinyfish.ai/v1/openapi/monitor post /v1/monitors
openapi: 3.0.0
info:
  title: TinyFish Monitor API
  version: 1.0.0
  description: Track a webpage or topic on a schedule and get its changes.
  contact:
    name: TinyFish Support
    email: support@tinyfish.ai
servers:
  - url: https://agent.tinyfish.ai
security: []
paths:
  /v1/monitors:
    post:
      summary: Create a Monitor
      description: >-
        Create a Page (fetch) or Topic (search) Monitor and capture its baseline
        run.
      operationId: createMonitor
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    name:
                      type: string
                      nullable: true
                      minLength: 1
                      maxLength: 100
                      description: Optional name for this Monitor.
                    schedule_cron:
                      type: string
                      maxLength: 100
                    webhook_url:
                      type: string
                      nullable: true
                      format: uri
                      description: Optional URL that receives each scheduled run's results.
                    purpose:
                      type: string
                      nullable: true
                      minLength: 1
                      maxLength: 2000
                      description: >-
                        Optional plain-language description of the change that
                        matters, e.g. "the price drops".
                    type:
                      type: string
                      enum:
                        - search
                    config:
                      type: object
                      properties:
                        query:
                          type: string
                          minLength: 1
                          maxLength: 2000
                          description: Topic to monitor
                        recency_minutes:
                          type: integer
                          minimum: 1
                          maximum: 5256000
                          description: Optional Search freshness window in minutes.
                        result_limit:
                          type: integer
                          minimum: 1
                          maximum: 10
                          default: 10
                          description: Results per run (1-10). Defaults to 10.
                      required:
                        - query
                      additionalProperties: false
                  required:
                    - schedule_cron
                    - type
                    - config
                  additionalProperties: false
                - type: object
                  properties:
                    name:
                      type: string
                      nullable: true
                      minLength: 1
                      maxLength: 100
                      description: Optional name for this Monitor.
                    schedule_cron:
                      type: string
                      maxLength: 100
                      description: >-
                        Five-field cron expression, evaluated in UTC by default.
                        Prefix with `CRON_TZ=<IANA zone>` (e.g.
                        `CRON_TZ=America/New_York 0 9 * * 1-5`) to run in a
                        timezone.
                    webhook_url:
                      type: string
                      nullable: true
                      format: uri
                      description: Optional URL that receives each scheduled run's results.
                    purpose:
                      type: string
                      nullable: true
                      minLength: 1
                      maxLength: 2000
                      description: >-
                        Optional plain-language description of the change that
                        matters, e.g. "the price drops".
                    type:
                      type: string
                      enum:
                        - fetch
                    config:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          description: Public webpage URL to monitor
                        format:
                          type: string
                          enum:
                            - markdown
                            - html
                            - json
                          default: json
                          description: Fetch output format
                        links:
                          type: boolean
                          default: false
                          description: Include links from the webpage
                        image_links:
                          type: boolean
                          default: false
                          description: Include image links from the webpage
                        ttl:
                          type: integer
                          minimum: 0
                          default: 0
                          description: Deprecated. Fetch Monitors always bypass the cache.
                      required:
                        - url
                      additionalProperties: false
                  required:
                    - schedule_cron
                    - type
                    - config
                  additionalProperties: false
      responses:
        '201':
          description: Monitor created with its baseline run
          content:
            application/json:
              schema:
                type: object
                properties:
                  monitor:
                    $ref: '#/components/schemas/Monitor'
                  run:
                    anyOf:
                      - type: object
                        properties:
                          results:
                            type: array
                            items:
                              type: object
                              properties:
                                url:
                                  type: string
                                  description: Original requested URL
                                  example: https://example.com
                                final_url:
                                  type: string
                                  nullable: true
                                  description: Final URL after redirects
                                  example: https://www.example.com
                                title:
                                  type: string
                                  nullable: true
                                  description: Page title
                                  example: Example Domain
                                description:
                                  type: string
                                  nullable: true
                                  description: Page meta description
                                  example: >-
                                    This domain is for use in illustrative
                                    examples.
                                language:
                                  type: string
                                  nullable: true
                                  description: Detected language code
                                  example: en
                                format:
                                  type: string
                                  enum:
                                    - markdown
                                    - html
                                    - json
                                  description: Format of the extracted text
                                  example: markdown
                                text:
                                  anyOf:
                                    - type: string
                                    - {}
                                    - nullable: true
                                  description: >-
                                    Extracted content (string for markdown/html,
                                    object for json). Null if extraction failed.
                                author:
                                  type: string
                                  nullable: true
                                  description: Page author if available
                                  example: John Doe
                                published_date:
                                  type: string
                                  nullable: true
                                  description: Published date if available
                                  example: '2024-01-15'
                                links:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Extracted links (only if links=true in
                                    request)
                                image_links:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Extracted image links (only if
                                    image_links=true in request)
                                iframe_links:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Extracted <iframe src> URLs, absolute and
                                    deduplicated (only if iframe_links=true in
                                    request)
                                page_metadata:
                                  type: object
                                  additionalProperties:
                                    nullable: true
                                  description: >-
                                    Page-head metadata (only if
                                    page_metadata=true in request): canonical,
                                    favicon, robots, generator, viewport,
                                    keywords, plus nested og/twitter/article
                                    objects keyed by tag suffix and remaining
                                    named meta tags under `other`. Tags that
                                    legitimately repeat (og:image,
                                    og:locale:alternate, article:tag,
                                    article:author) collect into arrays. Keys
                                    are omitted when the page does not declare
                                    them; the whole field is omitted when the
                                    page exposes none.
                                  example:
                                    canonical: https://example.com
                                    robots: max-image-preview:large
                                    og:
                                      title: Example Domain
                                      image:
                                        - https://example.com/og.png
                                    twitter:
                                      card: summary_large_image
                                latency_ms:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Fetch latency for this URL in milliseconds
                                    if available from tf-fetch
                                  example: 1183.4
                                not_modified:
                                  type: boolean
                                  description: >-
                                    Present and `true` only when the origin
                                    returned 304 Not Modified for your
                                    `if_none_match`/`if_modified_since`; omitted
                                    otherwise.
                                  example: true
                                etag:
                                  type: string
                                  description: >-
                                    The origin's current ETag validator, present
                                    only when the origin sent one and you set
                                    `include_etag_and_last_modified: true`;
                                    omitted otherwise. Store it and replay it as
                                    `if_none_match`.
                                  example: W/"abc123"
                                last_modified:
                                  type: string
                                  description: >-
                                    The origin's current Last-Modified
                                    validator, present only when the origin sent
                                    one and you set
                                    `include_etag_and_last_modified: true`;
                                    omitted otherwise. Store it and replay it as
                                    `if_modified_since`.
                                  example: Wed, 21 Oct 2015 07:28:00 GMT
                                unmatched_selectors:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Partial-miss report for `include_selectors`:
                                    the entries that matched no elements on this
                                    page, present only when some (but not all)
                                    entries matched — the result still carries
                                    the matched content. Omitted when every
                                    entry matched. A total miss is not a result
                                    at all: it is reported as a
                                    `selector_not_matched` entry in `errors[]`.
                                  example:
                                    - aside.related
                              required:
                                - url
                                - final_url
                                - title
                                - description
                                - language
                                - format
                                - text
                                - author
                                - published_date
                            description: Successfully fetched URLs
                          errors:
                            type: array
                            items:
                              type: object
                              properties:
                                url:
                                  type: string
                                  description: URL that failed to fetch
                                  example: https://invalid.example.com
                                error:
                                  type: string
                                  description: >-
                                    Error code describing the failure. Possible
                                    values: `target_http_error` (target server
                                    returned a non-2xx HTTP status other than
                                    404/410 — see `status` field),
                                    `page_not_found` (target returned HTTP 404
                                    or 410), `target_unreachable` (connection
                                    refused, TLS failure, or network error),
                                    `timeout` (request timed out), `proxy_error`
                                    (proxy tunnel failure), `bot_blocked`
                                    (bot-challenge page detected),
                                    `empty_content` (page loaded but no
                                    extractable text), `login_required` (target
                                    redirected to a login or account wall; the
                                    page is not served to anonymous sessions, so
                                    retrying without credentials will not help),
                                    `content_too_large` (document exceeds the
                                    20MB size limit for generic documents — not
                                    retried in the browser; PDF and CSV have
                                    their own 50MB budgets), `invalid_url`
                                    (malformed URL or SSRF-blocked address),
                                    `invalid_redirect_url` (redirect target
                                    rejected before fetch),
                                    `conditional_unsupported` (conditional
                                    requests are supported on the fast path
                                    only; this URL requires browser rendering),
                                    `selector_not_matched` (no elements matching
                                    any `include_selectors` entry remained after
                                    `exclude_selectors` was applied — a total
                                    miss; carries `unmatched_selectors` and
                                    `candidate_selectors` retry hints. A partial
                                    miss is NOT an error: it is reported via the
                                    result's `unmatched_selectors`),
                                    `selector_unsupported`
                                    (`include_selectors`/`exclude_selectors`
                                    sent for a URL that resolves to a direct
                                    PDF/CSV download — no HTML to scope).
                                  example: target_http_error
                                status:
                                  type: integer
                                  description: >-
                                    Upstream HTTP status code. Only present when
                                    `error` is `target_http_error` or
                                    `page_not_found`.
                                  example: 404
                                unmatched_selectors:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    The `include_selectors` entries that matched
                                    no elements on the fetched page. Only
                                    present when `error` is
                                    `selector_not_matched`.
                                  example:
                                    - article
                                    - '#content'
                                candidate_selectors:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Cheap retry hints (max 10), only present
                                    when `error` is `selector_not_matched`:
                                    landmark tags present on the page (e.g.
                                    `main`, `article`, `nav`) plus `#id`
                                    selectors of content-heavy elements. Retry
                                    the fetch with `include_selectors` drawn
                                    from this list.
                                  example:
                                    - main
                                    - nav
                                    - '#content'
                              required:
                                - url
                                - error
                              description: A URL that failed to fetch
                            description: URLs that failed to fetch
                          request_id:
                            type: string
                            description: >-
                              Request correlation ID, also returned as the
                              X-Request-ID response header. Present only when
                              errors is non-empty; include it when reporting
                              failed URLs.
                            example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                          id:
                            type: string
                          is_baseline:
                            type: boolean
                            description: True for the first run; nothing to compare.
                        required:
                          - results
                          - errors
                          - id
                          - is_baseline
                      - type: object
                        properties:
                          id:
                            type: string
                          request_id:
                            type: string
                          query:
                            type: string
                          status_code:
                            type: integer
                          result_count:
                            type: integer
                          results:
                            type: array
                            items:
                              type: object
                              properties:
                                position:
                                  type: integer
                                  description: Position in search results
                                  example: 1
                                site_name:
                                  type: string
                                  description: Site name
                                  example: example.com
                                snippet:
                                  type: string
                                  description: Text snippet from the result
                                  example: This is an example snippet...
                                title:
                                  type: string
                                  description: Page title
                                  example: Example Page
                                url:
                                  type: string
                                  format: uri
                                  description: Result URL
                                  example: https://example.com/page
                                thumbnail_url:
                                  type: string
                                  format: uri
                                  description: >-
                                    Thumbnail image URL, present only when
                                    include_thumbnail=true and a thumbnail is
                                    available
                                  example: https://example.com/thumb.jpg
                                fetch:
                                  nullable: true
                                  description: >-
                                    Fetched page content, present only when
                                    fetch param is supplied
                                fetch_error:
                                  nullable: true
                                  description: >-
                                    Fetch error details when fetch was
                                    requested. Contains details on failure; may
                                    be null when fetching succeeds.
                                date:
                                  type: string
                                  description: >-
                                    Publication date, present for news and some
                                    web results
                                publisher:
                                  type: string
                                  description: >-
                                    Publisher name, present for news results
                                    when domain_type=news
                                authors:
                                  type: array
                                  items:
                                    type: string
                                  description: >-
                                    Author list, present for academic results
                                    when domain_type=research_paper
                                venue:
                                  type: string
                                  description: >-
                                    Journal or conference name, present when
                                    domain_type=research_paper
                                year:
                                  type: integer
                                  description: >-
                                    Publication year, present when
                                    domain_type=research_paper
                                cited_by_count:
                                  type: integer
                                  description: >-
                                    Citation count, present when
                                    domain_type=research_paper
                                pdf_url:
                                  type: string
                                  description: >-
                                    PDF URL, present when
                                    domain_type=research_paper and a PDF is
                                    available
                              required:
                                - position
                                - site_name
                                - snippet
                                - title
                                - url
                              description: A single search result
                          new_result_positions:
                            type: array
                            items:
                              type: integer
                            description: Positions of results not seen in earlier runs
                          created_at:
                            type: string
                            format: date-time
                        required:
                          - id
                          - request_id
                          - query
                          - status_code
                          - result_count
                          - results
                          - new_result_positions
                          - created_at
                    description: Baseline run captured at creation
                required:
                  - monitor
                  - run
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '401':
          description: Unauthorized - missing or invalid API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '402':
          description: Payment required - wallet balance too low to run
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '403':
          description: Forbidden - team API keys cannot manage Monitors
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '502':
          description: Upstream scheduler or run service failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
        '503':
          description: Monitor storage unavailable; retry
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - MISSING_API_KEY
                          - INVALID_API_KEY
                          - INVALID_INPUT
                          - RATE_LIMIT_EXCEEDED
                          - DAILY_LIMIT_EXCEEDED
                          - INTERNAL_ERROR
                          - RETRY_REQUIRED
                          - UNAUTHORIZED
                          - VAULT_RECONNECT_REQUIRED
                          - FORBIDDEN
                          - NOT_FOUND
                          - FEATURE_NOT_AVAILABLE
                          - SERVICE_BUSY
                          - TIMEOUT
                          - INSUFFICIENT_CREDITS
                          - FREE_ALLOWANCE_EXHAUSTED
                          - CONTENT_POLICY_VIOLATION
                          - MAX_STEPS_EXCEEDED
                          - SITE_BLOCKED
                          - TASK_FAILED
                          - CANCELLED
                        description: Machine-readable error code
                        example: INVALID_INPUT
                      message:
                        type: string
                        description: Human-readable error message
                        example: Field "url" is required and must be a string
                      details:
                        nullable: true
                        description: Additional error details (validation errors, etc.)
                    required:
                      - code
                      - message
                  request_id:
                    type: string
                    description: >-
                      Request correlation ID, also returned as the X-Request-ID
                      response header. Include it when reporting issues.
                    example: 8f9dba20-e37b-4749-a919-2269e28b4a2c
                required:
                  - error
                description: Standard error response format
      security:
        - ApiKeyAuth: []
components:
  schemas:
    Monitor:
      oneOf:
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
              nullable: true
            schedule_cron:
              type: string
              example: 0 9 * * *
            status:
              type: string
              enum:
                - creating
                - active
                - paused
                - failed
                - cancelled
            last_error:
              type: string
              nullable: true
            webhook_url:
              type: string
              nullable: true
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            type:
              type: string
              enum:
                - fetch
            config:
              type: object
              properties:
                url:
                  type: string
                format:
                  type: string
                  enum:
                    - markdown
                    - html
                    - json
                links:
                  type: boolean
                image_links:
                  type: boolean
                ttl:
                  type: integer
              required:
                - url
                - format
                - links
                - image_links
                - ttl
          required:
            - id
            - name
            - schedule_cron
            - status
            - last_error
            - webhook_url
            - created_at
            - updated_at
            - type
            - config
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
              nullable: true
            schedule_cron:
              type: string
              example: 0 9 * * *
            status:
              type: string
              enum:
                - creating
                - active
                - paused
                - failed
                - cancelled
            last_error:
              type: string
              nullable: true
            webhook_url:
              type: string
              nullable: true
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            type:
              type: string
              enum:
                - search
            config:
              type: object
              properties:
                query:
                  type: string
                recency_minutes:
                  type: integer
                  nullable: true
                result_limit:
                  type: integer
              required:
                - query
                - recency_minutes
                - result_limit
          required:
            - id
            - name
            - schedule_cron
            - status
            - last_error
            - webhook_url
            - created_at
            - updated_at
            - type
            - config
      description: A Page (fetch) or Topic (search) Monitor
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key for authentication. Get your key from the API Keys page.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.