Comments

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

Explanation of Floatplane comments

In the Floatplane API every comment is an object with its own ID. It has a few properties:

  • id is the id of the comment

  • user is the user that posted the comment

  • video is the id of the video the comment was placed under

  • text is the actual content of the comment

  • postDate is the time the comment was originally posted

  • editDate is the time the comment was last edited

  • replying is the comment's id that this comment is a reply to

  • replies is an array of comment objects that replied to this comment

  • interactionCount.like is the amount of likes the comment has

  • interactionCount.dislike is the amount of dislikes the comment has

You can reply on any comment (on the same video), except for on replies. This means you can only reply to top level messages.

On floatplane.com there is a reply button on replies. This button if functionally not different to its top level parent. The difference with that button is the name username it prefills into the comment box when you reply.

Every user has a "state" for every comment: either like, dislike or neutral. You should always be able to go to all three options with one click/tap. The "like" number of every comment should be calculated with the formula below.

interactionCount.likeinteractionCount.dislike=likeinteractionCount.like - interactionCount.dislike= like

Comments can have @username tags in them. If they do these should receive different markup and should show the user activity when clicked / tapped.

Get comments

get
Get comments for video

https://floatplaneapi.com/v1/video/comments
Get a url that you can use to stream the video. URL only valid for a certain amount of time. Returns link to m3u8 stream.
Request
Response
Headers
x-fpapi-token
required
string
The authentication token.
Query Parameters
videoGUID
required
string
The video GUID / ID for the video that you are requesting comments for.
200: OK
{
"comments": [{
"id": "5c4e345fff5da43273094a6f",
"user": "5a9a98c863da203a36cf39f0",
"video": "cexCaGL8UL",
"text": "Test",
"replying": null,
"postDate": "2019-01-27T22:44:47.538Z",
"editDate": "2019-01-27T22:44:47.538Z",
"replies": [{
"id": "5c4e34661ab11032de92ac63",
"user": "5a9a98c863da203a36cf39f0",
"video": "cexCaGL8UL",
"text": "@creativeguy2013 Test Reply 1",
"replying": "5c4e345fff5da43273094a6f",
"postDate": "2019-01-27T22:44:54.176Z",
"editDate": "2019-01-27T22:44:54.176Z",
"interactionCounts": {
"like": 1,
"dislike": 0
}
}, {
"id": "5c4e346dff5da43273094a70",
"user": "5a9a98c863da203a36cf39f0",
"video": "cexCaGL8UL",
"text": "@creativeguy2013 Test Reply 2",
"replying": "5c4e345fff5da43273094a6f",
"postDate": "2019-01-27T22:45:01.215Z",
"editDate": "2019-01-27T22:45:01.215Z",
"interactionCounts": {
"dislike": 1,
"like": 0
}
}],
"interactionCounts": {
"dislike": 0,
"like": 1
},
"totalReplies": 2
}],
"userInteractions": [{
"id": "5c4e34784160af3309528ea7",
"user": "5a9a98c863da203a36cf39f0",
"comment": "5c4e345fff5da43273094a6f",
"type": {
"id": "59f94558450be784110de8e1",
"name": "like",
"displayName": "Likes"
}
}, {
"id": "5c4e347aff5da43273094a71",
"user": "5a9a98c863da203a36cf39f0",
"comment": "5c4e34661ab11032de92ac63",
"type": {
"id": "59f94558450be784110de8e1",
"name": "like",
"displayName": "Likes"
}
}, {
"id": "5c4e347e4160af3309528ea8",
"user": "5a9a98c863da203a36cf39f0",
"comment": "5c4e346dff5da43273094a70",
"type": {
"id": "59f94558450be784110de8e2",
"name": "dislike",
"displayName": "Dislikes"
}
}]
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

There are two parts to this response. The first (comments) is an array of all comments. The second (userInteractions) is an array of all non neutral states the current user has for this video's comments. Every entry has these types:

  • comment is the id of the comment that is either liked or disliked

  • type.name is "like" if liked and "dislike" if disliked

Place/reply to comments

post
Place comment

https://floatplaneapi.com/v1/video/comment
Place a top level comment on a video.
Request
Response
Path Parameters
x-fpapi-token
required
string
The authentication token.
Body Parameters
text
required
string
The content of the comment. May have @usernames in them which might have special highlighting.
videoGUID
required
string
The video id where you want to place the top level comment.
200: OK
{
"comment": {
"id": "5c4081ab2d2ab7110393de93",
"user": "203a36cf38c863d5a9a9a9f0",
"video": "8dYZDar1Xs",
"text": "Good video!",
"replying": null,
"postDate": "2019-01-26T22:39:06.413Z",
"editDate": "2019-01-26T22:39:06.413Z"
}
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

post
Reply to comment

https://floatplaneapi.com/v1/video/comment
Place a reply on a top level comment.
Request
Response
Path Parameters
x-fpapi-token
required
string
The authentication token.
Body Parameters
replying
required
string
The comment you want to reply to.
text
required
string
The content of the comment. May have @usernames in them which might have special highlighting.
videoGUID
required
string
The video id where you want to place the top level comment.
200: OK
{
"comment": {
"id": "5c4081ab2d2ab7110393de93",
"user": "203a36cf38c863d5a9a9a9f0",
"video": "8dYZDar1Xs",
"text": "Good video!",
"replying": "c803a3623d5a9fa9a96cf380",
"postDate": "2019-01-26T22:39:06.413Z",
"editDate": "2019-01-26T22:39:06.413Z"
}
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

Set like / dislike / neutral state on comment

post
Like a comment

https://floatplaneapi.com/v1/video/comment/like
Request
Response
Path Parameters
x-fpapi-token
required
string
The authentication token.
Body Parameters
commentGUID
required
string
The GUID of the comment you want to like.
200: OK
{
"id": "45588411945de809fe150be7",
"user": "203a36cf38c863d5a9a9a9f0",
"comment": "5c4081ab2d2ab7110393de93",
"type": "59f94558450be784110de8e1"
}
400: Bad Request
{
"error": "commentGUID not specified"
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

post
Dislike a comment

https://floatplaneapi.com/v1/video/comment/dislike
Request
Response
Path Parameters
x-fpapi-token
required
string
The authentication token.
Body Parameters
commentGUID
required
string
The GUID of the comment you want to dislike.
200: OK
{
"id": "45588411945de809fe150be7",
"user": "203a36cf38c863d5a9a9a9f0",
"comment": "5c4081ab2d2ab7110393de93",
"type": "59f94558450be784110de8e1"
}
400: Bad Request
{
"error": "commentGUID not specified"
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

post
Neutral a comment

https://floatplaneapi.com/v1/video/comment/neutral
Request
Response
Path Parameters
x-fpapi-token
required
string
The authentication token.
Body Parameters
commentGUID
required
string
The GUID of the comment you want to neutral.
200: OK
OK
400: Bad Request
{
"error": "commentGUID not specified"
}
403: Forbidden
{
"id": "tx7s-uhwb-syn4",
"errors": [{
"id": "tx7s-uhwb-syn4",
"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"
}

When making a comment neutral you will get a non JSON response. Make sure you are not trying to parse this response.