Getting started

We are not affiliated with floatplane.com / Floatplane Media / Linus Media Group. This is a community driven, open source project.

In this little Getting started example we will use all of the endpoints required to make a simple app that lets you log in, choose one of your subscribed creators, choose a video from them and download that video.

Logging in

Pretty much all requests to floatplaneapi.com require you to send along an Authentication token. You can think of it as a sort of username/password combination that uniquely identifies you as a user. You receive this token by logging into your account.

To get your authentication token you need to log in. You can do this by sending a POST request with your username and password to https://floatplaneapi.com/v1/auth/login.

For now we will only cover one factor authentication. The guide for 2FA can be found here.

post
Login with username and password

https://floatplaneapi.com/v1/auth/login
Request
Response
Body Parameters
password
required
string
A users password.
username
required
string
A users username.
200: OK
{
"user": {
"id": "5c4dda93ff5da432730949fa",
"username": "joe1",
"profileImage": {
"width": 512,
"height": 512,
"path": "https://pbs.floatplanecdn.com/profile_images/default/user2.png",
"childImages": [{
"width": 250,
"height": 250,
"path": "https://pbs.floatplanecdn.com/profile_images/default/user2_250x250.png"
}, {
"width": 100,
"height": 100,
"path": "https://pbs.floatplanecdn.com/profile_images/default/user2_100x100.png"
}]
}
},
"needs2FA": false,
"authorization": "s:-_aXJCoSvu-p9N8oRo5aoRJB0yg9r0nm.hC02y6dSJT35JmTBTcFKhYDNDRfHUC3hfe6dG9QbWZ0"
}
400: Bad Request
{
"error": "username or password not supplied or misformed"
}
401: Unauthorized
{
"error": "username or password incorrect"
}
500: Internal Server Error
{
"error": "internal server error"
}

In the response you can now find the authorization token. You can use this to make requests on behalf of the user. You will need this code for pretty much all requests.

Getting a users subscriptions

Now that you have the user logged in you want to get their subscriptions so you can display the correct videos / creators to them.

get
Get user subscriptions

https://floatplaneapi.com/v1/user/subscriptions
Request
Response
Headers
x-fpapi-token
required
string
This should be a valid authentication token.
200: OK
[{
"startDate": "2018-09-11T05:00:00.000Z",
"endDate": "2019-02-10T05:00:00.000Z",
"paymentID": 451,
"paymentCancelled": false,
"plan": {
"id": "59f94c0bdd241b70349eb72f",
"title": "Linus Tech Tips",
"description": "Basic package for Linus Tech Tips",
"price": "3.00",
"currency": "usd",
"interval": "month",
"intervalCount": 1,
"logo": null
},
"creator": "59f94c0bdd241b70349eb72b"
}]
403: Forbidden
{
"id": "woah-ky8u-ayz7",
"errors": [{
"id": "woah-ky8u-ayz7",
"name": "notLoggedInError",
"message": "You must be logged-in to access this resource."
}],
"message": "You must be logged-in to access this resource."
}
500: Internal Server Error
{
"error": "internal server error"
}

In the response there is a creator __id for every subscription. You will need this ID to make a request to the server to get information about that creator.

Getting a creators last few videos

You can now make a request with the creator ID to get the last few videos. You can specify how many videos you want to get. If you request more than that is available you will just get back the videos that are available.

get
Get creator videos

https://floatplaneapi.com/v1/creator/videos
Request
Response
Headers
x-fpapi-token
required
string
This should be a valid authentication token.
Query Parameters
creatorGUID
required
string
The creators GUID / ID.
limit
required
string
The amount of videos you request from the server.
200: OK
[{
"title": "Sorry, Razer.. I’m not switching",
"guid": "8dYZDar1Xs",
"description": "For over a year the Blade Stealth has been in my backpack, but the new one won't be taking it's place.\n\nOur Affiliates, Referral Programs, and Sponsors: https://linustechtips.com/main/topic/75969-linus-tech-tips-affiliates-referral-programs-and-sponsors\nGet Private Internet Access today at http://geni.us/7lLuafK\n\nLinus Tech Tips merchandise at http://www.LTTStore.com/ \nLinus Tech Tips posters at http://crowdmade.com/linustechtips\nOur Test Benches on Amazon: https://www.amazon.com/shop/linustechtips \nOur production gear: http://geni.us/cvOS\n\nTwitter - https://twitter.com/linustech\nFacebook - http://www.facebook.com/LinusTech\nInstagram - https://www.instagram.com/linustech\nTwitch - https://www.twitch.tv/linustech \n\nIntro Screen Music Credit:\nTitle: Laszlo - Supernova\nVideo Link: https://www.youtube.com/watch?v=PKfxmFU3lWY\niTunes Download Link: https://itunes.apple.com/us/album/supernova/id936805712\nArtist Link: https://soundcloud.com/laszlomusic\n\nOutro Screen Music Credit: Approaching Nirvana - Sugar High http://www.youtube.com/approachingnirvana",
"private": false,
"releaseDate": "2019-01-26T19:41:55.450Z",
"duration": 0,
"creator": "59f94c0bdd241b70349eb72b",
"thumbnail": {
"width": 1920,
"height": 1080,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/8dYZDar1Xs/456686647495831_1548531473712.jpeg",
"childImages": [{
"width": 400,
"height": 225,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/8dYZDar1Xs/456686647495831_1548531473712_400x225.jpeg"
}, {
"width": 1200,
"height": 675,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/8dYZDar1Xs/456686647495831_1548531473712_1200x675.jpeg"
}]
}
}, {
"title": "TL: Xbox with Ray Tracing!?",
"guid": "KX3D2ZyYSV",
"description": "NEWS SOURCES:\n\nMORE LIKE CHEAT-MIND\nhttps://hexus.net/tech/news/software/126815-deepmind-alphastar-ai-beats-humans-10-1-starcraft-ii/\nhttps://www.youtube.com/watch?v=cUTMhmVh1qs\nhttps://www.youtube.com/watch?v=UuhECwm31dM\n\nWHATSFACESTAGRAPPESSENGER\nhttps://www.nytimes.com/2019/01/25/technology/facebook-instagram-whatsapp-messenger.html\nhttps://www.bbc.com/news/technology-47001460\nZuck defends FB’s business model\nhttps://www.engadget.com/2019/01/25/mark-zuckerberg-defends-facebook-with-the-facts-op-ed/\n\nCAN’T COPYRIGHT DANCES, OR API’S\nhttps://arstechnica.com/tech-policy/2019/01/google-asks-supreme-court-to-overrule-disastrous-ruling-on-api-copyrights/\n2018 ruling https://arstechnica.com/tech-policy/2018/03/googles-use-of-the-java-api-packages-was-not-fair-appeals-court-rules/\nhttps://www.zdnet.com/article/google-oracle-java-win-will-kill-software-development-so-supreme-court-must-rule/\nhttps://www.theregister.co.uk/2019/01/25/google_supreme_court_oracle_java/\n\nQUICK BITS\n\nTHE NO-HOLE TREND\nhttps://www.theverge.com/circuitbreaker/2019/1/24/18195191/vivo-apex-2019-announced-specs-features\n\nIS IT…FOR HALF LIFE 3…?\nhttps://www.gdconf.com/news/get-valves-perspective-future-brain-computer-interfaces-gdc-2019\n\nKEEP A LOOKOUT FOR PIXEL WATCH\nhttps://www.xda-developers.com/pixel-watch-code-names/\n\nUNIMAGINABLE TRAGEDY\nhttps://arstechnica.com/information-technology/2019/01/undersea-cable-damage-wipes-out-most-internet-access-in-tonga-islands/\n\nRTXBOX\nhttps://imgur.com/gallery/i3TnTKk\nhttps://wccftech.com/next-xbox-raytracing/",
"private": false,
"releaseDate": "2019-01-26T02:48:19.401Z",
"duration": 0,
"creator": "59f94c0bdd241b70349eb72b",
"thumbnail": {
"width": 1920,
"height": 1080,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/KX3D2ZyYSV/251078300886836_1548469674583.jpeg",
"childImages": [{
"width": 400,
"height": 225,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/KX3D2ZyYSV/251078300886836_1548469674583_400x225.jpeg"
}, {
"width": 1200,
"height": 675,
"path": "https://pbs.floatplanecdn.com/video_thumbnails/KX3D2ZyYSV/251078300886836_1548469674583_1200x675.jpeg"
}]
}
}]
403: Forbidden
{
"id": "woah-ky8u-ayz7",
"errors": [{
"id": "woah-ky8u-ayz7",
"name": "notLoggedInError",
"message": "You must be logged-in to access this resource."
}],
"message": "You must be logged-in to access this resource."
}
500: Internal Server Error
{
"error": "internal server error"
}

You have now received an array of videos. The GUID tag in tag in the videos is used to get more information about the video.

Downloading the video

Now that we know the IDs of all videos we can download one. To do this we need to request a video download URL from the server. The server will check if you have the permissions to watch that video and if so will send you a URL with a time limited download token. This token is only valid for a certain amount of time, and is completely independent from your authentication key.

get
Downloading a video

https://floatplaneapi.com/v1/video/url/download
Request
Response
Headers
x-fpapi-token
required
string
This should be a valid authentication token.
Query Parameters
quality
required
number
The resolution of the video. Can be 360, 480, 720 or 1080
videoGUID
required
string
The videos GUID / ID.
200: OK
"https://Edge01-na.floatplane.com/Videos/H2hPvmNS7R/1080.mp4?wmsAuthSign=c2VydmVyX3RpbWU9MS8yNy8yMDE5IDU6MTc6MTUgUE0maGFzaF92YWx1ZT12QXdpc3pvYU5KemxqdGdYeDFhSVZBPFsaWRtadGVzPW51TIwJmlkPTVhOWE5OGM4NT0mdmjNkYTIwM2EzNmNmMzlmMA=="
403: Forbidden
{
"id": "1qye-4cp1-fw8s",
"errors": [{
"id": "1qye-4cp1-fw8s",
"name": "notSubscribedError",
"message": "You do not have the necessary subscription to access this item."
}],
"message": "You do not have the necessary subscription to access this item."
}
500: Internal Server Error
{
"error": "internal server error"
}

Now that you have the download URL you can start downloading the video.

The URL that is returned is returned as JSON. This means that there are quotation marks (") around the string of the URL. Make sure to parse the body as JSON like any other request. You will get back a string.

Do NOT use this endpoint for streaming. There is a separate endpoint that serves m3u8 playlists. This is more efficient when skipping through the video (especially on slow connections.)

Other endpoints

There are many other endpoints for various other functions like comments, live streams and so on. All of these use the same basic concept described here.