dotCMS Accessibility Checker API

Endpoints that perform operations related to validating accessibility in content.

Operations 4

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v1/achecker/guidelines List the accessibility guidelines available · Retrieves Accessibility Guidelines #
Ask an LLM
“Which accessibility guidelines, like WCAG levels, can content be validated against?”
“What standards does the accessibility checker support?”
Tell an agent
List the available accessibility guidelines.
Show the guidelines I can validate content against.
POST /api/v1/achecker/_validate Validate content against accessibility guidelines · Validates content #
Ask an LLM
“How do I check a piece of HTML content for accessibility problems?”
“Can I validate content against more than one accessibility guideline at once?”
Tell an agent
Validate this content against the selected accessibility guidelines.
Run an accessibility check on this HTML snippet and list the issues.
POST /api/v1/page-scanner/a11y/check Scan a live page URL for accessibility issues · A11y check #
Ask an LLM
“Can I run an accessibility scan on a published page by its URL?”
“How do I find accessibility errors on a live page?”
Tell an agent
Scan {url} for accessibility issues.
Run the page scanner's a11y check on {url}.
POST /api/v1/page-scanner/geo/check Scan a page URL for generative engine optimization · Geo check #
Ask an LLM
“How well is a page optimized for AI answer engines (GEO)?”
“Can I run a GEO check on a page by URL?”
Tell an agent
Run a GEO check on {url}.
Scan page {url} for generative engine optimization issues.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dotcms:dotcms-accessibility-checker-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dotcms-accessibility-checker-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Accessibility Checker API
  version: '3'
  description: Endpoints that perform operations related to validating accessibility in content.
servers:
- url: /
  description: dotCMS Server
tags:
- name: Accessibility Checker
  description: Endpoints that perform operations related to validating accessibility in content.
paths:
  /api/v1/achecker/guidelines:
    get:
      tags:
      - Accessibility Checker
      summary: Retrieves Accessibility Guidelines
      description: Returns the list of available Accessibility Guidelines that are used to validate content.
      operationId: getAccessibilityGuidelines
      responses:
        '200':
          description: Guideline list retrieved successfully
          content:
            application/json: {}
        '500':
          description: Internal Server Error
  /api/v1/achecker/_validate:
    post:
      tags:
      - Accessibility Checker
      summary: Validates content
      description: Validates the given content against the one or more Accessibility Guidelines.
      operationId: postValidateContent
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                empty:
                  type: boolean
              additionalProperties:
                type: string
        required: true
      responses:
        '200':
          description: Content validated successfully
          content:
            application/json:
              example: "{\n    \"entity\": {\n        \"errors\": [\n            {\n                \"check\": {\n                    \"check_id\": 98,\n                    \"confidence\": 2,\n                    \"confidenceEnum\": \"POTENTIAL\",\n                    \"decision_fail\": \"Not all abbreviations are marked with the <code>abbr</code> element.\",\n                    \"decision_pass\": \"All abbreviations are marked with the <code>abbr</code> element.\",\n                    \"description\": \"If <code>body</code> element content is greater than 10 characters (English) this error will be generated.\",\n                    \"err\": \"Abbreviations may not be marked with <code>abbr</code> element.\",\n                    \"func\": \"return (BasicFunctions::getPlainTextLength() <= 10);\",\n                    \"how_to_repair\": \"\",\n                    \"html_tag\": \"body\",\n                    \"lang\": \"en\",\n                    \"long_description\": null,\n                    \"name\": \"Abbreviations must be marked with <code>abbr</code> element.\",\n                    \"note\": \"\",\n                    \"open_to_public\": 1,\n                    \"question\": \"Are there any abbreviations in the document that are not marked with the <code>abbr</code> element?\",\n                    \"rationale\": \"_RATIONALE_98\",\n                    \"repair_example\": \"\",\n                    \"search_str\": null,\n                    \"test_expected_result\": \"1. All abbreviations are expected to be marked with a valid <code>abbr</code> element.\",\n                    \"test_failed_result\": \"1. Mark all abbreviations with a valid <code>abbr</code> element.\",\n                    \"test_procedure\": \"1. Check the document for any text abbreviations.\\\\n2. If an abbreviation is found, check if it is properly marked with the <code>abbr</code> element.\",\n                    \"user_id\": 0\n                },\n                \"col_number\": 110,\n                \"cssCode\": null,\n                \"htmlCode\": \"<body> Adventure travel done right  Wherever you want to go, whatever you want to get into, we’ve go...\",\n                \"image\": null,\n                \"imageAlt\": null,\n                \"line_number\": 0,\n                \"success\": false\n            },\n            ...\n            ...\n        ],\n        \"lang\": \"en\",\n        \"results\": [\n            {\n                \"check\": {\n                    \"check_id\": 29,\n                    \"confidence\": 0,\n                    \"confidenceEnum\": \"KNOWN\",\n                    \"decision_fail\": \"\",\n                    \"decision_pass\": \"\",\n                    \"description\": \"Each document must contain a valid <code>doctype</code> declaration.\",\n                    \"err\": \"<code>doctype</code> declaration missing.\",\n                    \"func\": \"return (BasicFunctions::getNumOfTagInWholeContent(\\\\\\\"doctype\\\\\\\") > 0);\",\n                    \"how_to_repair\": \"Add a valid <code>doctype</code> declaration to the document.\",\n                    \"html_tag\": \"html\",\n                    \"lang\": \"en\",\n                    \"long_description\": null,\n                    \"name\": \"HTML content has a valid <code>doctype</code> declaration.\",\n                    \"note\": \"\",\n                    \"open_to_public\": 1,\n                    \"question\": \"\",\n                    \"rationale\": \"\",\n                    \"repair_example\": \"\",\n                    \"search_str\": null,\n                    \"test_expected_result\": \"1. HTML content has a valid <code>doctype</code> declaration.\",\n                    \"test_failed_result\": \"1. Add a valid <code>doctype</code> declaration to the document.\",\n                    \"test_procedure\": \"1. Check for the presence of a <code>doctype</code> declaration at the start of the document.\\\\n2. Check the content of the <code>doctype</code> declaration.\",\n                    \"user_id\": 0\n                },\n                \"col_number\": 110,\n                \"cssCode\": null,\n                \"htmlCode\": \"<html lang=\\\"en\\\" xml:lang=\\\"en\\\">     <body> Adventure travel done right  Wherever you want to go, what...\",\n                \"image\": null,\n                \"imageAlt\": null,\n                \"line_number\": 0,\n                \"success\": true\n            },\n            ...\n            ...\n        ]\n    },\n    \"errors\": [],\n    \"i18nMessagesMap\": {},\n    \"messages\": [],\n    \"pagination\": null,\n    \"permissions\": []\n}"
        '400':
          description: Bad Request
        '415':
          description: Unsupported Media Type
        '500':
          description: Internal Server Error
  /api/v1/page-scanner/a11y/check:
    post:
      tags:
      - Accessibility Checker
      operationId: a11yCheck
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageScanCheckForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: A11y check
      x-summary-source: derived
  /api/v1/page-scanner/geo/check:
    post:
      tags:
      - Accessibility Checker
      operationId: geoCheck
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageScanCheckForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: Geo check
      x-summary-source: derived
components:
  schemas:
    PageScanCheckForm:
      type: object
      properties:
        url:
          type: string