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

# 列出监测器

> 列出该密钥拥有的所有监测器，按时间倒序。



## OpenAPI

````yaml GET /v1/monitors
openapi: 3.1.0
info:
  title: querying.ai
  description: >-
    One API for every AI answer engine. Every task is asynchronous: submit, then
    collect the result via webhook or polling.
  version: 1.0.0
servers:
  - url: https://api.querying.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/monitors:
    get:
      tags:
        - Monitors
      summary: List monitors
      description: >-
        Every monitor this key owns, newest first. Each carries its 30-day
        mention and citation rollup in stats, the rollup window (windowDays) and
        the schedule state (enabled, nextRunAt, lastRunAt). A monitor with no
        scored answers yet is listed with an all-zero stats rather than hidden.
        A category monitor (mode CATEGORY) also carries leader: the brand its
        answers named most in the window, or null when none was named yet. Its
        stats.mentioned and stats.cited are always 0.
      operationId: listMonitors
      responses:
        '200':
          description: The monitors and their 30-day rollup.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    MonitorListResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          required:
            - monitors
            - windowDays
          properties:
            monitors:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/Monitor'
                  - type: object
                    required:
                      - stats
                    properties:
                      stats:
                        $ref: '#/components/schemas/MonitorStats'
                      leader:
                        oneOf:
                          - $ref: '#/components/schemas/MonitorLeader'
                          - type: 'null'
                        description: >-
                          CATEGORY monitors only: the brand the answers named
                          most in the 30-day window, or null when none was named
                          yet.
            windowDays:
              type: integer
              const: 30
              description: >-
                Every rollup in this response covers the last 30 days,
                independently of any window you pass elsewhere.
    Monitor:
      type: object
      description: One named prompt set in one market, and the schedule that repeats it.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          maxLength: 80
        mode:
          type: string
          enum:
            - BRAND
            - CATEGORY
          default: BRAND
          description: >-
            What the monitor measures, fixed at creation. BRAND follows one
            brand and its competitors. CATEGORY follows a market with no brand
            of its own and ranks every brand the answers name.
        category:
          type:
            - string
            - 'null'
          maxLength: 80
          description: >-
            CATEGORY only: the market the monitor follows. null on a BRAND
            monitor.
        promptTopics:
          type: object
          additionalProperties:
            type: string
            maxLength: 60
          description: >-
            CATEGORY only: each prompt's sub-field, keyed by the prompt's exact
            text. A prompt without an entry covers the whole category. Empty on
            a BRAND monitor.
        engines:
          type: array
          items:
            $ref: '#/components/schemas/MonitorEngine'
          description: >-
            Each engine that joins a run submits one task per prompt, per point
            and per sample.
        prompts:
          type: array
          items:
            type: string
            maxLength: 2000
          description: >-
            The exact question texts the monitor asks, stored verbatim. Scored
            rows are keyed by this text, so editing the list does not rewrite
            history.
        aliases:
          type: array
          maxItems: 20
          items:
            type: string
          description: >-
            Spellings of your brand matched against the answer text. Matching
            ignores case and character width: Latin-script names match whole
            words, and Korean, Japanese, Chinese and Thai names match anywhere
            in the text. Empty on a CATEGORY monitor.
        domains:
          type: array
          maxItems: 20
          items:
            type: string
          description: >-
            Hosts matched against the answer citations; a registered domain also
            matches its subdomains. Empty means citations are not tracked and
            cited is always false. Always empty on a CATEGORY monitor.
        country:
          type: string
          description: >-
            Two-letter country code passed to every task. It selects the market
            the engines answer for; it does not translate the prompts.
        intervalHours:
          type: integer
          minimum: 1
          maximum: 168
          description: Hours between scheduled runs.
        enabled:
          type: boolean
          description: >-
            false pauses the schedule without deleting the monitor or its
            history.
        alertBelowPct:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 100
          description: >-
            Email when the recent mention rate falls below this percentage. null
            means the alert is off, and it is always null on a CATEGORY monitor.
        competitors:
          type: array
          maxItems: 50
          description: >-
            BRAND: up to 10 you added, then up to 15 the competitor read found
            in this monitor's answers. CATEGORY: up to 25 you added, then up to
            25 the read found, and the whole list is the roster the report
            ranks.
          items:
            $ref: '#/components/schemas/MonitorCompetitor'
        competitorsReadAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            When the competitor read last ran. It runs once the first run is in,
            then every 7 days when the monitor has run since. null until then.
        nextRunAt:
          type: string
          format: date-time
          description: >-
            When the next run becomes due. A run is admitted by the next sweep
            tick, not at this instant.
        lastRunAt:
          type:
            - string
            - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        location:
          oneOf:
            - $ref: '#/components/schemas/LocationPoint'
            - type: 'null'
          description: >-
            Ask every task from this point (ChatGPT, Gemini, Google AI Overview
            and AI Mode only). Exclusive with grid; setting one clears the
            other, null asks for the whole country.
        grid:
          oneOf:
            - $ref: '#/components/schemas/GridSpec'
            - type: 'null'
          description: >-
            Ask every prompt and engine from each point of this grid. Each
            engine in a run adds prompts × size² × its samples tasks; the first
            run, which every engine joins, must stay within the account's
            tasksPerRun limit.
        engineSettings:
          allOf:
            - $ref: '#/components/schemas/MonitorEngineSettings'
        webhookUrl:
          type:
            - string
            - 'null'
          description: Where change events are posted, or null when they are off.
        analysis:
          type: boolean
          description: >-
            Ask every task for `include.analysis` with this monitor's names,
            domains and competitors. 2 extra credits per analyzed task.
    MonitorStats:
      type: object
      description: >-
        Scored answers in a window, plus how many named the brand and how many
        cited a registered domain. These are counts, not rates; a rate is these
        numbers divided, and is published as null when the denominator is zero.
      required:
        - runs
        - mentioned
        - cited
      properties:
        runs:
          type: integer
        mentioned:
          type: integer
        cited:
          type: integer
    MonitorLeader:
      type: object
      description: >-
        The brand a set of answers named most. mentionRate divides by
        sampleSize, the answers scored while the brand was on the monitor's
        list.
      properties:
        name:
          type: string
        mentions:
          type: integer
          description: Answers that named the brand.
        sampleSize:
          type: integer
          description: Answers scored while the brand was on the monitor's list.
        mentionRate:
          type:
            - number
            - 'null'
          description: 100 x mentions / sampleSize.
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          $ref: '#/components/schemas/ErrorDetail'
    MonitorEngine:
      type: string
      description: >-
        An engine a monitor can schedule: the prompt surfaces sold to customers
        plus the deprecated NAVER alias. GOOGLE_AIO and GOOGLE_AIMODE are
        accepted as input aliases and echoed as GOOGLE and AIMODE.
        CITATION_ANALYSIS is an analysis task, not a prompt surface, and cannot
        be scheduled on a monitor.
      enum:
        - CHATGPT
        - GEMINI
        - PERPLEXITY
        - GOOGLE
        - AIMODE
        - NAVER_AI_BRIEF
        - NAVER_AI_TAB
        - NAVER
    MonitorCompetitor:
      type: object
      description: >-
        A brand scored alongside yours in the same answers. The name is always
        one of its own aliases, so a bare name matches reliably.
      required:
        - name
      properties:
        name:
          type: string
          maxLength: 80
          description: __you__ is reserved for your own brand.
        aliases:
          type: array
          maxItems: 20
          items:
            type: string
          description: Other spellings of the same brand. The name is added automatically.
        source:
          type: string
          enum:
            - user
            - auto
          readOnly: true
          description: >-
            user: you added it. auto: the weekly competitor read found it in the
            monitor's own answers. Entries you send with source auto are
            ignored, so a monitor read and written back keeps its found
            competitors.
        domain:
          type: string
          readOnly: true
          description: The competitor's site, when the competitor read found one.
    LocationPoint:
      type: object
      additionalProperties: false
      required:
        - latitude
        - longitude
      properties:
        latitude:
          type: number
          minimum: -90
          maximum: 90
        longitude:
          type: number
          minimum: -180
          maximum: 180
      example:
        latitude: 37.4979
        longitude: 127.0276
    GridSpec:
      type: object
      additionalProperties: false
      required:
        - center
        - size
        - radiusMeters
      description: >-
        A square grid of points. Row 0 is the north edge and column 0 the west
        edge; points sit 2 × radiusMeters ÷ (size − 1) apart.
      properties:
        center:
          $ref: '#/components/schemas/LocationPoint'
        size:
          type: integer
          enum:
            - 3
            - 5
            - 7
            - 9
          description: Points per side. Odd, so the center is one of the points.
        radiusMeters:
          type: number
          minimum: 100
          maximum: 50000
          description: Distance from the center to the middle of each edge.
    MonitorEngineSettings:
      type: object
      description: >-
        Per-engine cadence and answers per prompt, keyed by engine. An engine
        without an entry joins every run once. Values equal to the defaults are
        dropped, and an update that removes an engine removes its entry.
      additionalProperties:
        type: object
        additionalProperties: false
        properties:
          intervalHours:
            type: integer
            minimum: 1
            maximum: 168
            description: >-
              A multiple of the monitor's intervalHours. The engine joins every
              k-th run, counting from the first run, which every engine joins.
          samples:
            type: integer
            minimum: 1
            maximum: 10
            description: >-
              Answers per prompt and point in each run, each its own task in its
              own session. Default 1.
      example:
        CHATGPT:
          samples: 5
        GOOGLE:
          intervalHours: 168
    ErrorDetail:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Stable, safe to branch on. See the Errors guide for the full list.
        message:
          type: string
          description: For humans. May change.
        details:
          description: >-
            Context for the error. An array of `{field, message}` on most
            `VALIDATION_ERROR`s; an object elsewhere (for example `{id}` on
            `RESOURCE_NOT_FOUND`, `retryAfterSec` on 429 and 503 codes). Omitted
            when there is nothing to add.
          oneOf:
            - type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
            - type: object
              additionalProperties: true
        timestamp:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: MISSING_API_KEY
              message: Missing or invalid API key
              timestamp: '2026-07-09T04:12:00.000Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer <key>`.'

````

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