Client
Defined in: src/Client.ts:61
Constructors
new Client()
new Client():
Client
Defined in: src/Client.ts:94
Creates a new Client instance
Returns
Example
const client = new Client()
Properties
authenticated
authenticated:
boolean=false
Defined in: src/Client.ts:70
kaid
kaid:
null|`kaid_${number}`=null
Defined in: src/Client.ts:71
user?
optionaluser:User
Defined in: src/Client.ts:72
Accessors
kaas
Get Signature
get kaas():
null|string
Defined in: src/Client.ts:190
Gets the KAAS cookie from the current session
Remarks
The KAAS cookie is used by Khan Academy to authenticate requests.
Returns
null | string
KAAS cookie or null if not authenticated
Methods
getAllMessageReplies()
getAllMessageReplies(
identifier):Promise<Reply[]>
Defined in: src/Client.ts:974
Gets all replies to a message
Parameters
identifier
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<Reply[]>
Raw
See
Example
const client = new Client()
const replies = await client.getAllMessageReplies('ag5zfmtoYW4tYWNhZGVteXJBCxIIVXNlckRhdGEiHmthaWRfNjYzMzc5NDA2ODA0Nzc0MjA1NjU0NTUzNAwLEghGZWVkYmFjaxiAgJO6wamwCgw'))
console.log(replies.map(reply => reply.text))
getAllProgramHelpRequests()
getAllProgramHelpRequests(
identifier,sort):Promise<Question[]>
Defined in: src/Client.ts:888
Gets all Help Requests for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
Promise<Question[]>
See
getAllProgramMessages()
getAllProgramMessages(
type,identifier,sort):Promise<Message[]>
Defined in: src/Client.ts:791
Gets all specified types of messages for a program
Parameters
type
MessageType = Message.Type.TipsAndThanks
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
Promise<Message[]>
See
Example
const client = new Client()
const messages = await client.getAllProgramMessages(undefined, 5154160781082624)
console.log(messages.map(message => message.text)
getAllProgramQuestions()
getAllProgramQuestions(
identifier,sort):Promise<Question[]>
Defined in: src/Client.ts:856
Gets all questions for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
Promise<Question[]>
See
getAllProgramTipsAndThanks()
getAllProgramTipsAndThanks(
identifier,sort):Promise<TipsAndThanks[]>
Defined in: src/Client.ts:824
Gets all Tips and Thanks messages for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
Promise<TipsAndThanks[]>
See
getAllUserPrograms()
getAllUserPrograms(
identifier?,sort?,limit?):Promise<Program[]>
Defined in: src/Client.ts:445
Gets all of a user's programs
Parameters
identifier?
string
sort?
ListProgramSortOrder = ListProgramSortOrder.TOP
limit?
number = 100
Returns
Promise<Program[]>
See
Example
const client = new Client()
const programs = await client.getAllUserPrograms('bhavjitChauhan')
console.log(programs.map(program => program.title))
getAnswer()
getAnswer(
identifier):Promise<Answer>
Defined in: src/Client.ts:666
Gets a single answer message
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<Answer>
getHotlistPrograms()
getHotlistPrograms(
sort,limit,official):AsyncGenerator<Program[],void,unknown>
Defined in: src/Client.ts:502
Gets programs from the hotlist
Parameters
sort
ListProgramSortOrder = ListProgramSortOrder.HOT
limit
number = 40
official
boolean = false
Whether to only get official project spinoffs
Returns
AsyncGenerator<Program[], void, unknown>
Raw
Example
const client = new Client()
for await (const programs of client.getHotlistPrograms()) {
 console.log(programs.map(program => program.title))
}
getMessage()
getMessage(
identifier):Promise<TipsAndThanks|Question|Answer>
Defined in: src/Client.ts:584
Gets a single message by its feedback key or encrypted feedback key
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<TipsAndThanks | Question | Answer>
Remarks
This method is not recommended when you know the message's type. Use `getTipsAndThanks`, `getQuestion` or `getReply` instead.
getMessageReplies()
getMessageReplies(
identifier,limit):AsyncGenerator<Reply[],void,unknown>
Defined in: src/Client.ts:912
Gets replies to a message
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
limit
number = 10
Returns
AsyncGenerator<Reply[], void, unknown>
Raw
queries!getFeedbackRepliesPage
Example
const client = new Client()
for await (const replies of client.getMessageReplies('ag5zfmtoYW4tYWNhZGVteXJBCxIIVXNlckRhdGEiHmthaWRfNjYzMzc5NDA2ODA0Nzc0MjA1NjU0NTUzNAwLEghGZWVkYmFjaxiAgJO6wamwCgw')) {
 console.log(replies.map(reply => reply.text))
}
getProgram()
getProgram(
identifier):Promise<Program>
Defined in: src/Client.ts:460
Parameters
identifier
Program ID, URL or key
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
Returns
Promise<Program>
getProgramHelpRequests()
getProgramHelpRequests(
identifier,sort):AsyncGenerator<Question[],void,unknown>
Defined in: src/Client.ts:872
Gets Help Requests for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
AsyncGenerator<Question[], void, unknown>
See
getProgramMessages()
getProgramMessages(
type,identifier,sort):AsyncGenerator<(TipsAndThanks|Question)[],void,unknown>
Defined in: src/Client.ts:722
Gets specified types of messages for a program
Parameters
type
MessageType = Message.Type.TipsAndThanks
identifier
Program ID, program URL, or program key
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
AsyncGenerator<(TipsAndThanks | Question)[], void, unknown>
Example
const client = new Client()
for await (const messages of client.getProgramTipsAndThanks(5154160781082624)) {
  console.log(messages.map(message => message.text)
}
getProgramQuestions()
getProgramQuestions(
identifier,sort):AsyncGenerator<Question[],void,unknown>
Defined in: src/Client.ts:840
Gets questions for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
AsyncGenerator<Question[], void, unknown>
See
getProgramTipsAndThanks()
getProgramTipsAndThanks(
identifier,sort):AsyncGenerator<TipsAndThanks[],void,unknown>
Defined in: src/Client.ts:808
Gets Tips and Thanks messages for a program
Parameters
identifier
ProgramID | `http${string}://${string}khanacademy.${string}/${string}/${string}/${number}` | `ag5zfmtoYW4tYWNhZGVteXI${string}CxIKU2NyYXRjaHBhZB${string}${string}`
sort
FeedbackSort = FeedbackSort.TopVoted
Returns
AsyncGenerator<TipsAndThanks[], void, unknown>
See
getQuestion()
getQuestion(
identifier):Promise<Question>
Defined in: src/Client.ts:657
Gets a single question message
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<Question>
Remarks
Note that Help Requests are a type of question.
getRecentPrograms()
getRecentPrograms(
limit,official):AsyncGenerator<Program[],void,unknown>
Defined in: src/Client.ts:565
Parameters
limit
number = 40
official
boolean = false
Returns
AsyncGenerator<Program[], void, unknown>
getReply()
getReply(
identifier):Promise<Reply>
Defined in: src/Client.ts:675
Gets a single reply
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<Reply>
getTipsAndThanks()
getTipsAndThanks(
identifier):Promise<TipsAndThanks>
Defined in: src/Client.ts:645
Gets a single tips and thanks message
Parameters
identifier
Feedback key or encrypted feedback key
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<TipsAndThanks>
getTopPrograms()
getTopPrograms(
limit,official):AsyncGenerator<Program[],void,unknown>
Defined in: src/Client.ts:557
Parameters
limit
number = 40
official
boolean = false
Returns
AsyncGenerator<Program[], void, unknown>
getUser()
getUser(
identifier?):Promise<User>
Defined in: src/Client.ts:275
Parameters
identifier?
string
KAID, username or email
Returns
Promise<User>
getUserAvatar()
getUserAvatar(
identifier,type):Promise<"https://www.khanacademy.org/images/avatars/svg/blobby-green.svg"|"https://www.khanacademy.org/images/avatars/svg/blobby-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/blobby-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/blobby-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/area-52-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/area-52-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/area-52-green.svg"|"https://www.khanacademy.org/images/avatars/svg/area-52-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/eggleston-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/eggleston-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/eggleston-green.svg"|"https://www.khanacademy.org/images/avatars/svg/eggleston-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/scuttlebug-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/scuttlebug-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/scuttlebug-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/scuttlebug-green.svg"|"https://www.khanacademy.org/images/avatars/svg/boggle-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/boggle-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/boggle-green.svg"|"https://www.khanacademy.org/images/avatars/svg/boggle-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/sneak-peak-green.svg"|"https://www.khanacademy.org/images/avatars/svg/sneak-peak-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/sneak-peak-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/sneak-peak-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/stelly-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/stelly-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/stelly-green.svg"|"https://www.khanacademy.org/images/avatars/svg/stelly-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/cacteye-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/cacteye-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/cacteye-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/cacteye-green.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-green.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-grey.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-red.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/leaf-yellow.svg"|"https://www.khanacademy.org/images/avatars/svg/leafers-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/leafers-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/leafers-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/leafers-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/leafers-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/piceratops-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/piceratops-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/piceratops-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/piceratops-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/piceratops-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/duskpin-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/duskpin-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/duskpin-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/duskpin-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/duskpin-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/primosaur-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/primosaur-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/primosaur-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/primosaur-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/primosaur-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/starky-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/starky-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/starky-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/starky-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/starky-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/aqualine-seed.svg"|"https://www.khanacademy.org/images/avatars/svg/aqualine-seedling.svg"|"https://www.khanacademy.org/images/avatars/svg/aqualine-sapling.svg"|"https://www.khanacademy.org/images/avatars/svg/aqualine-tree.svg"|"https://www.khanacademy.org/images/avatars/svg/aqualine-ultimate.svg"|"https://www.khanacademy.org/images/avatars/svg/spunky-sam.svg"|"https://www.khanacademy.org/images/avatars/svg/spunky-sam-green.svg"|"https://www.khanacademy.org/images/avatars/svg/spunky-sam-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/spunky-sam-red.svg"|"https://www.khanacademy.org/images/avatars/svg/marcimus.svg"|"https://www.khanacademy.org/images/avatars/svg/marcimus-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/marcimus-red.svg"|"https://www.khanacademy.org/images/avatars/svg/marcimus-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pink.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pink-green.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pink-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_female_1.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_female_2.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_female_3.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_male_1.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_male_2.svg"|"https://www.khanacademy.org/images/avatars/svg/robot_male_3.svg"|"https://www.khanacademy.org/images/avatars/svg/orange-juice-squid.svg"|"https://www.khanacademy.org/images/avatars/svg/purple-pi.svg"|"https://www.khanacademy.org/images/avatars/svg/purple-pi-pink.svg"|"https://www.khanacademy.org/images/avatars/svg/purple-pi-teal.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pants.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pants-green.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pants-orange.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pants-pink.svg"|"https://www.khanacademy.org/images/avatars/svg/mr-pants-purple.svg"|"https://www.khanacademy.org/images/avatars/svg/old-spice-man.svg"|"https://www.khanacademy.org/images/avatars/svg/old-spice-man-blue.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-winston.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-winston-baby.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-ohnoes.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-hopper-happy.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-hopper-jumping.svg"|"https://www.khanacademy.org/images/avatars/svg/cs-hopper-cool.svg"|"https://www.khanacademy.org/images/avatars/blobby-green.png"|"https://www.khanacademy.org/images/avatars/blobby-yellow.png"|"https://www.khanacademy.org/images/avatars/blobby-blue.png"|"https://www.khanacademy.org/images/avatars/blobby-purple.png"|"https://www.khanacademy.org/images/avatars/area-52-yellow.png"|"https://www.khanacademy.org/images/avatars/area-52-blue.png"|"https://www.khanacademy.org/images/avatars/area-52-green.png"|"https://www.khanacademy.org/images/avatars/area-52-purple.png"|"https://www.khanacademy.org/images/avatars/eggleston-blue.png"|"https://www.khanacademy.org/images/avatars/eggleston-yellow.png"|"https://www.khanacademy.org/images/avatars/eggleston-green.png"|"https://www.khanacademy.org/images/avatars/eggleston-orange.png"|"https://www.khanacademy.org/images/avatars/scuttlebug-purple.png"|"https://www.khanacademy.org/images/avatars/scuttlebug-yellow.png"|"https://www.khanacademy.org/images/avatars/scuttlebug-blue.png"|"https://www.khanacademy.org/images/avatars/scuttlebug-green.png"|"https://www.khanacademy.org/images/avatars/boggle-yellow.png"|"https://www.khanacademy.org/images/avatars/boggle-blue.png"|"https://www.khanacademy.org/images/avatars/boggle-green.png"|"https://www.khanacademy.org/images/avatars/boggle-purple.png"|"https://www.khanacademy.org/images/avatars/sneak-peak-green.png"|"https://www.khanacademy.org/images/avatars/sneak-peak-yellow.png"|"https://www.khanacademy.org/images/avatars/sneak-peak-blue.png"|"https://www.khanacademy.org/images/avatars/sneak-peak-purple.png"|"https://www.khanacademy.org/images/avatars/stelly-blue.png"|"https://www.khanacademy.org/images/avatars/stelly-yellow.png"|"https://www.khanacademy.org/images/avatars/stelly-green.png"|"https://www.khanacademy.org/images/avatars/stelly-orange.png"|"https://www.khanacademy.org/images/avatars/cacteye-purple.png"|"https://www.khanacademy.org/images/avatars/cacteye-yellow.png"|"https://www.khanacademy.org/images/avatars/cacteye-blue.png"|"https://www.khanacademy.org/images/avatars/cacteye-green.png"|"https://www.khanacademy.org/images/avatars/leaf-green.png"|"https://www.khanacademy.org/images/avatars/leaf-blue.png"|"https://www.khanacademy.org/images/avatars/leaf-grey.png"|"https://www.khanacademy.org/images/avatars/leaf-red.png"|"https://www.khanacademy.org/images/avatars/leaf-orange.png"|"https://www.khanacademy.org/images/avatars/leaf-yellow.png"|"https://www.khanacademy.org/images/avatars/leafers-seed.png"|"https://www.khanacademy.org/images/avatars/leafers-seedling.png"|"https://www.khanacademy.org/images/avatars/leafers-sapling.png"|"https://www.khanacademy.org/images/avatars/leafers-tree.png"|"https://www.khanacademy.org/images/avatars/leafers-ultimate.png"|"https://www.khanacademy.org/images/avatars/piceratops-seed.png"|"https://www.khanacademy.org/images/avatars/piceratops-seedling.png"|"https://www.khanacademy.org/images/avatars/piceratops-sapling.png"|"https://www.khanacademy.org/images/avatars/piceratops-tree.png"|"https://www.khanacademy.org/images/avatars/piceratops-ultimate.png"|"https://www.khanacademy.org/images/avatars/duskpin-seed.png"|"https://www.khanacademy.org/images/avatars/duskpin-seedling.png"|"https://www.khanacademy.org/images/avatars/duskpin-sapling.png"|"https://www.khanacademy.org/images/avatars/duskpin-tree.png"|"https://www.khanacademy.org/images/avatars/duskpin-ultimate.png"|"https://www.khanacademy.org/images/avatars/primosaur-seed.png"|"https://www.khanacademy.org/images/avatars/primosaur-seedling.png"|"https://www.khanacademy.org/images/avatars/primosaur-sapling.png"|"https://www.khanacademy.org/images/avatars/primosaur-tree.png"|"https://www.khanacademy.org/images/avatars/primosaur-ultimate.png"|"https://www.khanacademy.org/images/avatars/starky-seed.png"|"https://www.khanacademy.org/images/avatars/starky-seedling.png"|"https://www.khanacademy.org/images/avatars/starky-sapling.png"|"https://www.khanacademy.org/images/avatars/starky-tree.png"|"https://www.khanacademy.org/images/avatars/starky-ultimate.png"|"https://www.khanacademy.org/images/avatars/aqualine-seed.png"|"https://www.khanacademy.org/images/avatars/aqualine-seedling.png"|"https://www.khanacademy.org/images/avatars/aqualine-sapling.png"|"https://www.khanacademy.org/images/avatars/aqualine-tree.png"|"https://www.khanacademy.org/images/avatars/aqualine-ultimate.png"|"https://www.khanacademy.org/images/avatars/spunky-sam.png"|"https://www.khanacademy.org/images/avatars/spunky-sam-green.png"|"https://www.khanacademy.org/images/avatars/spunky-sam-orange.png"|"https://www.khanacademy.org/images/avatars/spunky-sam-red.png"|"https://www.khanacademy.org/images/avatars/marcimus.png"|"https://www.khanacademy.org/images/avatars/marcimus-orange.png"|"https://www.khanacademy.org/images/avatars/marcimus-red.png"|"https://www.khanacademy.org/images/avatars/marcimus-purple.png"|"https://www.khanacademy.org/images/avatars/mr-pink.png"|"https://www.khanacademy.org/images/avatars/mr-pink-green.png"|"https://www.khanacademy.org/images/avatars/mr-pink-orange.png"|"https://www.khanacademy.org/images/avatars/robot_female_1.png"|"https://www.khanacademy.org/images/avatars/robot_female_2.png"|"https://www.khanacademy.org/images/avatars/robot_female_3.png"|"https://www.khanacademy.org/images/avatars/robot_male_1.png"|"https://www.khanacademy.org/images/avatars/robot_male_2.png"|"https://www.khanacademy.org/images/avatars/robot_male_3.png"|"https://www.khanacademy.org/images/avatars/orange-juice-squid.png"|"https://www.khanacademy.org/images/avatars/purple-pi.png"|"https://www.khanacademy.org/images/avatars/purple-pi-pink.png"|"https://www.khanacademy.org/images/avatars/purple-pi-teal.png"|"https://www.khanacademy.org/images/avatars/mr-pants.png"|"https://www.khanacademy.org/images/avatars/mr-pants-green.png"|"https://www.khanacademy.org/images/avatars/mr-pants-orange.png"|"https://www.khanacademy.org/images/avatars/mr-pants-pink.png"|"https://www.khanacademy.org/images/avatars/mr-pants-purple.png"|"https://www.khanacademy.org/images/avatars/old-spice-man.png"|"https://www.khanacademy.org/images/avatars/old-spice-man-blue.png"|"https://www.khanacademy.org/images/avatars/cs-winston.png"|"https://www.khanacademy.org/images/avatars/cs-winston-baby.png"|"https://www.khanacademy.org/images/avatars/cs-ohnoes.png"|"https://www.khanacademy.org/images/avatars/cs-hopper-happy.png"|"https://www.khanacademy.org/images/avatars/cs-hopper-jumping.png"|"https://www.khanacademy.org/images/avatars/cs-hopper-cool.png">
Defined in: src/Client.ts:314
Parameters
identifier
undefined | string
type
"svg" | "png"
Returns
Promise<"https://www.khanacademy.org/images/avatars/svg/blobby-green.svg" | "https://www.khanacademy.org/images/avatars/svg/blobby-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/blobby-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/blobby-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/area-52-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/area-52-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/area-52-green.svg" | "https://www.khanacademy.org/images/avatars/svg/area-52-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/eggleston-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/eggleston-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/eggleston-green.svg" | "https://www.khanacademy.org/images/avatars/svg/eggleston-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/scuttlebug-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/scuttlebug-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/scuttlebug-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/scuttlebug-green.svg" | "https://www.khanacademy.org/images/avatars/svg/boggle-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/boggle-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/boggle-green.svg" | "https://www.khanacademy.org/images/avatars/svg/boggle-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/sneak-peak-green.svg" | "https://www.khanacademy.org/images/avatars/svg/sneak-peak-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/sneak-peak-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/sneak-peak-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/stelly-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/stelly-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/stelly-green.svg" | "https://www.khanacademy.org/images/avatars/svg/stelly-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/cacteye-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/cacteye-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/cacteye-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/cacteye-green.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-green.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-grey.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-red.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/leaf-yellow.svg" | "https://www.khanacademy.org/images/avatars/svg/leafers-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/leafers-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/leafers-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/leafers-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/leafers-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/piceratops-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/piceratops-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/piceratops-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/piceratops-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/piceratops-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/duskpin-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/duskpin-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/duskpin-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/duskpin-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/duskpin-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/primosaur-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/primosaur-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/primosaur-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/primosaur-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/primosaur-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/starky-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/starky-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/starky-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/starky-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/starky-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/aqualine-seed.svg" | "https://www.khanacademy.org/images/avatars/svg/aqualine-seedling.svg" | "https://www.khanacademy.org/images/avatars/svg/aqualine-sapling.svg" | "https://www.khanacademy.org/images/avatars/svg/aqualine-tree.svg" | "https://www.khanacademy.org/images/avatars/svg/aqualine-ultimate.svg" | "https://www.khanacademy.org/images/avatars/svg/spunky-sam.svg" | "https://www.khanacademy.org/images/avatars/svg/spunky-sam-green.svg" | "https://www.khanacademy.org/images/avatars/svg/spunky-sam-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/spunky-sam-red.svg" | "https://www.khanacademy.org/images/avatars/svg/marcimus.svg" | "https://www.khanacademy.org/images/avatars/svg/marcimus-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/marcimus-red.svg" | "https://www.khanacademy.org/images/avatars/svg/marcimus-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pink.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pink-green.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pink-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_female_1.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_female_2.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_female_3.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_male_1.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_male_2.svg" | "https://www.khanacademy.org/images/avatars/svg/robot_male_3.svg" | "https://www.khanacademy.org/images/avatars/svg/orange-juice-squid.svg" | "https://www.khanacademy.org/images/avatars/svg/purple-pi.svg" | "https://www.khanacademy.org/images/avatars/svg/purple-pi-pink.svg" | "https://www.khanacademy.org/images/avatars/svg/purple-pi-teal.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pants.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pants-green.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pants-orange.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pants-pink.svg" | "https://www.khanacademy.org/images/avatars/svg/mr-pants-purple.svg" | "https://www.khanacademy.org/images/avatars/svg/old-spice-man.svg" | "https://www.khanacademy.org/images/avatars/svg/old-spice-man-blue.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-winston.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-winston-baby.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-ohnoes.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-hopper-happy.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-hopper-jumping.svg" | "https://www.khanacademy.org/images/avatars/svg/cs-hopper-cool.svg" | "https://www.khanacademy.org/images/avatars/blobby-green.png" | "https://www.khanacademy.org/images/avatars/blobby-yellow.png" | "https://www.khanacademy.org/images/avatars/blobby-blue.png" | "https://www.khanacademy.org/images/avatars/blobby-purple.png" | "https://www.khanacademy.org/images/avatars/area-52-yellow.png" | "https://www.khanacademy.org/images/avatars/area-52-blue.png" | "https://www.khanacademy.org/images/avatars/area-52-green.png" | "https://www.khanacademy.org/images/avatars/area-52-purple.png" | "https://www.khanacademy.org/images/avatars/eggleston-blue.png" | "https://www.khanacademy.org/images/avatars/eggleston-yellow.png" | "https://www.khanacademy.org/images/avatars/eggleston-green.png" | "https://www.khanacademy.org/images/avatars/eggleston-orange.png" | "https://www.khanacademy.org/images/avatars/scuttlebug-purple.png" | "https://www.khanacademy.org/images/avatars/scuttlebug-yellow.png" | "https://www.khanacademy.org/images/avatars/scuttlebug-blue.png" | "https://www.khanacademy.org/images/avatars/scuttlebug-green.png" | "https://www.khanacademy.org/images/avatars/boggle-yellow.png" | "https://www.khanacademy.org/images/avatars/boggle-blue.png" | "https://www.khanacademy.org/images/avatars/boggle-green.png" | "https://www.khanacademy.org/images/avatars/boggle-purple.png" | "https://www.khanacademy.org/images/avatars/sneak-peak-green.png" | "https://www.khanacademy.org/images/avatars/sneak-peak-yellow.png" | "https://www.khanacademy.org/images/avatars/sneak-peak-blue.png" | "https://www.khanacademy.org/images/avatars/sneak-peak-purple.png" | "https://www.khanacademy.org/images/avatars/stelly-blue.png" | "https://www.khanacademy.org/images/avatars/stelly-yellow.png" | "https://www.khanacademy.org/images/avatars/stelly-green.png" | "https://www.khanacademy.org/images/avatars/stelly-orange.png" | "https://www.khanacademy.org/images/avatars/cacteye-purple.png" | "https://www.khanacademy.org/images/avatars/cacteye-yellow.png" | "https://www.khanacademy.org/images/avatars/cacteye-blue.png" | "https://www.khanacademy.org/images/avatars/cacteye-green.png" | "https://www.khanacademy.org/images/avatars/leaf-green.png" | "https://www.khanacademy.org/images/avatars/leaf-blue.png" | "https://www.khanacademy.org/images/avatars/leaf-grey.png" | "https://www.khanacademy.org/images/avatars/leaf-red.png" | "https://www.khanacademy.org/images/avatars/leaf-orange.png" | "https://www.khanacademy.org/images/avatars/leaf-yellow.png" | "https://www.khanacademy.org/images/avatars/leafers-seed.png" | "https://www.khanacademy.org/images/avatars/leafers-seedling.png" | "https://www.khanacademy.org/images/avatars/leafers-sapling.png" | "https://www.khanacademy.org/images/avatars/leafers-tree.png" | "https://www.khanacademy.org/images/avatars/leafers-ultimate.png" | "https://www.khanacademy.org/images/avatars/piceratops-seed.png" | "https://www.khanacademy.org/images/avatars/piceratops-seedling.png" | "https://www.khanacademy.org/images/avatars/piceratops-sapling.png" | "https://www.khanacademy.org/images/avatars/piceratops-tree.png" | "https://www.khanacademy.org/images/avatars/piceratops-ultimate.png" | "https://www.khanacademy.org/images/avatars/duskpin-seed.png" | "https://www.khanacademy.org/images/avatars/duskpin-seedling.png" | "https://www.khanacademy.org/images/avatars/duskpin-sapling.png" | "https://www.khanacademy.org/images/avatars/duskpin-tree.png" | "https://www.khanacademy.org/images/avatars/duskpin-ultimate.png" | "https://www.khanacademy.org/images/avatars/primosaur-seed.png" | "https://www.khanacademy.org/images/avatars/primosaur-seedling.png" | "https://www.khanacademy.org/images/avatars/primosaur-sapling.png" | "https://www.khanacademy.org/images/avatars/primosaur-tree.png" | "https://www.khanacademy.org/images/avatars/primosaur-ultimate.png" | "https://www.khanacademy.org/images/avatars/starky-seed.png" | "https://www.khanacademy.org/images/avatars/starky-seedling.png" | "https://www.khanacademy.org/images/avatars/starky-sapling.png" | "https://www.khanacademy.org/images/avatars/starky-tree.png" | "https://www.khanacademy.org/images/avatars/starky-ultimate.png" | "https://www.khanacademy.org/images/avatars/aqualine-seed.png" | "https://www.khanacademy.org/images/avatars/aqualine-seedling.png" | "https://www.khanacademy.org/images/avatars/aqualine-sapling.png" | "https://www.khanacademy.org/images/avatars/aqualine-tree.png" | "https://www.khanacademy.org/images/avatars/aqualine-ultimate.png" | "https://www.khanacademy.org/images/avatars/spunky-sam.png" | "https://www.khanacademy.org/images/avatars/spunky-sam-green.png" | "https://www.khanacademy.org/images/avatars/spunky-sam-orange.png" | "https://www.khanacademy.org/images/avatars/spunky-sam-red.png" | "https://www.khanacademy.org/images/avatars/marcimus.png" | "https://www.khanacademy.org/images/avatars/marcimus-orange.png" | "https://www.khanacademy.org/images/avatars/marcimus-red.png" | "https://www.khanacademy.org/images/avatars/marcimus-purple.png" | "https://www.khanacademy.org/images/avatars/mr-pink.png" | "https://www.khanacademy.org/images/avatars/mr-pink-green.png" | "https://www.khanacademy.org/images/avatars/mr-pink-orange.png" | "https://www.khanacademy.org/images/avatars/robot_female_1.png" | "https://www.khanacademy.org/images/avatars/robot_female_2.png" | "https://www.khanacademy.org/images/avatars/robot_female_3.png" | "https://www.khanacademy.org/images/avatars/robot_male_1.png" | "https://www.khanacademy.org/images/avatars/robot_male_2.png" | "https://www.khanacademy.org/images/avatars/robot_male_3.png" | "https://www.khanacademy.org/images/avatars/orange-juice-squid.png" | "https://www.khanacademy.org/images/avatars/purple-pi.png" | "https://www.khanacademy.org/images/avatars/purple-pi-pink.png" | "https://www.khanacademy.org/images/avatars/purple-pi-teal.png" | "https://www.khanacademy.org/images/avatars/mr-pants.png" | "https://www.khanacademy.org/images/avatars/mr-pants-green.png" | "https://www.khanacademy.org/images/avatars/mr-pants-orange.png" | "https://www.khanacademy.org/images/avatars/mr-pants-pink.png" | "https://www.khanacademy.org/images/avatars/mr-pants-purple.png" | "https://www.khanacademy.org/images/avatars/old-spice-man.png" | "https://www.khanacademy.org/images/avatars/old-spice-man-blue.png" | "https://www.khanacademy.org/images/avatars/cs-winston.png" | "https://www.khanacademy.org/images/avatars/cs-winston-baby.png" | "https://www.khanacademy.org/images/avatars/cs-ohnoes.png" | "https://www.khanacademy.org/images/avatars/cs-hopper-happy.png" | "https://www.khanacademy.org/images/avatars/cs-hopper-jumping.png" | "https://www.khanacademy.org/images/avatars/cs-hopper-cool.png">
getUserPrograms()
getUserPrograms(
identifier?,sort?,limit?):AsyncGenerator<Program[],void,unknown>
Defined in: src/Client.ts:373
Gets a user's programs
Parameters
identifier?
string
sort?
ListProgramSortOrder = ListProgramSortOrder.TOP
limit?
number = 40
Returns
AsyncGenerator<Program[], void, unknown>
Raw
queries!projectsAuthoredByUser
Example
const client = new Client()
for await (const programs of client.getUserPrograms('bhavjitChauhan')) {
 console.log(programs.map(program => program.title))
}
getUserStatistics()
getUserStatistics(
identifier):Promise<UserStatistics>
Defined in: src/Client.ts:336
Parameters
identifier
undefined | string
Returns
Promise<UserStatistics>
login()
login(
identifier?,password?):Promise<Client>
Defined in: src/Client.ts:202
Logs in to Khan Academy and stores the KAAS cookie
Parameters
identifier?
string
KAID, username or email
password?
string
Returns
Promise<Client>
resolveCachedFeedbackKey()
resolveCachedFeedbackKey(
identifier):Promise<`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}`>
Defined in: src/Client.ts:167
Resolved an encrypted message key to an unencrypted message key and caches the result
Parameters
identifier
`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}` | `kaencrypted_${string}_${string}`
Returns
Promise<`ag5zfmtoYW4tYWNhZGVteX${string}CxIIVXNlckRhdGEi${string}thaWRf${string}${string}${string}`>
Remarks
If the identifier is cached, it will be returned immediately. Otherwise a
QAExpandKeyInfo request will be made to resolve the identifier
See
resolveCachedKaid()
resolveCachedKaid(
identifier):Promise<`kaid_${number}`>
Defined in: src/Client.ts:112
Resolves a username or email to a KAID and caches the result
Parameters
identifier
string
Returns
Promise<`kaid_${number}`>
Remarks
If the identifier is cached, it will be returned immediately. Otherwise a
getUserByUsernameOrEmail request will be made to resolve the identifier
See
Example
const getKaid = async () => await client.resolveCachedKaid('bhavjitChauhan')
console.log(await getKaid()) // Makes a request
console.log(await getKaid()) // Returns cached result
resolveCachedUsername()
resolveCachedUsername(
identifier):Promise<string>
Defined in: src/Client.ts:141
Resolves a KAID to a username and caches the result
Parameters
identifier
string
Returns
Promise<string>
Remarks
If the identifier is cached, it will be returned immediately. Otherwise a
getUserHoverCardProfile request will be made to resolve the identifier
See
Example
const getUsername = async () => await client.resolveCachedUsername('kaid_376749826184384230772276')
console.log(await getUsername()) // Makes a request
console.log(await getUsername()) // Returns cached result