---
title: "Get a content check"
method: GET
path: "/v1/audits/geo/content-checks/{checkId}"
tags: ["Audits"]
---

# Get a content check

`GET /v1/audits/geo/content-checks/{checkId}`

## Path parameters

- `checkId` string, required — Content check identifier.

## Response `200`

The content check.

- PublicApiContentCheck
  - `id` string, required
  - `workspaceId` string, required
  - `url` string, required
  - `status` 'pending' | 'completed' | 'failed', required
  - `createdDate` string, required
  - `crawlerIdentity` 'ChatGPT-User' | 'OAI-SearchBot' | 'PerplexityCrawler' | 'GoogleBot' — The crawler identity that was impersonated when fetching the URL.
  - `sendOtterlyHeader` boolean — Whether the Otterly identifying header was sent when fetching the URL.
  - `structuralAnalysis` PublicApiContentCheckStructuralAnalysis — How well the page is structured for machine reading, with per-category breakdowns.
    - `overallScore` number, required — Weighted overall structural score (0–100).
    - `categoryScores` object, required — Normalized score (0–100) per category.
      - `structure` number, required
      - `content` number, required
      - `metadata` number, required
      - `technical` number, required
    - `structure` object, required
      - `score` number, required
      - `breakdown` object, required
        - `headingHierarchy` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `semanticElements` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `listsAndStructuredContent` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `paragraphStructure` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `navigationStructure` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
    - `content` object, required
      - `score` number, required
      - `breakdown` object, required
        - `richContentElements` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `contentVariety` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
    - `metadata` object, required
      - `score` number, required
      - `breakdown` object, required
        - `titleTag` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `metaDescription` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `structuredData` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `openGraphTags` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
    - `technical` object, required
      - `score` number, required
      - `breakdown` object, required
        - `validHtmlStructure` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `mobileFriendlyIndicators` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `robotsAndCrawling` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
        - `languageDeclaration` object, required
          - `score` number, required — Points awarded for this sub-check.
          - `maxScore` number, required — Maximum points available for this sub-check.
  - `dynamicContent` PublicApiContentCheckDynamicContent — Comparison of the static (no-JS) page against the JavaScript-rendered page.
    - `score` number, required — Share of the static content that is still present after JavaScript rendering (0–100).
    - `differenceDescription` string, required — Human-readable summary of how the rendered content compares to the static HTML.
    - `staticLength` number — Character length of the content available without JavaScript.
    - `dynamicLength` number — Character length of the content added by JavaScript rendering.
    - `isPotentiallyBlocked` boolean — True when the page appears to gate its content behind JavaScript in a way that may hide it from crawlers.
  - `contentAnalysis` PublicApiContentCheckContentAnalysis — AI content-readiness analysis: per-dimension scores and recommendations for making the page easier for AI to quote and understand.
    - `analysis` object, required — 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` number, required — Overall AI content-readiness score (0–100).

## Other responses

- `400` — Validation failed.
- `401` — Unauthorized.
- `403` — Forbidden.
- `404` — Content check not found.

---

[API](https://skmtc.net/otterly/apis/otterly-public-api.md) · [All operations](https://skmtc.net/otterly/apis/otterly-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/otterly/otterly-public-api/revisions/49f12c5f26c7/schema)
