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; }
}
}