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

# Get Accuracy claim

> Returns one claim group over the same window and filters as getAccuracy: its outcome, platforms and answers, the latest answer with its pages and the evidence it was judged against, up to 20 other answers, the brand’s own pages the answers cited, and the team’s active decision. A merged group opens as the group it was merged into. A group outside the project returns 400.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/accuracy/claims/{groupId}
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/claims/{groupId}:
    get:
      summary: Get Accuracy claim
      description: >-
        Returns one claim group over the same window and filters as getAccuracy:
        its outcome, platforms and answers, the latest answer with its pages and
        the evidence it was judged against, up to 20 other answers, the brand’s
        own pages the answers cited, and the team’s active decision. A merged
        group opens as the group it was merged into. A group outside the project
        returns 400.
      operationId: getAccuracyClaim
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: groupId
          in: path
          required: true
          description: group_id from listAccuracyClaims.
          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
      responses:
        '200':
          description: Accuracy claim
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AccuracyClaimData'
                  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:
    AccuracyClaimData:
      type: object
      properties:
        window:
          $ref: '#/components/schemas/AccuracyWindow'
        group_id:
          type: string
          format: uuid
        claim_text:
          type: string
        outcome:
          type:
            - string
            - 'null'
          enum:
            - contradict
            - site_conflict
            - stale
            - not_on_site
            - match
            - unjudged
            - dismissed
            - null
          description: Null when the claim made no answer in the window and filters.
        platforms:
          type: array
          items:
            type: string
        answers:
          type: integer
          minimum: 0
        last_seen_on:
          type:
            - string
            - 'null'
          format: date
        intent_tag:
          type:
            - string
            - 'null'
          description: The most common intent among its answers.
        claim:
          type:
            - object
            - 'null'
          description: >-
            The latest answer that did not match, or the latest answer when all
            matched. Null when the claim made no answer in the window and
            filters.
          properties:
            execution_id:
              type: string
              format: uuid
            claim_index:
              type:
                - integer
                - 'null'
              minimum: 0
              description: >-
                The claim within that answer. With execution_id it names the
                claim a decision on this group acts on. Null only while an older
                database is being migrated.
            platform:
              type: string
            logical_run_date:
              type: string
              format: date
            outcome:
              type: string
              enum:
                - contradict
                - site_conflict
                - stale
                - not_on_site
                - match
                - unjudged
            prompt_id:
              type:
                - string
                - 'null'
              format: uuid
            prompt_text:
              type:
                - string
                - 'null'
            excerpt:
              type: string
            site_page:
              anyOf:
                - $ref: '#/components/schemas/AccuracySitePage'
                - type: 'null'
            other_page:
              anyOf:
                - $ref: '#/components/schemas/AccuracyOtherPage'
                - type: 'null'
            site_crawled_at:
              type:
                - string
                - 'null'
              format: date-time
            recheck_version:
              type:
                - integer
                - 'null'
            evidence:
              type:
                - array
                - 'null'
              description: The site passages the claim was judged against.
              items:
                type: object
                properties:
                  id:
                    type: string
                  url:
                    type:
                      - string
                      - 'null'
                  pageId:
                    type:
                      - string
                      - 'null'
                  pageType:
                    type:
                      - string
                      - 'null'
                  heading:
                    type:
                      - string
                      - 'null'
                  text:
                    type: string
                required:
                  - id
                  - url
                  - pageId
                  - pageType
                  - heading
                  - text
          required:
            - execution_id
            - claim_index
            - platform
            - logical_run_date
            - outcome
            - prompt_id
            - prompt_text
            - excerpt
            - site_page
            - other_page
            - site_crawled_at
            - recheck_version
            - evidence
        other_answers:
          type: array
          description: Up to 20 other answers that made the claim.
          items:
            type: object
            properties:
              execution_id:
                type: string
                format: uuid
              platform:
                type: string
              logical_run_date:
                type: string
                format: date
              excerpt:
                type: string
            required:
              - execution_id
              - platform
              - logical_run_date
              - excerpt
        cited_by:
          type: array
          description: >-
            The brand’s own pages the answers cited, with how many answers cite
            each.
          items:
            type: object
            properties:
              url:
                type: string
              answers:
                type: integer
                minimum: 0
            required:
              - url
              - answers
        decision:
          anyOf:
            - $ref: '#/components/schemas/AccuracyDecision'
            - type: 'null'
        action:
          anyOf:
            - $ref: '#/components/schemas/AccuracyOpenAction'
            - type: 'null'
      required:
        - window
        - group_id
        - claim_text
        - outcome
        - platforms
        - answers
        - last_seen_on
        - intent_tag
        - claim
        - other_answers
        - cited_by
        - decision
        - action
    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
    AccuracyDecision:
      type: object
      description: >-
        A decision the team made on a claim. Claim lists and the claim detail
        carry the active one.
      properties:
        id:
          type: string
          format: uuid
        kind:
          type: string
          enum:
            - contradiction
            - site_conflict
            - not_on_site
        choice:
          type: string
          enum:
            - not_a_contradiction
            - both_right
            - site
            - other
            - 'true'
            - 'false'
        chosen_url:
          type:
            - string
            - 'null'
          description: The page a site-conflict answer kept. Null for other choices.
        changed_url:
          type:
            - string
            - 'null'
          description: >-
            The page a site-conflict answer changes to agree with chosen_url.
            Null for other choices.
        action_id:
          type:
            - string
            - 'null'
          format: uuid
        action_role:
          type:
            - string
            - 'null'
          enum:
            - created
            - attached
            - null
          description: >-
            Where the decision stands on its action now: created when the action
            is built from this decision, attached when the decision is added to
            an action built from another claim, null when it has none. Undoing
            the decision an action was built from rebuilds it from the next
            claim on it, whose role becomes created.
        no_action_reason:
          type:
            - string
            - 'null'
        label: {}
        decided_by:
          type:
            - string
            - 'null'
          format: uuid
        decided_at:
          type: string
          format: date-time
        undo_available:
          type: boolean
          description: >-
            False once the decision is undone, or when the action it created is
            live.
      required:
        - id
        - kind
        - choice
        - chosen_url
        - changed_url
        - action_id
        - action_role
        - no_action_reason
        - label
        - decided_by
        - decided_at
        - undo_available
    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.