Quran.Foundation Documentation Portal
Request access, pick the right integration path, and build with Quran Foundation APIs using the official docs, SDK, and starter app.
Next.js starter
Production-shaped app in one command
npx @quranjs/create-app@latest my-quran-app --template next --package-manager npm --install --git --sdk-source npm --yesIncludes OAuth2, reader, search, notes, bookmarks, and SDK wiring. Use this for the fastest working app. If you already have your own UI, start with the JavaScript SDK path below.
Pick your path
Start with the route that matches your app
Request access first. Then choose by what you need: content without login, SDK clients in your own app, signed-in user data, or manual OAuth2 implementation.
Required first
Request access
Get a client ID, confirm redirect URIs, and request the scopes your app needs before implementation work starts.
Need Quran data without login?
Content APIs
Read verses, chapters, translations, tafsir, audio, and search with app credentials. No Quran.com user account or OAuth user session is involved.
Call from your backend with the SDK or raw HTTP.
GET /content/api/v4/chaptersStart Content QuickstartPrefer typed clients over raw HTTP?
JavaScript SDK
Use the SDK when you are building in JavaScript or TypeScript and want typed clients for Content, Search, OAuth helpers, and User APIs.
Use the server entrypoint for backend/API calls and the public entrypoint only for browser or mobile-safe OAuth helpers.
import { createServerClient } from "@quranjs/api/server";Open JavaScript SDKNeed signed-in user data?
User APIs
Add Quran.com user features to an existing app: bookmarks, collections, notes, reading progress, goals, and preferences.
Requires OAuth login/session; call from your backend with the SDK or raw HTTP.
GET /auth/v1/bookmarksOpen User APIs QuickstartNeed to implement auth yourself?
Manual OAuth2
Use this for custom token handling, non-JS stacks, mobile apps, or debugging OAuth2/OIDC behavior.
Protocol guide for PKCE, token exchange, refresh, scopes, and OIDC validation.
POST /oauth2/tokenOpen OAuth2 Tutorial