apyhub
SEO · SMART GENERATION

Readability Scores API

What it does

Readability Score analyzes plain text and returns readability metrics you can use to judge how easy a document is to read. Send raw text in the body.text field, and choose body.language as english or german to select the scoring algorithm.

The response includes text statistics such as words, sentences, characters, paragraphs, estimated reading_time, estimated speaking_time, and average length measures like avg_word_length, avg_sentence_length, and avg_paragraph_length. It also returns a readability result object for the chosen language: flesh_kincaid_reading_ease for English or wiener_sachtextformel for German.

Use Readability Score to review help articles, product copy, onboarding guides, or any user-facing text before publication. The returned class, level, score, label, and class_label make it easier to compare drafts, enforce content standards, or surface content that is too dense for your audience.

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

QUICKSTART

GUIDE

Quickstart

Send some plain text to score its readability.

curl -X POST "https://api.eu.apyverse.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.","language":"english"}'

What you'll get back

Returns a JSON object with a data object. Inside data, stats contains text metrics like words, sentences, characters, paragraphs, and reading/speaking timing, and the readability result is returned as either flesh_kincaid_reading_ease or wiener_sachtextformel depending on the language.

{
  "data": {
    "stats": {
      "words": 95,
      "sentences": 8,
      "characters": 512,
      "paragraphs": 2
    },
    "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 object. The algorithm used is controlled by the request body language field, which switches between English and German scoring.

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, the response includes a stats object with text metrics, and one readability result object: flesh_kincaid_reading_ease for English scoring or wiener_sachtextformel for German scoring.

ParameterTypeMandatoryDescription
dataObjectNoResponse wrapper containing stats and one readability result object.
data.statsObjectNoText statistics for the analysed input.
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 english scoring. 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.scoreNumberNoReadability score.
data.flesh_kincaid_reading_ease.class_labelStringNoHuman-readable class label.
data.wiener_sachtextformelObjectNoReadability result returned for german scoring. 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.scoreNumberNoReadability score.
data.wiener_sachtextformel.class_labelStringNoHuman-readable class label.

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.