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

# Obtenir une réponse notée

> Lisez la réponse conservée et les sources derrière un résultat noté.



## OpenAPI

````yaml GET /v1/monitors/{id}/answers/{taskId}
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/{id}/answers/{taskId}:
    get:
      tags:
        - Monitors
      summary: Get one answer
      description: >-
        The retained evidence behind one scored cell: the answer as the engine
        gave it (markdown when available, capped at 8,000 characters with a
        trailing ellipsis when it was cut), the citations in the engine's order,
        the competitor names scored against it, and the aliases that were
        matched so the mention can be checked rather than trusted. display adds
        the original task's display fields (the full answer, sources, layout,
        places and products) while the task is still stored. Rows scored before
        scoring context was stored return scoringKnown false with the monitor's
        current aliases and a null evidenceTruncated, and answerText is null
        when the engine returned no answer text.
      operationId: getMonitorAnswer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: taskId
          in: path
          required: true
          schema:
            type: string
          description: >-
            A taskId from cells[], results[].taskId, sources[].evidenceTaskId or
            the CSV.
      responses:
        '200':
          description: The scored answer and the definition it was scored against.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorAnswerResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            No monitor with that id, or no scored answer with that task id on
            this monitor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    MonitorAnswerResponse:
      type: object
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          properties:
            answer:
              $ref: '#/components/schemas/MonitorAnswerRow'
            display:
              type:
                - object
                - 'null'
              description: >-
                Display fields of the original task response, read back from the
                task rather than from the 8,000-character scored excerpt. Only
                the fields the engine returned are present: markdown, text,
                sources, searchQueries, layout, map, products, shoppingCards,
                inlineProducts, citationPills, videos and sponsored, with a
                Google AI Overview's under aioverview. null once the task is no
                longer stored, or when it carries none of these fields.
            mode:
              type: string
              enum:
                - BRAND
                - CATEGORY
              description: >-
                The monitor's mode. On a CATEGORY monitor aliases is empty and
                competitors is the whole list of brands the report ranks.
            aliases:
              type: array
              items:
                type: string
              description: >-
                The aliases this row was scored with when that is known,
                otherwise the monitor's current aliases. The reader needs them
                to see what matched.
            competitors:
              type: array
              items:
                $ref: '#/components/schemas/MonitorCompetitor'
            scoringKnown:
              type: boolean
              description: >-
                False when this row predates stored scoring context; the answer
                is intact but the definition shown is the monitor's current one.
            evidenceTruncated:
              type:
                - boolean
                - 'null'
              description: null when scoringKnown is false.
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          $ref: '#/components/schemas/ErrorDetail'
    MonitorAnswerRow:
      type: object
      properties:
        taskId:
          type: string
        engine:
          $ref: '#/components/schemas/MonitorEngine'
        prompt:
          type: string
        mentioned:
          type: boolean
        cited:
          type: boolean
        position:
          type:
            - integer
            - 'null'
          description: >-
            Character offset of the earliest alias hit, or null when the brand
            was absent.
        ranAt:
          type: string
          format: date-time
        answerText:
          type:
            - string
            - 'null'
          description: >-
            At most 8,000 characters, cut with a trailing ellipsis; null when
            the engine returned no answer text.
        sources:
          type: array
          items:
            $ref: '#/components/schemas/MonitorStoredSource'
        competitorHits:
          type: array
          items:
            type: string
        scoringContext:
          $ref: '#/components/schemas/MonitorScoringContext'
        analysis:
          oneOf:
            - $ref: '#/components/schemas/AnswerAnalysis'
            - type: 'null'
          description: The task's analysis when the monitor asked for it; null otherwise.
    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.
    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
    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
    MonitorStoredSource:
      type: object
      description: >-
        One citation as the engine gave it. The order is the engine's, and the
        list is deduplicated by URL.
      properties:
        url:
          type: string
        label:
          type:
            - string
            - 'null'
        position:
          type: integer
          description: >-
            1-based place in the engine's citation list. It is not a ranking of
            your brand.
    MonitorScoringContext:
      type:
        - object
        - 'null'
      description: >-
        The definition this answer was scored with, stored at completion. null
        on rows scored before this was recorded - they are the reason a
        comparison can be withheld as legacy_scoring_unknown.
      properties:
        aliases:
          type: array
          items:
            type: string
        domains:
          type: array
          items:
            type: string
        competitors:
          type: array
          items:
            $ref: '#/components/schemas/MonitorCompetitor'
        country:
          type: string
        version:
          type: string
          description: >-
            Stable hash of the definition above. Two rows with the same version
            are comparable; a different one means the question changed.
        scoredAt:
          type: string
          format: date-time
        answerPresent:
          type: boolean
          description: False for a completed observation whose answer was empty.
        evidenceTruncated:
          type: boolean
          description: True when the retained answer text was cut at the character limit.
    AnswerAnalysis:
      type: object
      description: >-
        The `analysis` field of an answer task with `include.analysis`. Brand
        names, the requested-brand match, recommendation and sentiment are a
        model's judgment; positions, ranks and source kinds are computed by
        rules. See the Engines guide, Answer analysis.
      required:
        - version
        - status
      properties:
        version:
          type: integer
          enum:
            - 1
        status:
          type: string
          enum:
            - ok
            - no_answer
            - failed
          description: >-
            `no_answer`: the engine completed without answer text, nothing is
            mentioned and the analysis is not charged. `failed`: the analysis
            could not run; the task still completes and only the engine price is
            charged.
        error:
          type: string
          enum:
            - ANALYSIS_FAILED
            - ANALYSIS_TIMEOUT
            - ANALYSIS_UNAVAILABLE
          description: Present when `status` is `failed`.
        brands:
          type: array
          description: >-
            Every brand the answer names, in the order it first names each one.
            A product counts for its maker.
          items:
            type: object
            properties:
              name:
                type: string
                description: >-
                  The name you sent, or for any other brand its own name, the
                  same in every language.
              domain:
                type:
                  - string
                  - 'null'
                description: >-
                  The brand's site: the first of the domains you sent, or the
                  one found for it.
              writtenAs:
                type: string
                description: >-
                  The brand's name as the answer first writes it: the first of
                  `spellings`.
              spellings:
                type: array
                items:
                  type: string
                description: >-
                  Every way the answer writes the brand's name, in the order it
                  first uses each. A product or description written after the
                  name is not part of a spelling.
              rank:
                type: integer
                minimum: 1
              role:
                type:
                  - string
                  - 'null'
                enum:
                  - brand
                  - competitor
                  - null
              recommended:
                type:
                  - boolean
                  - 'null'
                description: >-
                  Null when the name matched but the model did not read it as a
                  brand in this answer.
              sentiment:
                type:
                  - string
                  - 'null'
                enum:
                  - positive
                  - neutral
                  - negative
                  - null
              sentimentScore:
                type:
                  - number
                  - 'null'
                enum:
                  - 0.9
                  - 0.5
                  - 0
                  - -0.5
                  - -0.9
                  - null
        targets:
          type: array
          description: The `brand` and `competitors` you sent, in your order.
          items:
            type: object
            properties:
              name:
                type: string
              role:
                type: string
                enum:
                  - brand
                  - competitor
              mentioned:
                type: boolean
              rank:
                type:
                  - integer
                  - 'null'
              recommended:
                type:
                  - boolean
                  - 'null'
              sentiment:
                type:
                  - string
                  - 'null'
                enum:
                  - positive
                  - neutral
                  - negative
                  - null
              sentimentScore:
                type:
                  - number
                  - 'null'
              cited:
                type: boolean
                description: >-
                  A citation is on one of its domains. False when no domains
                  were sent.
        sources:
          type: array
          description: The answer's citations in the engine's order.
          items:
            type: object
            properties:
              position:
                type: integer
                minimum: 1
              url:
                type: string
              domain:
                type:
                  - string
                  - 'null'
              kind:
                type: string
                enum:
                  - owned
                  - competitor
                  - editorial
                  - review_media
                  - pr_wire
                  - institution
                  - reviews
                  - commerce
                  - social
                  - blog
                  - community
                  - video
                  - brand
                  - content
                  - other
              brand:
                type:
                  - string
                  - 'null'
                description: The brand whose domain this is, for `owned` and `competitor`.
  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.