> ## 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.

# Investigar prompts para un monitor

> Encola una tarea de Prompt Research para elegir los prompts de un monitor.



## OpenAPI

````yaml POST /v1/monitors/research
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/research:
    post:
      tags:
        - Monitors
      summary: Research prompts for a monitor
      description: >-
        Queues the same task as POST /v1/prompt-research for your account: a
        topic in, the questions people ask AI assistants about it out, ranked by
        the search demand behind each one, with the set a monitor should track
        in monitorSet and the brands people search for in brands. The body,
        validation, price (11 credits per completed task) and result are
        identical; KR and US are the supported markets. When you create a
        category monitor, use each monitorSet prompt's topic as its sub-field in
        promptTopics and brands[].brand as competitors. Nothing is written to
        any monitor. Read the queued task with GET /v1/async/task/{id}, where
        the id is data.task.id.
      operationId: researchMonitorPrompts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromptResearchRequest'
            example:
              seed: sunscreen
              country: US
              monitorSize: 10
              monitorEngines:
                - CHATGPT
                - GEMINI
      responses:
        '200':
          description: >-
            Queued. Poll /v1/async/task/{id}; its response follows
            PromptResearchResult.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorResearchResponse'
              example:
                success: true
                data:
                  task:
                    id: 4299622a-1321-43a9-b780-809a0116f1b5
                    taskType: PROMPT_RESEARCH
                    status: QUEUED
                    priority: 1
                    createdAt: '2026-09-30T04:03:26.092Z'
                  credits:
                    creditsToCharge: 11
                    creditsCharged: 0
                  replayed: false
        '400':
          description: The body is not valid JSON.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          description: Not enough credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: The API key is not allowed to use PROMPT_RESEARCH.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            VALIDATION_ERROR for a field out of range, or REGION_UNSUPPORTED
            when country is not KR or US.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Request rejected; retry after Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PromptResearchRequest:
      type: object
      required:
        - seed
        - country
      additionalProperties: false
      properties:
        seed:
          type: string
          minLength: 1
          maxLength: 30
          description: >-
            The topic: letters, digits and single spaces, such as sunscreen. A
            short product or category term works best; a sentence finds nothing.
        country:
          type: string
          enum:
            - KR
            - US
          description: >-
            Market: KR (South Korea) or US (United States). Any other value is a
            422 REGION_UNSUPPORTED.
        limit:
          type: integer
          minimum: 1
          maximum: 50
          default: 20
          description: Prompts to return.
        exclude:
          type: array
          maxItems: 20
          items:
            type: string
            minLength: 1
            maxLength: 30
          description: >-
            Terms to leave out, such as a subtopic you do not want. A prompt
            containing one is left out. Put your own brand in brand.
        monitorSize:
          type: integer
          minimum: 1
          maximum: 50
          default: 20
          description: Prompts in monitorSet.
        monitorEngines:
          type: array
          minItems: 1
          maxItems: 12
          items:
            $ref: '#/components/schemas/MonitorEngine'
          description: >-
            The engines your monitor will run. A monitor runs at most 200 prompt
            × engine tasks at a time, so monitorSize × the number of engines
            above 200 is a 422 VALIDATION_ERROR on monitorSize. It does not
            change the result.
        brand:
          type: string
          minLength: 1
          maxLength: 80
          description: >-
            Your brand, with at least two letters or digits; punctuation is
            allowed. Prompts containing it are left out, as with exclude.
        brandAliases:
          type: array
          maxItems: 10
          items:
            type: string
            minLength: 1
            maxLength: 80
          description: >-
            Other names or spellings of your brand, left out the same way.
            Requires brand.
        brandDescription:
          type: string
          maxLength: 500
          description: >-
            What your brand sells and to whom. Requires brand. Adds fit to every
            prompt, which monitorSet weighs.
        idempotencyKey:
          type: string
          description: Optional. Deduplicates submissions; a duplicate is a 409.
        priority:
          type: integer
          minimum: 1
          maximum: 10
          default: 1
          description: >-
            Optional. Echoed in task metadata; values outside 1-10 are clamped.
            It does not guarantee execution order.
        webhook:
          type: object
          description: Optional. Omit to collect the result by polling instead.
          required:
            - url
          properties:
            url:
              type: string
              format: uri
              description: Receives a POST when the task reaches a terminal state.
    MonitorResearchResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          required:
            - task
            - credits
          properties:
            task:
              $ref: '#/components/schemas/TaskMeta'
            credits:
              $ref: '#/components/schemas/Credits'
            replayed:
              type: boolean
              description: >-
                true when the request repeated an earlier one and points at the
                task it already made.
    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
    TaskMeta:
      type: object
      required:
        - id
        - taskType
        - status
        - priority
        - createdAt
      properties:
        id:
          type: string
          format: uuid
        taskType:
          $ref: '#/components/schemas/TaskType'
        status:
          $ref: '#/components/schemas/TaskStatus'
        priority:
          type: integer
        createdAt:
          type: string
          format: date-time
        idempotencyKey:
          type: string
          description: >-
            Echoed back verbatim. **Omitted** — not null — when the caller
            supplied none.
    Credits:
      type: object
      description: >-
        Credits, with up to two decimals (for example `1.25`). The submit
        response always shows `0`: a hold is placed on your balance, but nothing
        is charged yet. Polling shows `0` until the task is terminal, then the
        settled charge: the task's price for COMPLETED, `0` for FAILED. A task
        webhook reports the same charge in `creditsCharged`; on a FAILED task it
        reports the task's price in `creditsToCharge` and `0` in
        `creditsCharged`. CITATION_ANALYSIS and WEB_CRAWL are charged by usage,
        up to the hold placed at submit.
      properties:
        creditsToCharge:
          type: number
        creditsCharged:
          type:
            - number
            - 'null'
    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
    TaskType:
      type: string
      description: >-
        The engine to query. `NAVER` is a deprecated alias for `NAVER_AI_BRIEF`.
        GOOGLE_AIO and GOOGLE_AIMODE are the unified names for GOOGLE and
        AIMODE; both spellings are accepted and responses echo the canonical
        GOOGLE / AIMODE. `NAVER_AI_MODE` is accepted as an earlier spelling of
        `NAVER_AI_TAB`. `GOOGLE_SERP` returns the Google results page without
        the AI Overview; `payload.page` selects pages 1-10. `NAVER_SERP` returns
        Naver's web results, 15 per page (`payload.page` 1-10), and with
        `payload.action` `page` reads one naver.com page by `payload.url`.
        `REDDIT` searches Reddit posts by `query` (optionally within one
        `subreddit`), reads one post with its first page of comments by `url`,
        or lists posts with `action` `feed` or `user_posts`. `WEB_SCRAPE` reads
        one web page by `payload.url` and returns its main content as Markdown
        with its images. `WEB_MAP` lists a site's addresses from its start page
        links and sitemaps. `WEB_CRAWL` reads a site's pages under a start
        address, each as WEB_SCRAPE reads it, at 1 credit per page returned.
        `KEYWORD_VOLUME` returns the monthly search volume of `payload.keywords`
        (1-100) in `payload.country`: Naver for KR and Google for 216 other
        countries. `META_AI` returns the meta.ai chat answer with its cited
        sources, search queries and the products it shows (`shoppingCards`,
        `inlineProducts`); a prompt Meta refuses completes with an empty text
        and a `notice` quoting Meta. `QWEN` returns the answer of Qwen's China
        web chat (qianwen.com) with its web search, sources and search queries;
        `payload.country` sets the exit and the answer locale. `DOUBAO` returns
        the answer of Doubao's China web chat (doubao.com) with its web search,
        sources and search queries; it always asks from mainland China, whatever
        `payload.country` is. `BING` and `BING_COPILOT_SEARCH` are accepted as
        earlier spellings of `BING_SEARCH`, and `COPILOT` as the earlier
        spelling of `BING_COPILOT`; responses echo the new names. Private
        engines (for example CLAUDE) are rejected with 403 ENGINE_PRIVATE.
        CITATION_ANALYSIS, PROMPT_RESEARCH and GEO_SCORE tasks are created
        through their own endpoints (POST /v1/citation-analysis, POST
        /v1/prompt-research, POST /v1/geo-score) and are rejected here with 400
        USE_DEDICATED_ENDPOINT; they appear in this list because their tasks
        report them. GEO_AUDIT, SOURCE_INFLUENCE and CITATION_ATTRIBUTION are
        accepted as earlier names of CITATION_ANALYSIS; responses echo
        CITATION_ANALYSIS.
      enum:
        - CHATGPT
        - PERPLEXITY
        - GEMINI
        - AIMODE
        - GOOGLE_AIMODE
        - GOOGLE
        - GOOGLE_AIO
        - GOOGLE_SERP
        - NAVER_AI_BRIEF
        - NAVER_AI_TAB
        - NAVER_AI_MODE
        - NAVER
        - NAVER_SERP
        - COMMERCE_SERP
        - COMMERCE_PRODUCT
        - BING_SEARCH
        - BING
        - BING_COPILOT_SEARCH
        - BING_COPILOT
        - COPILOT
        - META_AI
        - QWEN
        - DOUBAO
        - REDDIT
        - WEB_SCRAPE
        - WEB_MAP
        - WEB_CRAWL
        - KEYWORD_VOLUME
        - CITATION_ANALYSIS
        - GEO_AUDIT
        - SOURCE_INFLUENCE
        - CITATION_ATTRIBUTION
        - PROMPT_RESEARCH
        - GEO_SCORE
    TaskStatus:
      type: string
      description: >-
        `PROCESSING` means a worker holds the task. `COMPLETED` and `FAILED` are
        terminal.
      enum:
        - QUEUED
        - PROCESSING
        - COMPLETED
        - FAILED
  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.