Skip to main content

Bookmark Endpoints

Save, organize, and retrieve learner bookmarks and folders.

QueryUserBookmarks1 pt

Fetch 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

FieldTypeDescription
idID!The unique identifier of the bookmark folder.
nameString!The display name of the bookmark folder.
userUser!The user who owns this bookmark folder.
deletedBoolean!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.
defaultFolderBooleanIndicates whether this is the user's default bookmark folder.
bookmarkCountIntThe total number of bookmarks in this folder.
externalResourceIdIDAn 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.

QueryUserBookmarksByFolder1 pt

Fetch 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

NameTypeDescription
idID!The ID of the bookmark folder whose bookmarks should be returned.

Returns

FieldTypeDescription
idID!Unique identifier of the bookmark.
noteStringAn optional note the user attached to the bookmark.
userUser!The user who created the bookmark.
topicTopicThe specific topic within the course that was bookmarked, if applicable.
topicIdIDThe ID of the bookmarked topic, if applicable.
courseCourse!The course associated with this bookmark.
createdAtDate!The date and time the bookmark was created.
deletedBoolean!Whether the bookmark has been soft-deleted.
bookmarkFolderBookmarkFolder!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
}
MutationCreateBookmark1 pt

Create 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

NameTypeDescription
bookmarkCreateBookmarkInput!The input fields to create a bookmark.

Returns

FieldTypeDescription
idID!Unique identifier for the newly created bookmark.
noteStringOptional text note attached to the bookmark.
userUser!The user who owns the bookmark.
topicTopicThe topic (lesson page) the bookmark points to, if any.
topicIdIDID of the associated topic, if applicable.
courseCourse!The course the bookmark is associated with.
createdAtDate!Timestamp when the bookmark was created.
deletedBoolean!Indicates whether the bookmark has been soft-deleted.
bookmarkFolderBookmarkFolder!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.

MutationCreateBookmarkFolder1 pt

Create 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

NameTypeDescription
nameString!The name of the bookmark folder.
defaultFolderBooleanFlag to set it as the default bookmark folder.

Returns

FieldTypeDescription
idID!The unique identifier of the newly created bookmark folder.
nameString!The display name of the bookmark folder.
userUser!The user who owns this bookmark folder.
deletedBoolean!Whether the bookmark folder has been soft-deleted.
bookmarks[Bookmark!]The list of bookmarks contained within this folder.
defaultFolderBooleanWhether this folder is the user's default bookmark folder.
bookmarkCountIntThe total number of bookmarks in this folder.
externalResourceIdIDAn 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.

MutationDestroyBookmark1 pt

Delete 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

NameTypeDescription
idID!The unique ID of the bookmark to delete.

Returns

FieldTypeDescription
DestroyBookmarkIDThe 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.

MutationDestroyBookmarkFolder1 pt

Delete 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

NameTypeDescription
idID!The unique ID of the bookmark folder to delete.

Returns

FieldTypeDescription
DestroyBookmarkFolderID!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.

MutationOrderBookmarkFolders1 pt

Reorder 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

NameTypeDescription
ids[ID!]An ordered list of bookmark folder IDs representing the desired display order. Folders will be sorted according to the sequence of IDs provided.

Returns

FieldTypeDescription
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.

MutationUpdateBookmark1 pt

Update 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

NameTypeDescription
idID!The unique ID of the bookmark to update.
noteStringAn optional text annotation to attach to the bookmark. Omit or pass null to leave without a note.
bookmarkFolderID!The ID of the bookmark folder to move or assign this bookmark to.

Returns

FieldTypeDescription
idID!The unique identifier of the bookmark.
noteStringThe optional text note attached to this bookmark.
userUser!The user who owns this bookmark.
topicTopicThe topic (lesson page/resource) that was bookmarked, if applicable.
topicIdIDThe ID of the bookmarked topic.
courseCourse!The course associated with the bookmarked content.
createdAtDate!The timestamp when the bookmark was originally created.
deletedBoolean!Indicates whether this bookmark has been soft-deleted.
bookmarkFolderBookmarkFolder!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.

MutationUpdateBookmarkFolder1 pt

Rename 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

NameTypeDescription
idID!The unique ID of the bookmark folder to rename.
nameString!The new display name to assign to the bookmark folder.

Returns

FieldTypeDescription
idID!The unique ID of the bookmark folder.
nameString!The updated display name of the bookmark folder.
userUser!The user who owns this bookmark folder.
deletedBoolean!Whether the bookmark folder has been deleted.
bookmarks[Bookmark!]The list of bookmarks contained within this folder.
defaultFolderBooleanWhether this is the user's default bookmark folder.
bookmarkCountIntThe total number of bookmarks in this folder.
externalResourceIdIDAn 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.