diff --git a/spotify-web-api-js/spotify-web-api-js-tests.ts b/spotify-web-api-js/spotify-web-api-js-tests.ts
new file mode 100644
index 0000000000..28f848642a
--- /dev/null
+++ b/spotify-web-api-js/spotify-web-api-js-tests.ts
@@ -0,0 +1,70 @@
+// Test for the type definitions for spotify-web-api-js
+// Project: https://github.com/JMPerez/spotify-web-api-js
+// Definitions by: Niels Kristian Hansen Skovmand, https://github.com/skovmand
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+// This test-file assumes the following two d.ts files to be present.
+
+///
+///
+
+var spotify = new SpotifyWebApi();
+
+/**
+ * Tests getAlbums
+ */
+spotify.getAlbums(['1uw3ISK6Khq5xVWF1GWTjt', '5R8N32ocA6RqSxibt4W6x3'], { market: 'DK' })
+.then(results => {
+ results.albums.forEach(album => {
+ album.images.forEach(image => {
+ console.log('Image URL: ' + image.url.toUpperCase());
+ })
+ });
+});
+
+
+
+/**
+ * Tests getAlbum with an error
+ */
+function albumSearchCallback(error: SpotifyWebApiJs.ErrorObject, results: SpotifyApi.SingleAlbumResponse) {
+ console.log(error.status.toString() + " - message is: " + error.statusText);
+};
+
+spotify.getAlbum('xxx1uw3ISK6Khq5xVWF1GWTjt', albumSearchCallback);
+
+
+
+/**
+ * Tests getCategories with a callback
+ */
+function trackSearchCallback(error: SpotifyWebApiJs.ErrorObject, results: SpotifyApi.TrackSearchResponse) {
+ console.log("Found a total of " + results.tracks.total + " tracks");
+ var onlyExplicitTracks = results.tracks.items.filter(track => {
+ return track.explicit;
+ });
+ onlyExplicitTracks.forEach(track => console.log(track.name));
+};
+
+spotify.searchTracks("Love itself", {limit: 5, market: 'DK'}, trackSearchCallback);
+
+
+/**
+ * Tests getting a users public profile
+ */
+spotify.getUser('physicaltunes')
+.then(results => {
+ console.log(results.id.toUpperCase(),
+ 'Followers: ' + results.followers.total.toString());
+});
+
+
+/**
+ * Tests getting top tracks
+ */
+spotify.getArtistTopTracks('07QEuhtrNmmZ0zEcqE9SF6', 'DK')
+.then(results => {
+ results.tracks.forEach(track => {
+ console.log(track.name, track.artists.shift().name);
+ })
+});
\ No newline at end of file
diff --git a/spotify-web-api-js/spotify-web-api-js.d.ts b/spotify-web-api-js/spotify-web-api-js.d.ts
new file mode 100644
index 0000000000..c26748353a
--- /dev/null
+++ b/spotify-web-api-js/spotify-web-api-js.d.ts
@@ -0,0 +1,534 @@
+// Type definitions for spotify-web-api-js
+// Project: https://github.com/JMPerez/spotify-web-api-js
+// Definitions by: Niels Kristian Hansen Skovmand, https://github.com/skovmand
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+///
+
+/**
+ * Declare SpotifyWebApi variable, sincle that is the name of the function in spotify-web-api-js.
+ */
+declare var SpotifyWebApi: SpotifyWebApiJs.SpotifyWebApiJsStatic;
+
+declare module SpotifyWebApiJs {
+ /**
+ * An optional callback that receives 2 parameters. The first
+ * one is the error object (null if no error), and the second is the value if the request succeeded.
+ */
+ interface ResultsCallback {
+ (error: ErrorObject, value: T) : any
+ }
+
+ /**
+ * Describes the regular error object: https://developer.spotify.com/web-api/user-guide/#error-details
+ */
+ interface ErrorObject {
+ status: number,
+ response: string,
+ statusText: string
+ }
+
+ /**
+ * Describes the static side of SpotifyApi. Get a new instance of the SpotifyApi.
+ */
+ interface SpotifyWebApiJsStatic {
+ new(): SpotifyApiJs;
+ }
+
+ /**
+ * Describes an instance of SpotifyApi
+ */
+ interface SpotifyApiJs {
+ /**
+ * Fetches a resource through a generic GET request.
+ *
+ * @param url The URL to be fetched
+ * @param callback An optional callback
+ */
+ getGeneric(url: string, callback?: ResultsCallback