Khan / khan-api

Documentation for (and examples of) using the Khan Academy API
http://www.khanacademy.org
377 stars 75 forks source link

Clarification question about Khan Academy API Deprecation #149

Closed logankilpatrick closed 4 years ago

logankilpatrick commented 4 years ago

Hey all, I am thinking about wrapping the Khan Academy API in the Julia Programming language. Is the API going to be totally deprecated? i.e. I should not bother doing this?

jb-1980 commented 4 years ago

I have also created wrappers in node and python, and have the same question.

To dig a little deeper, the endpoints mentioned in the removal notice are at /api/v1/*. This does not mention other endpoints like /api/v2/* and /api/internal/*. Will I still be able to access those endpoints with the current oauth flow?

seandriedger commented 4 years ago

Hey all, I am thinking about wrapping the Khan Academy API in the Julia Programming language. Is the API going to be totally deprecated? i.e. I should not bother doing this?

The entire Khan Academy API will be deprecated next year - some parts in January, and the rest by July 2020- as we focus on providing a world-class end-to-end experience through khanacademy.org and through our mobile app. If you’re planning new work that depends on the API being available, you’ll want to keep in mind that it’s reaching end of life.

I have also created wrappers in node and python, and have the same question.

To dig a little deeper, the endpoints mentioned in the removal notice are at /api/v1/*. This does not mention other endpoints like /api/v2/* and /api/internal/*. Will I still be able to access those endpoints with the current oauth flow?

All REST endpoints, including /api/v2/ and /api/internal/, will also become unavailable by the end of 2020 (exact timing is TBD.) That’s because we’re in the process of rewriting almost all of them into GraphQL as part of a larger, multi-year project underway to modernize our API architecture.

jb-1980 commented 4 years ago

Your position does seem pretty clear: that the API will no longer function by the end of 2020. But we have become so dependent on it that I am reaching for whatever glimmer of hope I can.

All REST endpoints,

Does this possibly mean that you will still allow us to access our students' data via the GraphQL architecture you are creating? I can currently make /api/internal/graphql queries via the current API. But as that is part of the /api/internal/* endpoints, I expect that it should be disappearing by the end of 2020.

Some context: Our school is an online high school that has used Khan Academy exclusively for math for the past 7 years. I have just been able to get our history and social studies teams on board this year. And what has made this logistically possible is our ability to import progress from Khan Academy and award a grade in our gradebooks.

Our school model is asynchronous. So we have created all our content ahead of time, and a student can enroll in a course at any time. Our system will then create a student level calendar of due dates based on the student's start date. This means that we have students all over in their current assignment in the class.

To then record their progress without being able to access the data from the API is like trying to figure out what changed in a pull request without access to the diff. We have to go student by student, assignment by assignment.

So is there any hope that we will continue to be able to programmatically and efficiently import our students' data from Khan Academy into our LMS?

seandriedger commented 4 years ago

Good question! While our current /api/internal/graphql endpoint will be going away during this timeframe, we will continue to have some form of GraphQL interface for our site, via a TBD API route. However because we’re only planning to use GraphQL for internal development going forward, its contents may change at any time, so I’m afraid that we can’t offer any guarantees of long-term stability.

rexwal commented 4 years ago

We are a school system of about 4,500 students in the Philippines and also depend heavily on the API use. It wouldnt have been possible for us to get so many teachers on board without being able to extract the data in an efficient manner.

Moving forward would there be a way for administrators to efficiently extract student progress?

We use the API to send email reports to their parents which has increased student achievement significantly.

seandriedger commented 4 years ago

@rexwal - Thanks so much for giving us insight into how you've been using the API. At this time, we don't have plans to replace the progress endpoint with an alternate solution for administrators. Teachers can continue to log in to Khan Academy and take advantage of our built-in progress reports - and parents can also create accounts and link to their children to follow their progress.

Thanks again for sharing your use case. As we look toward the future, it helps to have visibility into the creative ways teachers and administrators have used our API to accelerate student achievement. While we're laser focused in the near term on building out a world-class experience on khanacademy.org-- including a multi-year upgrade to our backend architecture-- we're always listening for inspiration that can inform our long-term plans.

mbbackus commented 4 years ago

I'm just a teacher, but I use the API every day. Logging in to look at the reports is tedious, time consuming, and doesn't even give me the information I want. By writing a python script that uses the API, I've been able to monitor progress for my students on a daily basis. I'd like to continue to be able to do this, but since the future seems unclear, I think I'm going to start using CMU CS Academy instead. I don't want to start my students on coursework that I will lose the ability to monitor.

seandriedger commented 4 years ago

@mbbackus I'm sorry to hear that, and I encourage you to submit a Feature Request through our help portal, with details about the functionality that you wish our reports offered: https://khanacademy.zendesk.com/hc/en-us/articles/227013768-How-do-I-request-new-features-or-content-