250 atoms
Base tier


This API calculates the readability score of text, providing insights into their ease of comprehension.
It's a valuable tool for assessing the readability of text, making it useful for content creators, educators, and researchers. Whether you're working on educational materials, marketing content, or research papers, this API helps you gauge how accessible your text is to different audiences.
A successful request returns the readability score, grade level, and other relevant metrics. In case of an issue, the response includes an error code and a message to assist in troubleshooting

API Playground


Extract Readability Score

Request example

curl --location --request POST 'https://api.apyhub.com/extract/text/readability-score' \
--header 'apy-token: {{token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "Once upon a time in the quaint town of Willowbrook, nestled amidst rolling green hills, lived a young woman named Emily. Every morning, she would wake up to the gentle chime of her antique alarm clock and begin her routine: stretching her limbs, brushing her teeth with minty precision, and brewing a steaming cup of coffee that filled the air with its comforting aroma. Her days followed a predictable pattern as she strolled to the cozy bakery on Oak Street, exchanging warm greetings with familiar faces along the way.\n\n Inside the bakery, she would order a flaky croissant and chat briefly with the friendly baker, Mr. Thompson, who never failed to share a new tale from the town's history. As the sun reached its peak, Emily made her way to the local library, losing herself in the pages of classic novels and enriching her mind with knowledge from various non-fiction books. Lunchtime meant a visit to the inviting park, where she spread out a blanket and enjoyed a simple yet delightful picnic of sandwiches and fresh fruits. Afternoons were for her part-time job at the charming flower shop, where she artfully arranged bouquets, adding vibrant colors to people's lives.\n\n Evenings were a peaceful affair as she prepared a hearty meal, savoring each bite, and spent quality time with her cherished cat, Whiskers, who never ceased to entertain her with amusing antics. Nighttime brought serenity as Emily gazed at the starry sky from her bedroom window before drifting off to sleep, knowing that the next day would be much like the one before, filled with comforting rituals and familiar faces. And so, life continued in the unassuming town of Willowbrook, where the days were marked by routine, and the simplicity of everyday existence brought contentment to Emily's heart."
Method: POST
Content Type: application/json
Request Body
textStringYesThe text or content for which you want to calculate the readability score metics to give text in multiple paragraph add new-lines ("\n\n")
data.flesh_kincaid_reading_ease.scoreNumberThe Flesch Reading Ease score ranges from 1 to 100, The Flesh Kincaid Reading Ease Table is an example of values. While the maximum score is 121.22, there is no limit on how low the score can be. A negative score is valid.
data.flesh_kincaid_reading_ease.levelNumberThe Flesch-Kincaid Grade of the given text.
data.flesh_kincaid_reading_ease.labelBooleanIf the Flesch Reading Ease score is greater then 70 it is true else false
data.flesh_kincaid_reading_ease.classStringDescribes the readability class or category, such as College for complex texts, the Flesh Kincaid Reading Ease Table contains all possible values.
data.flesh_kincaid_reading_ease.class_labelStringProvides a descriptive label for the readability class,the Flesh Kincaid Reading Ease Table contains all possible values like Difficult to read.
data.stats.paragraphsNumberThe total number of paragraphs in the text.
data.stats.sentencesNumberThe total count of sentences in the text.
data.stats.wordsNumberThe total number of words in the text.
data.stats.charactersNumberThe total character count in the text.
data.stats.reading_timeNumberThe estimated time in seconds it would take to read the entire text.
data.stats.speaking_timeNumberThe estimated time in seconds it would take to verbally speak or present the text.
data.stats.avg_word_lengthNumberAverage length of words in the text (measured in characters).
data.stats.avg_sentence_lengthNumberAverage length of sentences in the text (typically measured in words).
data.stats.avg_paragraph_lengthNumberAverage length of paragraphs in the text (often measured in sentences or words).
Flesh Kincaid Reading Ease Table
ScoreClassClass Label
Greater than 905th gradeVery easy to read. Easily understood by an average 11-year-old student.
90.0–80.06th gradeEasy to read. Conversational English for consumers.
80.0–70.07th gradeFairly easy to read.
70.0–60.08th & 9th gradePlain English. Easily understood by 13- to 15-year-old students.
60.0–50.010th to 12th gradeFairly difficult to read.
50.0–30.0CollegeDifficult to read.
30.0–10.0College graduateVery difficult to read. Best understood by university graduates.
Less than 10.0ProfessionalExtremely difficult to read. Best understood by university graduates.
Sample Response
"data": {
"flesh_kincaid_reading_ease": {
"score": 38.62,
"level": 11.8,
"label": false,
"class": "College",
"class_label": "Difficult to read."
"stats": {
"paragraphs": 3,
"sentences": 17,
"words": 267,
"characters": 1555,
"reading_time": 22.84,
"speaking_time": 106.8,
"avg_word_length": 5.82,
"avg_sentence_length": 15.71,
"avg_paragraph_length": 5.67

HTTP Response Codes

The method may return one of the following HTTP status codes:
Status CodeDescription
200The request was successful.
401Required authentication information is either missing or not valid for the resource.
400Invalid input - the image urls are corrupt or not accessible.
500If any unexpected error occurs while processing the request.


All requests to ApyHub services need to be authenticated, currently we support tokens or basic authentication mechanisms. You can generate and view your existing credentials from workspace settings (on the left side of the navbar) and go to applications.
Points to note:
  • Credential secrets are generated on the fly and are not stored in plain text, so on generating a credential please save the secrets somewhere safe.
  • Use the apy-token as the header parameter to pass the token.
  • Use the Authorization header to send the basic authentication credentials.

Error codes

"error": {
"code": 105,
"message": "Invalid URL"
To search for a specific error code, enter the code in the search box below. Alternatively, you can click on the button to view a complete list of all error codes.