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

# Analyze answer claims and cited sources

> Preserves the v2 result. Opt in with analysis.version=1 for question requirements, brand decisions and ownership/production metadata. citations may be empty only in opt-in mode. Analysis failure is explicit inside the result; COMPLETED does not imply analysis.status=ok. The temporary hold includes a payload-sized interpretation budget; actual metered token/fetch rates are unchanged.



## OpenAPI

````yaml post /v1/source-influence
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/source-influence:
    post:
      tags:
        - Research
      summary: Analyze answer claims and cited sources
      description: >-
        Preserves the v2 result. Opt in with analysis.version=1 for question
        requirements, brand decisions and ownership/production metadata.
        citations may be empty only in opt-in mode. Analysis failure is explicit
        inside the result; COMPLETED does not imply analysis.status=ok. The
        temporary hold includes a payload-sized interpretation budget; actual
        metered token/fetch rates are unchanged.
      operationId: createSourceInfluence
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceInfluenceRequest'
            example:
              answer: Atlas is suitable for small teams.
              prompt: Which tool is suitable for small teams?
              citations: []
              analysis:
                version: 1
                entities:
                  - id: atlas
                    name: Atlas
                    role: competitor
      responses:
        '200':
          description: >-
            Queued; poll /v1/async/task/{id}. Its response follows
            SourceInfluenceResult.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncResponse'
        '400':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Request rejected; 422 includes invalid analysis metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    SourceInfluenceRequest:
      type: object
      properties:
        answer:
          type: string
          minLength: 1
          maxLength: 200000
        citations:
          type: array
          maxItems: 25
          items:
            $ref: '#/components/schemas/SourceInfluenceCitation'
          description: >-
            1–25 in legacy mode; 0–25 with analysis.version=1. Total HTTP body
            ≤1 MiB.
        prompt:
          type: string
          maxLength: 200000
        country:
          type: string
        engine:
          type: string
          maxLength: 64
        brand:
          type: string
          maxLength: 200
        competitors:
          type: array
          maxItems: 25
          items:
            type: string
            maxLength: 200
        analysis:
          $ref: '#/components/schemas/SourceAnalysisInput'
        idempotencyKey:
          type: string
        priority:
          type: integer
        webhook:
          type: object
          properties:
            url:
              type: string
              format: uri
          required:
            - url
      required:
        - answer
        - citations
    AsyncResponse:
      type: object
      required:
        - success
        - task
        - credits
      properties:
        success:
          type: boolean
          const: true
        task:
          $ref: '#/components/schemas/TaskMeta'
        credits:
          $ref: '#/components/schemas/Credits'
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          $ref: '#/components/schemas/ErrorDetail'
    SourceInfluenceCitation:
      type: object
      properties:
        url:
          type: string
          format: uri
          maxLength: 2048
        body:
          type: string
          maxLength: 300000
          description: >-
            Exact source snapshot. A supplied body is never replaced with a
            current fetch.
        title:
          type: string
        kind:
          type: string
          enum:
            - inline
            - panel
        fetchedAt:
          type: string
          format: date-time
        relationship:
          $ref: '#/components/schemas/SourceRelationship'
      required:
        - url
    SourceAnalysisInput:
      type: object
      properties:
        version:
          type: integer
          const: 1
        entities:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/SourceAnalysisEntity'
        answeredAt:
          type: string
          format: date-time
      required:
        - version
    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: >-
        Submit and polling envelopes preserve zero values. With billing enabled,
        account settlement uses the engine pricing policy; webhooks report the
        persisted charge. SOURCE_INFLUENCE is metered by actual model tokens and
        source fetches.
      properties:
        creditsToCharge:
          type: integer
        creditsCharged:
          type:
            - integer
            - 'null'
    ErrorDetail:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Stable, safe to branch on.
          enum:
            - MISSING_API_KEY
            - VALIDATION_ERROR
            - REGION_UNAVAILABLE
            - RESOURCE_ALREADY_EXISTS
            - PAYLOAD_TOO_LARGE
            - RESOURCE_NOT_FOUND
            - ENQUEUE_ERROR
        message:
          type: string
          description: For humans. May change.
        details:
          description: >-
            Field-level context. An array of `{field, message}` on
            `VALIDATION_ERROR`; an object on `RESOURCE_NOT_FOUND` (`{id}`) and
            `REGION_UNAVAILABLE`. 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
    SourceRelationship:
      type: object
      properties:
        ownership:
          type: string
          enum:
            - own
            - competitor
            - third_party
            - unknown
        ownerEntityId:
          type: string
        production:
          type: string
          enum:
            - direct
            - commissioned
            - independent
            - unknown
        producerEntityId:
          type: string
      required:
        - ownership
        - production
    SourceAnalysisEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^[a-zA-Z0-9_-]{1,64}$
        name:
          type: string
          maxLength: 200
        role:
          type: string
          enum:
            - own
            - competitor
            - third_party
            - unknown
        aliases:
          type: array
          maxItems: 20
          items:
            type: string
        domains:
          type: array
          maxItems: 20
          items:
            type: string
            description: Hostname, matched only at domain boundaries; no scheme or path.
        brandId:
          type: string
          description: Product parent ID, with the same role. No nested products or cycles.
      required:
        - id
        - name
        - role
    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.
      enum:
        - CHATGPT
        - PERPLEXITY
        - GEMINI
        - AIMODE
        - GOOGLE_AIMODE
        - GOOGLE
        - GOOGLE_AIO
        - NAVER_AI_BRIEF
        - NAVER_AI_TAB
        - NAVER
        - SOURCE_INFLUENCE
        - CITATION_ATTRIBUTION
    TaskStatus:
      type: string
      description: >-
        `PROCESSING` means a worker holds the task. `COMPLETED` and `FAILED` are
        terminal.
      enum:
        - QUEUED
        - PROCESSING
        - COMPLETED
        - FAILED
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer <key>`.'

````