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

# List Accuracy contradictions

> Lists contradictions once per site sentence they conflict with, over the same window and filters as getAccuracy, most answers first, then most recently seen: the rows of the Accuracy tab’s contradictions table. Each row carries the sentence and its page, how many AI wordings (claim groups) contradict it and how many the team dismissed, their answers and platforms, an example wording and the row’s open action. A row whose wordings were all dismissed is not listed.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/accuracy/contradictions
openapi: 3.1.0
info:
  title: DevTune API
  version: 2.0.0
  description: >-
    API for programmatic access to your AI visibility data, webhook
    subscriptions, and automation workflows. Use this API to integrate DevTune
    data into CI/CD pipelines, BI tools, AI agents, and operational systems.
servers:
  - url: https://devtune.ai/api/v2
    description: Production
security:
  - bearerAuth: []
paths:
  /projects/{projectId}/accuracy/contradictions:
    get:
      summary: List Accuracy contradictions
      description: >-
        Lists contradictions once per site sentence they conflict with, over the
        same window and filters as getAccuracy, most answers first, then most
        recently seen: the rows of the Accuracy tab’s contradictions table. Each
        row carries the sentence and its page, how many AI wordings (claim
        groups) contradict it and how many the team dismissed, their answers and
        platforms, an example wording and the row’s open action. A row whose
        wordings were all dismissed is not listed.
      operationId: listAccuracyContradictions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: window
          in: query
          schema:
            type: integer
            enum:
              - 30
              - 90
            default: 30
        - name: platform
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 100
        - name: intent
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 100
        - name: cursor
          in: query
          description: next_cursor from the previous page, verbatim.
          schema:
            type: string
            maxLength: 400
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
      responses:
        '200':
          description: Accuracy contradictions
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AccuracySentencesData'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitExceededError'
components:
  schemas:
    AccuracySentencesData:
      type: object
      properties:
        window:
          $ref: '#/components/schemas/AccuracyWindow'
        items:
          type: array
          items:
            type: object
            description: >-
              A contradiction row: one sentence on the brand’s site that active
              contradictions conflict with, and the AI wordings (claim groups)
              that contradict it.
            properties:
              sentence_key:
                type: string
                pattern: ^[0-9a-f]{32}$
                description: 'The row: its site page and its sentence as a reader sees it.'
              site_page:
                anyOf:
                  - $ref: '#/components/schemas/AccuracySitePage'
                  - type: 'null'
              other_page:
                anyOf:
                  - $ref: '#/components/schemas/AccuracyOtherPage'
                  - type: 'null'
              wording_count:
                type: integer
                minimum: 0
                description: >-
                  Active AI wordings (claim groups) that contradict the
                  sentence.
              dismissed_wording_count:
                type: integer
                minimum: 0
                description: Wordings the team dismissed.
              answers:
                type: integer
                minimum: 0
                description: >-
                  The active wordings’ answers. An answer stating two wordings
                  counts under each.
              platforms:
                type: array
                items:
                  type: string
              last_seen_on:
                type: string
                format: date
              last_seen_at:
                type: string
                format: date-time
              example:
                type: object
                description: >-
                  The active wording with the most answers, by its latest
                  contradicting answer. Its execution_id and claim_index name
                  the claim a Create action on the row acts on.
                properties:
                  group_id:
                    type: string
                    format: uuid
                  claim_text:
                    type: string
                  execution_id:
                    type:
                      - string
                      - 'null'
                    format: uuid
                  claim_index:
                    type:
                      - integer
                      - 'null'
                    minimum: 0
                  prompt_id:
                    type:
                      - string
                      - 'null'
                    format: uuid
                  prompt_text:
                    type:
                      - string
                      - 'null'
                  excerpt:
                    type:
                      - string
                      - 'null'
                required:
                  - group_id
                  - claim_text
                  - execution_id
                  - claim_index
                  - prompt_id
                  - prompt_text
                  - excerpt
              group_ids:
                type: array
                description: The active wordings, most answers first.
                items:
                  type: string
                  format: uuid
              action:
                anyOf:
                  - $ref: '#/components/schemas/AccuracyOpenAction'
                  - type: 'null'
            required:
              - sentence_key
              - site_page
              - other_page
              - wording_count
              - dismissed_wording_count
              - answers
              - platforms
              - last_seen_on
              - last_seen_at
              - example
              - group_ids
              - action
        next_cursor:
          type:
            - string
            - 'null'
          description: >-
            Pass verbatim as cursor for the next page, with the other parameters
            unchanged. Null on the last page.
      required:
        - window
        - items
        - next_cursor
    Meta:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        projectId:
          type: string
          format: uuid
    AccuracyWindow:
      type: object
      properties:
        days:
          type: integer
          enum:
            - 30
            - 90
        from:
          type: string
          format: date
        to:
          type: string
          format: date
      required:
        - days
        - from
        - to
    AccuracySitePage:
      type: object
      description: The page on the brand’s site the claim was judged against.
      properties:
        url:
          type:
            - string
            - 'null'
        quote:
          type:
            - string
            - 'null'
        page_type:
          type:
            - string
            - 'null'
        crawled_at:
          type:
            - string
            - 'null'
          format: date-time
        locked:
          type: boolean
          description: The customer has marked the page off-limits for suggested changes.
      required:
        - url
        - quote
        - page_type
        - crawled_at
        - locked
    AccuracyOtherPage:
      type: object
      description: >-
        Another page that states the claim: a conflicting_page makes a site
        conflict; a set_aside_page is a blog post or changelog that leaves the
        claim a contradiction.
      properties:
        url:
          type:
            - string
            - 'null'
        quote:
          type:
            - string
            - 'null'
        page_type:
          type:
            - string
            - 'null'
        role:
          type:
            - string
            - 'null'
          enum:
            - conflicting_page
            - set_aside_page
            - null
        locked:
          type: boolean
      required:
        - url
        - quote
        - page_type
        - role
        - locked
    AccuracyOpenAction:
      type: object
      description: The open action for the claim, created from Accuracy or attached to.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - open
            - in_progress
            - blocked
        loop_state:
          type:
            - string
            - 'null'
        created_by:
          type:
            - string
            - 'null'
          format: uuid
        created_at:
          type: string
          format: date-time
      required:
        - id
        - status
        - loop_state
        - created_by
        - created_at
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        status:
          type: integer
      required:
        - error
        - message
        - status
  responses:
    BadRequestError:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ForbiddenError:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFoundError:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitExceededError:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    X-RateLimit-Limit:
      description: Maximum requests per window
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in current window
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp when the window resets
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key with dtk_live_ prefix. Obtain it from API Keys in the account
        sidebar. New keys start with all supported scopes selected for the
        chosen project, and you can narrow them to specific read/write scopes as
        needed.

````

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