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

# Get a content check



## OpenAPI

````yaml https://data.otterly.ai/v1/openapi.json get /v1/audits/geo/content-checks/{checkId}
openapi: 3.0.0
info:
  title: Otterly Public API
  version: 1.0.0
servers:
  - url: https://data.otterly.ai
security: []
tags:
  - name: Engines
  - name: Workspaces
  - name: Brand Reports
  - name: Audits
  - name: Accounts
paths:
  /v1/audits/geo/content-checks/{checkId}:
    get:
      tags:
        - Audits
      summary: Get a content check
      parameters:
        - schema:
            type: string
            minLength: 1
            example: 01HX7K2YV9D3M8N0G6Q5R4S3T2
            description: Content check identifier.
          required: true
          description: Content check identifier.
          name: checkId
          in: path
      responses:
        '200':
          description: The content check.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiContentCheck'
        '400':
          description: Validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiValidationErrorResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '404':
          description: Content check not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    PublicApiContentCheck:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          example: 01HX7K2YV9D3M8N0G6Q5R4S3T2
        workspaceId:
          type: string
        url:
          type: string
        status:
          type: string
          enum:
            - pending
            - completed
            - failed
        createdDate:
          type: string
        crawlerIdentity:
          type: string
          enum:
            - ChatGPT-User
            - OAI-SearchBot
            - PerplexityCrawler
            - GoogleBot
          description: The crawler identity that was impersonated when fetching the URL.
          example: ChatGPT-User
        sendOtterlyHeader:
          type: boolean
          description: >-
            Whether the Otterly identifying header was sent when fetching the
            URL.
        structuralAnalysis:
          $ref: '#/components/schemas/PublicApiContentCheckStructuralAnalysis'
        dynamicContent:
          $ref: '#/components/schemas/PublicApiContentCheckDynamicContent'
        contentAnalysis:
          $ref: '#/components/schemas/PublicApiContentCheckContentAnalysis'
      required:
        - id
        - workspaceId
        - url
        - status
        - createdDate
      example:
        id: 01HXCONTENT5XY8Z2N3KQ7VAW4
        workspaceId: 01HX7K2YV9D3M8N0G6Q5R4S3T2
        url: https://www.adidas.com/us/running
        status: completed
        createdDate: '2026-01-13T09:46:46.251Z'
        structuralAnalysis:
          overallScore: 68.3
          categoryScores:
            metadata: 92
            technical: 100
            structure: 64
            content: 46
          metadata:
            score: 92
            breakdown:
              titleTag:
                maxScore: 30
                score: 30
              openGraphTags:
                maxScore: 15
                score: 12
              metaDescription:
                maxScore: 30
                score: 25
              structuredData:
                maxScore: 25
                score: 25
          technical:
            score: 100
            breakdown:
              mobileFriendlyIndicators:
                maxScore: 30
                score: 30
              validHtmlStructure:
                maxScore: 40
                score: 40
              robotsAndCrawling:
                maxScore: 20
                score: 20
              languageDeclaration:
                maxScore: 10
                score: 10
          structure:
            score: 64
            breakdown:
              listsAndStructuredContent:
                maxScore: 20
                score: 0
              paragraphStructure:
                maxScore: 15
                score: 10
              headingHierarchy:
                maxScore: 30
                score: 30
              semanticElements:
                maxScore: 25
                score: 14
              navigationStructure:
                maxScore: 10
                score: 10
          content:
            score: 46
            breakdown:
              richContentElements:
                maxScore: 60
                score: 36
              contentVariety:
                maxScore: 40
                score: 10
        dynamicContent:
          differenceDescription: Found 1/2 matching chunks. Missing 1 chunks from dynamic content.
          score: 50
          staticLength: 9738
          dynamicLength: 4834
          isPotentiallyBlocked: false
        contentAnalysis:
          overallScore: 68
          analysis:
            semanticRepetition:
              score: 70
              description: >-
                Key ideas are repeated appropriately, but some terms recur
                without variation. Reinforce semantic signals by adding natural
                variants of the most frequent phrases.
            summaryBlock:
              score: 50
              description: >-
                There is no explicit 'Key Takeaways' recap. Add a short summary
                block (3–5 bullets) covering the problem, approach, top results,
                and primary recommendation.
            clarityAndAssertiveness:
              score: 70
              description: >-
                Some hedged phrasing reduces authority. Replace hedges with
                direct claims backed by data and use active voice.
            specificity:
              score: 60
              description: >-
                Numeric outcomes are present but lack context such as baselines,
                sample sizes, and timelines. Add concrete ranges and dates to
                strengthen credibility.
        crawlerIdentity: ChatGPT-User
        sendOtterlyHeader: false
    PublicApiValidationErrorResponse:
      type: object
      properties:
        message:
          type: string
        target:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
      required:
        - message
        - target
        - errors
      example:
        message: Validation failed
        target: query
        errors:
          - path: country
            message: Required
            code: invalid_type
    PublicApiErrorResponse:
      type: object
      properties:
        message:
          type: string
      required:
        - message
      example:
        message: Report not found
    PublicApiContentCheckStructuralAnalysis:
      type: object
      properties:
        overallScore:
          type: number
          description: Weighted overall structural score (0–100).
        categoryScores:
          type: object
          properties:
            structure:
              type: number
            content:
              type: number
            metadata:
              type: number
            technical:
              type: number
          required:
            - structure
            - content
            - metadata
            - technical
          description: Normalized score (0–100) per category.
        structure:
          type: object
          properties:
            score:
              type: number
            breakdown:
              type: object
              properties:
                headingHierarchy:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                semanticElements:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                listsAndStructuredContent:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                paragraphStructure:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                navigationStructure:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
              required:
                - headingHierarchy
                - semanticElements
                - listsAndStructuredContent
                - paragraphStructure
                - navigationStructure
          required:
            - score
            - breakdown
        content:
          type: object
          properties:
            score:
              type: number
            breakdown:
              type: object
              properties:
                richContentElements:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                contentVariety:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
              required:
                - richContentElements
                - contentVariety
          required:
            - score
            - breakdown
        metadata:
          type: object
          properties:
            score:
              type: number
            breakdown:
              type: object
              properties:
                titleTag:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                metaDescription:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                structuredData:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                openGraphTags:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
              required:
                - titleTag
                - metaDescription
                - structuredData
                - openGraphTags
          required:
            - score
            - breakdown
        technical:
          type: object
          properties:
            score:
              type: number
            breakdown:
              type: object
              properties:
                validHtmlStructure:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                mobileFriendlyIndicators:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                robotsAndCrawling:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
                languageDeclaration:
                  type: object
                  properties:
                    score:
                      type: number
                      description: Points awarded for this sub-check.
                    maxScore:
                      type: number
                      description: Maximum points available for this sub-check.
                  required:
                    - score
                    - maxScore
              required:
                - validHtmlStructure
                - mobileFriendlyIndicators
                - robotsAndCrawling
                - languageDeclaration
          required:
            - score
            - breakdown
      required:
        - overallScore
        - categoryScores
        - structure
        - content
        - metadata
        - technical
      description: >-
        How well the page is structured for machine reading, with per-category
        breakdowns.
    PublicApiContentCheckDynamicContent:
      type: object
      properties:
        score:
          type: number
          description: >-
            Share of the static content that is still present after JavaScript
            rendering (0–100).
        differenceDescription:
          type: string
          description: >-
            Human-readable summary of how the rendered content compares to the
            static HTML.
        staticLength:
          type: number
          description: Character length of the content available without JavaScript.
        dynamicLength:
          type: number
          description: Character length of the content added by JavaScript rendering.
        isPotentiallyBlocked:
          type: boolean
          description: >-
            True when the page appears to gate its content behind JavaScript in
            a way that may hide it from crawlers.
      required:
        - score
        - differenceDescription
      description: >-
        Comparison of the static (no-JS) page against the JavaScript-rendered
        page.
    PublicApiContentCheckContentAnalysis:
      type: object
      properties:
        analysis:
          type: object
          additionalProperties:
            type: object
            properties:
              description:
                type: string
                description: Explanation of the finding and how to improve it.
              score:
                type: number
                description: Score for this dimension (0–100).
            required:
              - description
              - score
          description: >-
            Per-dimension content readiness analysis. Keys are check names such
            as `semanticRepetition`, `summaryBlock`, `sectionIntegrity`,
            `modularContentEnhancements`, `externalLinkSuggestions`,
            `illustrationOpportunities`, `jargonAndMetaphors`,
            `questionAnswerReadability`, `paragraphCohesion`,
            `toneAndLanguageCheck`, `clarityAndAssertiveness`,
            `acronymsAndTerminology`, and `specificity`. Each value has a
            `description` and a `score`.
        overallScore:
          type: number
          description: Overall AI content-readiness score (0–100).
      required:
        - analysis
        - overallScore
      description: >-
        AI content-readiness analysis: per-dimension scores and recommendations
        for making the page easier for AI to quote and understand.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Provide your API key as a Bearer token: `Authorization: Bearer
        YOUR_API_KEY`.

````