User-related API environment
Pre-live user-related API docs
These pages describe the Pre-live user-related API stack.
Use pre-live OAuth credentials, pre-live API base URLs, and pre-live app URLs when following this documentation. Keep your OAuth flow, API requests, callback URLs, and manual testing within the pre-live environment.
- Use prelive.quran.com for auth-related testing.
- Use prelive.quranreflect.org for Quran Reflect paths where applicable.
- Do not mix production sessions or production user data with pre-live testing.
Add user bookmark
Add or update a bookmark by details. Omit isReading to create or update a regular standalone bookmark. Set isReading=true to set the user's singleton reading bookmark and replace any previous reading bookmark. Set isReading=false or null to mark this bookmark as non-reading. For Quran.com-style saved or favorite ayah bookmarks, use POST /v1/collections/__default__/bookmarks.
Request Body
The Surah number.
Possible values: [ayah]
Default value: ayah
The bookmark type.
The Ayah number to be added.
Reading bookmark flag. Set true to set the user's current reading bookmark. Set false or null to mark this bookmark as non-reading. Omit this field to create or update a regular bookmark.
Possible values: [1, 2, 3, 4, 5, 6, 7, 11, 19]
The id of the Mushaf being used.
1 = QCFV2
2 = QCFV1
3 = Indopak
4 = UthmaniHafs
5 = KFGQPCHAFS
6 = Indopak15Lines
7 = Indopak16Lines
11 = Tajweeed
19 = QCFTajweedV4 Preferred field name.
Possible values: [1, 2, 3, 4, 5, 6, 7, 11, 19]
The id of the Mushaf being used.
1 = QCFV2
2 = QCFV1
3 = Indopak
4 = UthmaniHafs
5 = KFGQPCHAFS
6 = Indopak15Lines
7 = Indopak16Lines
11 = Tajweeed
19 = QCFTajweedV4 Legacy alias for mushafId.
Surah, Juz or page number.
Possible values: [juz, page, surah]
The bookmark type.
Reading bookmark flag. Set true to set the user's current reading bookmark. Set false or null to mark this bookmark as non-reading. Omit this field to create or update a regular bookmark.
Possible values: [1, 2, 3, 4, 5, 6, 7, 11, 19]
The id of the Mushaf being used.
1 = QCFV2
2 = QCFV1
3 = Indopak
4 = UthmaniHafs
5 = KFGQPCHAFS
6 = Indopak15Lines
7 = Indopak16Lines
11 = Tajweeed
19 = QCFTajweedV4 Preferred field name.
Possible values: [1, 2, 3, 4, 5, 6, 7, 11, 19]
The id of the Mushaf being used.
1 = QCFV2
2 = QCFV1
3 = Indopak
4 = UthmaniHafs
5 = KFGQPCHAFS
6 = Indopak15Lines
7 = Indopak16Lines
11 = Tajweeed
19 = QCFTajweedV4 Legacy alias for mushafId.
- 200
- 400
- 401
- 403
- 404
- 422
- 429
- 500
- 502
- 503
- 504
Request has been handled successfully.
Response Headers
X-Mutation-At string
Unix timestamp (milliseconds) of the latest mutation for the user. Clients should store this value and include it in subsequent mutation requests for optimistic concurrency control.
Schema
data object nullable
Total user-visible collection memberships for this bookmark, including Favorites when isInDefaultCollection=true.
{
"success": true,
"data": {
"id": "cmpcenu2t0005mc4e9ol69rzu",
"createdAt": "2023-01-21T07:28:13.023Z",
"type": "ayah",
"key": 1,
"verseNumber": 5,
"group": "verses_6236",
"isInDefaultCollection": true,
"isReading": false,
"collectionsCount": 1
}
}
{
"success": true,
"data": {
"id": "cmpcenu2t0005mc4e9ol69rzu",
"createdAt": "2023-01-21T07:28:13.023Z",
"type": "ayah",
"key": 1,
"verseNumber": 5,
"group": "verses_6236",
"isInDefaultCollection": true,
"isReading": false,
"collectionsCount": 1
}
}
The request is missing required parameters or is invalid.
Schema
{
"message": "The request is missing required headers or is invalid",
"type": "invalid_request",
"success": false
}
The request is unauthorized.
Schema
{
"message": "The request requires user authentication",
"type": "unauthorized",
"success": false
}
Forbidden error. Can either be due to access token not being passed, having been expired or the caller trying to access a resource without enough permissions.
Schema
{
"message": "The server understood the request, but refuses to authorize it",
"type": "forbidden",
"success": false
}
Not Found. The resource being accessed does not exist.
Schema
{
"message": "The requested resource could not be found",
"type": "not_found",
"success": false
}
Validation Error. The request includes one or more invalid params. Please check the request params and try again.
Schema
{
"message": "The request was well-formed but was unable to be followed due to semantic errors",
"type": "unprocessable_entity",
"success": false
}
Too many requests, please try again later.
Schema
{
"message": "Too many requests, please try again later",
"type": "rate_limit_exceeded",
"success": false
}
Server Error. Something went wrong, try again later.
Schema
{
"message": "The server encountered an internal error and was unable to complete your request",
"type": "internal_server_error",
"success": false
}
Invalid response from the upstream server
Schema
{
"message": "The server was acting as a gateway or proxy and received an invalid response from the upstream server",
"type": "bad_gateway",
"success": false
}
The server is currently unable to handle the request due to a temporary overload or scheduled maintenance
Schema
{
"message": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance",
"type": "service_unavailable",
"success": false
}
The server did not receive a timely response from the upstream server.
Schema
{
"message": "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server",
"type": "gateway_timeout",
"success": false
}