QuranEnc.com API

For AI agents & tools: machine-readable versions of these docs are available as an OpenAPI 3.1 spec (openapi.json) and a Markdown summary at llms.txt. No authentication is required and CORS is open.

Quran font & Uthmanic text

To display the Arabic Quran text correctly alongside the translations, we recommend downloading Hafs_20.zip. It contains the Uthmanic Hafs font v20 by the King Fahd Glorious Quran Printing Complex (KFGQPC) and the Uthmanic Hafs Quran text that matches this font. Older or newer versions of the font may not render this text correctly, so use the font and the text together.

Package contents:

Hafs_20.ttf: Uthmanic Hafs font v20 (TrueType, for desktop / mobile apps)

Hafs_20.woff2: the same font in WOFF2 format (for websites)

Quran_text.csv: Uthmanic Hafs Quran text that matches the font, one row per aya (6236 rows). Columns: "id", "sura", "aya", "uthmani"

Download: Hafs_20.zip (~550 KB)

Available translations

GET / https://quranenc.com/api/v1/translations/list/[[{language}]]/?localization={language_iso_code}

Description:  Lists available translations. If the optional path param {language} is provided (ISO code) the list is filtered to that language only.

language (optional path): Filter by a specific language ISO code (see available languages / iso codes). If omitted, all translations are returned.

localization (optional query): Defaults to en. Localizes "title" & "description" into the specified locale (see available locales)

Returns: JSON object {"translations":[...]}. Each item includes "key", "direction", "language_iso_code", "version", "last_update" (timestamp), "title", "description" (localized), plus download links ("database_url", "pdf_url", "epub_url", ...).

Examples:
/api/v1/translations/list
/api/v1/translations/list/es (Spanish only, default English localization)
/api/v1/translations/list/es?localization=es (Spanish list localized in Spanish)

Sura translation

GET / https://quranenc.com/api/v1/translation/sura/{translation_key}/{sura_number}

Description:  Returns all ayat of a sura for the specified translation.

Parameters:

translation_key: Translation key (e.g. english_saheeh)

sura_number: 1–114

Returns: JSON object {"result":[...]}: each item has "id", "sura", "aya", "arabic_text", "translation", "footnotes".

Aya translation

GET / https://quranenc.com/api/v1/translation/aya/{translation_key}/{sura_number}/{aya_number}

Description:  Returns a single aya translation.

Parameters:

translation_key: Translation key

sura_number: 1–114

aya_number: 1–… (within sura)

Returns: JSON object {"result":{...}} with "id", "sura", "aya", "arabic_text", "translation", "footnotes". Add ?without_footnotes_symbols=1 to strip footnote markers like [1] from "translation".

Sura names localization

GET / https://quranenc.com/api/v1/translations/sowar_locales

Description:  Lists the language ISO codes for which localized sura names are available.

Returns: JSON object: "locales" — array of ISO codes, e.g. {"locales":["ar","en","fr", ...]}.

GET / https://quranenc.com/api/v1/translations/sowar_names?iso_code={language_iso_code}

Description:  Returns the names of all 114 suras in the specified language.

Parameters:

iso_code (optional query): Defaults to en. One of the codes returned by sowar_locales.

Returns: JSON object keyed by sura number (1–114), each value is the localized sura name. Returns HTTP 400 {"error":"Invalid locale"} if names are not available for the given code.

{
  "1": "Al-Fātihah",
  "2": "Al-Baqarah",
  "3": "Āl-‘Imrān",
  ...
  "114": "An-Nās"
}

Audio translations

Base URL / https://d.quranenc.com/data/audio/{translation_key}/{sura_3digits}{aya_3digits}.mp3

Description:  Audio files for each aya are served as static MP3 files. The URL is constructed from the translation key and the sura/aya numbers each zero-padded to 3 digits.

Parameters:

translation_key: One of the keys listed above.

sura_3digits: Sura number zero-padded to 3 digits (001–114)

aya_3digits: Aya number zero-padded to 3 digits (001–…)

Returns: MP3 audio file (audio/mpeg). Returns HTTP 404 if the file does not exist for the given translation/sura/aya.

URL construction example (JavaScript):

function audioUrl(translationKey, sura, aya) {
  const s = String(sura).padStart(3, '0');
  const a = String(aya).padStart(3, '0');
  return `https://d.quranenc.com/data/audio/${translationKey}/${s}${a}.mp3`;
}

// Sura 1, Aya 1 — Chinese Suliman
audioUrl('chinese_suliman', 1, 1);
// → "https://d.quranenc.com/data/audio/chinese_suliman/001001.mp3"

// Sura 18, Aya 110
audioUrl('chinese_suliman', 18, 110);
// → "https://d.quranenc.com/data/audio/chinese_suliman/018110.mp3"

Add a note

POST / https://quranenc.com/api/v1/translations/note

Description:  Submit a user note / feedback on a specific Aya translation.

Request body (JSON or form-data):

translation_key*: string

sura*: 1–114

aya*: 1–…

note*: string (content)

version: optional translation version

suggested_translation: optional alternative text

name: optional author name

email: optional author email

source: optional app name or domain name

* required

Returns:
201: {"status":1}
400: {"status":0,"error":"Missing required parameters"}
500: {"status":0,"error":"Failed to save note"}

Example (JSON):

{
  "translation_key":"english_saheeh",
  "sura":1,
  "aya":7,
  "note":"This is my note",
  "version":"1.0.9",
  "name":"Mostafa",
  "email":"[email protected]",
  "source":"MyQuranApp"
}

Example (form-data):

translation_key=english_saheeh
sura=1
aya=7
note=This is my note
version=1.0.9
name=Mostafa
[email protected]
source=MyQuranApp
:
0:00 0:00