apyhub
Back
ARTIFICIAL INTELLIGENCE · SEO

Readability Scores API

Hosted on ApyHub

What it does

The Readability Score API measures how easy a piece of text is to read. Send plain text and get back a standard readability score, the reading level it corresponds to, and statistics like word count, sentence length and reading time, so you can check copy against your writing guidelines before it goes live.

It is one POST endpoint. Send the text to score and set language to english, the default, or german. English text is scored with the Flesch Reading Ease formula, the most widely used readability test, and German text with the Wiener Sachtextformel, the standard formula for German. The result tells you the score, the grade class it falls into, such as "8th & 9th grade", a plain-language class_label like "Plain English. Easily understood by 13- to 15-year-old students", and a label showing whether the text meets a standard readability threshold.

Alongside the score you get the text statistics behind it: words, sentences, characters and paragraphs, the average length of words, sentences and paragraphs, and estimated reading_time and speaking_time in seconds. Long average sentence length is usually the first thing to fix when a score comes back low.

Common uses include checking help articles, documentation and product copy against a target reading level, scoring AI-generated content before it is published, flagging legal, health or public sector text that needs to be written in plain language, comparing drafts to see whether an edit made the text easier to read, and showing a readability score inside your own CMS or editor.

To score documents instead of plain text, use the Readability Scores Documents API. For simpler word and sentence counts, try the Basic Text Analysis API, and if you do not know whether the text is English or German, check it first with the Language Detection API.

You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and score your own text before you commit.

The API is also available through ApyHub MCP, so AI agents can check the readability of what they write and revise it before publishing.

POST
Score readability of plain text
https://api.eu.apyhub.com/apyhub/score-readability-of-plain-text

QUICKSTART

GUIDE

Quickstart

Send some plain text to get a readability score back.

curl -X POST "https://api.eu.apyhub.com/apyhub/score-readability-of-plain-text" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text":"The quick brown fox jumps over the lazy dog. This sentence is simple and easy to read. Children enjoy reading short books."}'

What you'll get back

Returns a JSON object with a data object. Inside data, stats contains text metrics such as words, sentences, characters, paragraphs, reading_time, speaking_time, avg_word_length, avg_sentence_length, and avg_paragraph_length, and flesh_kincaid_reading_ease contains the readability result for English text.

{
  "data": {
    "stats": {
      "words": 95,
      "sentences": 8,
      "characters": 512,
      "paragraphs": 2,
      "reading_time": 6.49,
      "speaking_time": 38,
      "avg_word_length": 5.39,
      "avg_sentence_length": 11.88,
      "avg_paragraph_length": 4
    },
    "flesh_kincaid_reading_ease": {
      "class": "8th & 9th grade",
      "label": false,
      "level": 6.49,
      "score": 65.74,
      "class_label": "Plain English. Easily understood by 13- to 15-year-old students."
    }
  }
}
TRY ITLIVE · 250 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Raw text to analyse.
Scoring algorithm to use. english returns Flesch-Kincaid Reading Ease; german returns Wiener Sachtextformel.

About this endpoint

What it does

Scores raw plain text for readability and returns text statistics plus a readability result for the selected language algorithm. The request body must include the text to analyze, and may include language to choose between the English and German scoring methods.

Request Body

ParameterTypeMandatoryDescription
textStringYesRaw text to analyse.
languageENUMNoScoring algorithm to use. Allowed values: english, german. Default: english. english returns Flesch-Kincaid Reading Ease; german returns Wiener Sachtextformel.

Response

Returns a JSON object with a data object field. Inside data, stats is an object with text statistics, and the readability result is returned as either flesh_kincaid_reading_ease or wiener_sachtextformel, depending on the selected algorithm.

ParameterTypeMandatoryDescription
dataObjectYesResponse wrapper object. Contains stats and one readability result object.
data.statsObjectYesText statistics object.
data.stats.wordsIntegerNoNumber of words.
data.stats.sentencesIntegerNoNumber of sentences.
data.stats.charactersIntegerNoNumber of characters.
data.stats.paragraphsIntegerNoNumber of paragraphs.
data.stats.reading_timeNumberNoEstimated reading time in seconds.
data.stats.speaking_timeNumberNoEstimated speaking time in seconds.
data.stats.avg_word_lengthNumberNoAverage word length.
data.stats.avg_sentence_lengthNumberNoAverage sentence length.
data.stats.avg_paragraph_lengthNumberNoAverage paragraph length.
data.flesh_kincaid_reading_easeObjectNoReadability result returned for language: english. Contains class, label, level, score, and class_label.
data.flesh_kincaid_reading_ease.classStringNoReadability class.
data.flesh_kincaid_reading_ease.labelBooleanNoWhether the text meets a standard readability threshold.
data.flesh_kincaid_reading_ease.levelNumberNoReadability level.
data.flesh_kincaid_reading_ease.scoreNumberNoFlesch-Kincaid Reading Ease score.
data.flesh_kincaid_reading_ease.class_labelStringNoHuman-readable class label.
data.wiener_sachtextformelObjectNoReadability result returned for language: german. Contains class, label, level, score, and class_label.
data.wiener_sachtextformel.classStringNoReadability class.
data.wiener_sachtextformel.labelBooleanNoWhether the text meets a standard readability threshold.
data.wiener_sachtextformel.levelNumberNoReadability level.
data.wiener_sachtextformel.scoreNumberNoWiener Sachtextformel score.
data.wiener_sachtextformel.class_labelStringNoHuman-readable class label.

Notes

The response schema is a oneOf: the top-level shape is the same, but the readability result field changes with the selected language. Read data.flesh_kincaid_reading_ease for English scoring, or data.wiener_sachtextformel for German scoring.

Body

Name
Type
Description
bodyREQUIRED
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.