Bookmark Endpoints
Save, organize, and retrieve learner bookmarks and folders.
UserBookmarks1 ptFetch bookmark folders for the current user
Returns all bookmark folders belonging to the currently authenticated user, along with the bookmarks nested within each folder. Each bookmark references the course topic and course it was created in, as well as any user-authored notes. This query requires an `authToken` header to identify the user — without it, no meaningful data will be returned. Use this query to build a user's personal bookmark library or to display saved content items across courses.
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | The unique identifier of the bookmark folder. |
| name | String! | The display name of the bookmark folder. |
| user | User! | The user who owns this bookmark folder. |
| deleted | Boolean! | Indicates whether this bookmark folder has been soft-deleted. |
| bookmarks | [Bookmark!] | The list of bookmarks contained within this folder, each referencing a course topic and optional user note. |
| defaultFolder | Boolean | Indicates whether this is the user's default bookmark folder. |
| bookmarkCount | Int | The total number of bookmarks in this folder. |
| externalResourceId | ID | An optional external resource identifier associated with this bookmark folder. |
Example
query GetUserBookmarks {
UserBookmarks {
id
name
deleted
defaultFolder
bookmarkCount
bookmarks {
id
note
createdAt
deleted
topicId
topic {
id
title
type
}
course {
id
title
slug
}
}
}
}Example Response
{
"data": {
"UserBookmarks": [
{
"id": "folder_001",
"name": "My Favorites",
"deleted": false,
"defaultFolder": true,
"bookmarkCount": 3,
"bookmarks": [
{
"id": "bookmark_101",
"note": "Review this section before the exam.",
"createdAt": "2024-03-10T11:00:00Z",
"deleted": false,
"topicId": "topic_555",
"topic": {
"id": "topic_555",
"title": "Introduction to Variables",
"type": "lesson"
},
"course": {
"id": "course_xyz789",
"title": "Introduction to GraphQL",
"slug": "intro-to-graphql"
}
}
]
}
]
},
"id": "abc-123",
"name": "example",
"user": null,
"deleted": false,
"bookmarks": null,
"defaultFolder": false,
"bookmarkCount": 0,
"externalResourceId": "abc-123"
}This query is user-scoped and requires an `authToken` header to identify the current user. Without authentication the query will return no results.
UserBookmarksByFolder1 ptFetch user bookmarks by folder
Returns all bookmarks belonging to the current user within a specified bookmark folder. Each bookmark includes details about the bookmarked course, the associated topic (if any), optional user notes, and the folder it belongs to. The active user context can be overridden by supplying an `authToken` header, which is useful for server-side operations acting on behalf of a specific learner.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| id | ID! | Yes | The ID of the bookmark folder whose bookmarks should be returned. |
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | Unique identifier of the bookmark. |
| note | String | An optional note the user attached to the bookmark. |
| user | User! | The user who created the bookmark. |
| topic | Topic | The specific topic within the course that was bookmarked, if applicable. |
| topicId | ID | The ID of the bookmarked topic, if applicable. |
| course | Course! | The course associated with this bookmark. |
| createdAt | Date! | The date and time the bookmark was created. |
| deleted | Boolean! | Whether the bookmark has been soft-deleted. |
| bookmarkFolder | BookmarkFolder! | The folder this bookmark belongs to. |
Example
query UserBookmarksByFolder($id: ID!) {
UserBookmarksByFolder(id: $id) {
id
note
createdAt
deleted
topicId
topic {
id
title
type
}
course {
id
title
slug
}
bookmarkFolder {
id
name
defaultFolder
bookmarkCount
}
user {
id
email
firstName
lastName
}
}
}
# Variables:
# { "id": "folder_abc123" }Example Response
{
"data": {
"UserBookmarksByFolder": [
{
"id": "bm_001",
"note": "Great module on React hooks",
"createdAt": "2024-03-15T10:22:00Z",
"deleted": false,
"topicId": "topic_789",
"topic": {
"id": "topic_789",
"title": "Introduction to React Hooks",
"type": "video"
},
"course": {
"id": "course_456",
"title": "Modern JavaScript Development",
"slug": "modern-javascript-development"
},
"bookmarkFolder": {
"id": "folder_abc123",
"name": "My Favorites",
"defaultFolder": false,
"bookmarkCount": 3
},
"user": {
"id": "user_123",
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe"
}
}
]
},
"id": "abc-123",
"note": "example",
"user": null,
"topic": null,
"topicId": "abc-123",
"course": null,
"createdAt": "2026-01-01T00:00:00Z",
"deleted": false,
"bookmarkFolder": null
}CreateBookmark1 ptCreate a bookmark
Creates a new bookmark within a bookmark folder for the authenticated user. You can optionally attach a note to the bookmark, associate it with a specific topic (lesson page), and place it in a designated folder. The bookmark is linked to a course and the user is derived from the authentication context. By passing an `authToken` header you can create the bookmark on behalf of a specific user.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| bookmark | CreateBookmarkInput! | Yes | The input fields to create a bookmark. |
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | Unique identifier for the newly created bookmark. |
| note | String | Optional text note attached to the bookmark. |
| user | User! | The user who owns the bookmark. |
| topic | Topic | The topic (lesson page) the bookmark points to, if any. |
| topicId | ID | ID of the associated topic, if applicable. |
| course | Course! | The course the bookmark is associated with. |
| createdAt | Date! | Timestamp when the bookmark was created. |
| deleted | Boolean! | Indicates whether the bookmark has been soft-deleted. |
| bookmarkFolder | BookmarkFolder! | The folder in which the bookmark is stored. |
Example
mutation CreateBookmark($bookmark: CreateBookmarkInput!) {
CreateBookmark(bookmark: $bookmark) {
id
note
createdAt
deleted
topicId
user {
id
email
name
}
topic {
id
title
type
}
course {
id
title
slug
}
bookmarkFolder {
id
name
defaultFolder
bookmarkCount
}
}
}Example Response
{
"data": {
"CreateBookmark": {
"id": "bm_7f3a2c1e-4b9d-4e8a-a123-000000000001",
"note": "Review this section before the final exam.",
"createdAt": "2024-05-15T10:30:00Z",
"deleted": false,
"topicId": "topic_abc123",
"user": {
"id": "user_001",
"email": "[email protected]",
"name": "Jane Learner"
},
"topic": {
"id": "topic_abc123",
"title": "Introduction to GraphQL",
"type": "article"
},
"course": {
"id": "course_xyz789",
"title": "Advanced API Development",
"slug": "advanced-api-development"
},
"bookmarkFolder": {
"id": "folder_001",
"name": "My Favorites",
"defaultFolder": false,
"bookmarkCount": 12
}
}
},
"id": "abc-123",
"note": "example",
"user": null,
"topic": null,
"topicId": "abc-123",
"course": null,
"createdAt": "2026-01-01T00:00:00Z",
"deleted": false,
"bookmarkFolder": null
}The acting user is determined by the session or the `authToken` header. If no folder is specified in the input, the bookmark may be placed in the user's default folder depending on platform configuration.
CreateBookmarkFolder1 ptCreate a bookmark folder
Creates a new bookmark folder for the authenticated user, which can be used to organize bookmarked content items. Each user can have multiple bookmark folders. Optionally, you can designate the new folder as the user's default bookmark folder by setting `defaultFolder` to `true`. This is useful when building custom learner dashboards or reading-list features. The operation is scoped to the currently authenticated user, or to a specific user if an `authToken` header is provided.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| name | String! | Yes | The name of the bookmark folder. |
| defaultFolder | Boolean | No | Flag to set it as the default bookmark folder. |
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | The unique identifier of the newly created bookmark folder. |
| name | String! | The display name of the bookmark folder. |
| user | User! | The user who owns this bookmark folder. |
| deleted | Boolean! | Whether the bookmark folder has been soft-deleted. |
| bookmarks | [Bookmark!] | The list of bookmarks contained within this folder. |
| defaultFolder | Boolean | Whether this folder is the user's default bookmark folder. |
| bookmarkCount | Int | The total number of bookmarks in this folder. |
| externalResourceId | ID | An optional external resource ID associated with this bookmark folder. |
Example
mutation CreateBookmarkFolder {
CreateBookmarkFolder(
name: "My Favorites"
defaultFolder: false
) {
id
name
defaultFolder
deleted
bookmarkCount
user {
id
email
}
bookmarks {
id
note
topicId
createdAt
}
}
}Example Response
{
"data": {
"CreateBookmarkFolder": {
"id": "bkf_01HX7M8N9O0P1Q2R",
"name": "My Favorites",
"defaultFolder": false,
"deleted": false,
"bookmarkCount": 0,
"user": {
"id": "usr_01HX1A2B3C4D5E6F",
"email": "[email protected]"
},
"bookmarks": []
}
},
"id": "abc-123",
"name": "example",
"user": null,
"deleted": false,
"bookmarks": null,
"defaultFolder": false,
"bookmarkCount": 0,
"externalResourceId": "abc-123"
}Only one folder should be marked as the default at a time. Setting a new folder as default may automatically unset the previous default folder depending on platform configuration.
DestroyBookmark1 ptDelete a bookmark
Permanently removes a single bookmark from within a bookmark folder for the current user. Returns the ID of the deleted bookmark on success, or `null` if the operation did not return a value. Pass an `authToken` header to perform this action on behalf of a specific user.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| id | ID! | Yes | The unique ID of the bookmark to delete. |
Returns
| Field | Type | Description |
|---|---|---|
| DestroyBookmark | ID | The ID of the bookmark that was deleted, or `null` if unavailable. |
Example
mutation DestroyBookmark {
DestroyBookmark(id: "bookmark456abc")
}Example Response
{
"data": {
"DestroyBookmark": "bookmark456abc"
}
}This action is irreversible. Supply an `authToken` request header to target a specific user.
DestroyBookmarkFolder1 ptDelete a bookmark folder
Permanently destroys the specified bookmark folder for the current user. All bookmarks contained within the folder will also be removed. Returns the ID of the deleted folder on success. Pass an `authToken` header to perform this action on behalf of a specific user.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| id | ID! | Yes | The unique ID of the bookmark folder to delete. |
Returns
| Field | Type | Description |
|---|---|---|
| DestroyBookmarkFolder | ID! | The ID of the bookmark folder that was deleted. |
Example
mutation DestroyBookmarkFolder {
DestroyBookmarkFolder(id: "folder789xyz")
}Example Response
{
"data": {
"DestroyBookmarkFolder": "folder789xyz"
}
}This action is irreversible. Deleting a folder also removes all bookmarks within it. Supply an `authToken` request header to target a specific user.
OrderBookmarkFolders1 ptReorder bookmark folders
Updates the display order of a user's bookmark folders by accepting an ordered list of folder IDs. The folders will be persisted in the sequence provided. Like other bookmark mutations, this operation is user-scoped and can be directed to a specific user by supplying an `authToken` header. Returns the ordered list of folder ID strings after the update.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| ids | [ID!] | No | An ordered list of bookmark folder IDs representing the desired display order. Folders will be sorted according to the sequence of IDs provided. |
Returns
| Field | Type | Description |
|---|---|---|
| OrderBookmarkFolders | [String!] | The ordered list of bookmark folder IDs reflecting the new sort order. |
Example
mutation OrderBookmarkFolders {
OrderBookmarkFolders(
ids: ["folder_789", "folder_123", "folder_456"]
)
}Example Response
{
"data": {
"OrderBookmarkFolders": [
"folder_789",
"folder_123",
"folder_456"
]
}
}Omitting `ids` or passing `null` may result in no reordering. Provide an `authToken` header to target a specific user's folders.
UpdateBookmark1 ptUpdate a bookmark
Updates an existing bookmark's note text and/or the folder it belongs to. Use this mutation when a learner wants to annotate a bookmarked topic or reorganize bookmarks across folders. You must supply the bookmark's ID and the target folder ID; the note is optional and can be cleared by omitting it. The mutation is user-scoped — provide an `authToken` header to operate on behalf of a specific user. The full updated `Bookmark` object is returned, including associated user, course, topic, and folder details.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| id | ID! | Yes | The unique ID of the bookmark to update. |
| note | String | No | An optional text annotation to attach to the bookmark. Omit or pass null to leave without a note. |
| bookmarkFolder | ID! | Yes | The ID of the bookmark folder to move or assign this bookmark to. |
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | The unique identifier of the bookmark. |
| note | String | The optional text note attached to this bookmark. |
| user | User! | The user who owns this bookmark. |
| topic | Topic | The topic (lesson page/resource) that was bookmarked, if applicable. |
| topicId | ID | The ID of the bookmarked topic. |
| course | Course! | The course associated with the bookmarked content. |
| createdAt | Date! | The timestamp when the bookmark was originally created. |
| deleted | Boolean! | Indicates whether this bookmark has been soft-deleted. |
| bookmarkFolder | BookmarkFolder! | The folder this bookmark currently belongs to. |
Example
mutation UpdateBookmark {
UpdateBookmark(
id: "bookmark_001"
note: "Review this before the exam"
bookmarkFolder: "folder_123"
) {
id
note
createdAt
deleted
user {
id
email
name
}
course {
id
title
}
topic {
id
title
type
}
bookmarkFolder {
id
name
defaultFolder
}
}
}Example Response
{
"data": {
"UpdateBookmark": {
"id": "bookmark_001",
"note": "Review this before the exam",
"createdAt": "2024-03-15T10:22:00Z",
"deleted": false,
"user": {
"id": "user_42",
"email": "[email protected]",
"name": "Jane Doe"
},
"course": {
"id": "course_99",
"title": "Introduction to GraphQL"
},
"topic": {
"id": "topic_7",
"title": "Schema Design Basics",
"type": "article"
},
"bookmarkFolder": {
"id": "folder_123",
"name": "Favorites",
"defaultFolder": false
}
}
},
"id": "abc-123",
"note": "example",
"user": null,
"topic": null,
"topicId": "abc-123",
"course": null,
"createdAt": "2026-01-01T00:00:00Z",
"deleted": false,
"bookmarkFolder": null
}Despite the schema description mentioning 'note on a bookmark folder', this mutation updates the note on the bookmark itself and reassigns it to the specified folder. Provide an `authToken` header to operate on a specific user's bookmarks.
UpdateBookmarkFolder1 ptRename a bookmark folder
Updates the display name of an existing bookmark folder belonging to the current user. Returns the full `BookmarkFolder` object reflecting the updated state, including the folder's associated user and any bookmarks it contains. Pass an `authToken` header to perform this action on behalf of a specific user.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| id | ID! | Yes | The unique ID of the bookmark folder to rename. |
| name | String! | Yes | The new display name to assign to the bookmark folder. |
Returns
| Field | Type | Description |
|---|---|---|
| id | ID! | The unique ID of the bookmark folder. |
| name | String! | The updated display name of the bookmark folder. |
| user | User! | The user who owns this bookmark folder. |
| deleted | Boolean! | Whether the bookmark folder has been deleted. |
| bookmarks | [Bookmark!] | The list of bookmarks contained within this folder. |
| defaultFolder | Boolean | Whether this is the user's default bookmark folder. |
| bookmarkCount | Int | The total number of bookmarks in this folder. |
| externalResourceId | ID | An optional external resource identifier associated with this folder. |
Example
mutation UpdateBookmarkFolder {
UpdateBookmarkFolder(id: "folder789xyz", name: "My Favorite Courses") {
id
name
deleted
defaultFolder
bookmarkCount
user {
id
email
name
}
bookmarks {
id
note
topicId
createdAt
deleted
}
}
}Example Response
{
"data": {
"UpdateBookmarkFolder": {
"id": "folder789xyz",
"name": "My Favorite Courses",
"deleted": false,
"defaultFolder": false,
"bookmarkCount": 3,
"externalResourceId": null,
"user": {
"id": "user123abc",
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe",
"name": "Jane Doe",
"abbreviatedName": "Jane D.",
"disabled": false,
"mustVerifyEmail": false,
"shouldHighlight": false,
"certificatesCount": 2,
"collaborationsCount": 0,
"availableCoursesCount": 5,
"startedCoursesCount": 3,
"completedCoursesCount": 1
},
"bookmarks": [
{
"id": "bookmark001",
"note": "Review before the exam",
"topicId": "topic555",
"createdAt": "2024-02-10T08:00:00Z",
"deleted": false
}
]
}
},
"id": "abc-123",
"name": "example",
"user": null,
"deleted": false,
"bookmarks": null,
"defaultFolder": false,
"bookmarkCount": 0,
"externalResourceId": "abc-123"
}Supply an `authToken` request header to target a specific user instead of the caller.