Khan Academy Web API Documentation
The Khan Academy open source developers exposed the list of playlists, and videos per playlist as a JSON service. The following documentation describes the endpoints.Playlists
http://www.khanacademy.org/api/playlistsReturns an array of objects which contain information about a playlist
[ { "api_url": "http:\/\/www.khanacademy.org\/api\/playlistvideos?playlist=Biology", "youtube_url": "http:\/\/gdata.youtube.com\/feeds\/api\/playlists\/7A9646BC5110CF64", "title": "Biology", "description": "Covers topics seen in a first year college or high school biology course.", "youtube_id": "7A9646BC5110CF64" } ]
Playlist Videos
http://www.khanacademy.org/api/playlistvideos?playlist=AlgebraReturns an array of videos.
[ { "description": "Introduction to basic algebraic equations of the form Ax=B", "title": "Simple Equations", "ka_url": "http:\/\/www.khanacademy.org\/video\/simple-equations?playlist=Algebra", "url": "http:\/\/www.youtube.com\/watch?v=9Ek61w1LxSc&feature=youtube_gdata_player", "youtube_id": "9Ek61w1LxSc", "keywords": "algebra, introduction", "readable_id": "simple-equations" } ]
The following data contracts allow the use of the DataContractJsonSerializer to serialize the json into an object graph when accessing the API via C#.
[DataContract] public class JsonCategory { [DataMember(Name = "api_url")] public string Url { get; set; } [DataMember(Name = "youtube_url")] public string YoutubeUrl { get; set; } [DataMember(Name = "title")] public string Title { get; set; } [DataMember(Name = "description")] public string Description { get; set; } [DataMember(Name = "youtube_id")] public string YoutubeId { get; set; } } [DataContract] public class JsonVideo { [DataMember(Name = "ka_url")] public string Url { get; set; } [DataMember(Name = "url")] public string YoutubeUrl { get; set; } [DataMember(Name = "title")] public string Title { get; set; } [DataMember(Name = "description")] public string Description { get; set; } [DataMember(Name="youtube_id")] public string YouTubeId { get; set; } [DataMember(Name="readable_id")] public string ReadableId { get; set; } [DataMember(Name="keywords")] public string Keywords { get; set; } } }