NAV Navbar
shell ruby

Freefeed API

Unoficial Freefeed API documentation.

Authentication

To obtain API token:

require 'freefeed'

client = Freefeed::Client.new()

client.authenticate(username: 'yourusername', password: 'yourpassword')
curl "https://freefeed.net/v1/session"
  -X POST
  -d "username=yourusername&password=yourpassword"

The above command returns JSON structured like this:

{
  "users": {
    "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
    "username": "yourusername",
    "type": "user",
    "screenName": "your FUNNY username",
    "createdAt": "1538770654480",
    "updatedAt": "1538770654480",
    "isPrivate": "0",
    "isProtected": "0",
    "profilePictureLargeUrl": "",
    "profilePictureMediumUrl": "",
    "statistics": {
      "posts": "9",
      "likes": "0",
      "comments": "0",
      "subscribers": "0",
      "subscriptions": "2"
    },
    "administrators": [
      "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    ]
  },
  "admins": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "type": "user",
      "screenName": "your FUNNY username",
      "updatedAt": "1538770654480",
      "isPrivate": "0",
      "isProtected": "0",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "administrators": [
        {

        }
      ],
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "authToken": "yourFreefeedAPIToken"
}

To authenticate by the API key, use this code:

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
  -H "x-authentication-token: yourFreefeedAPIToken"

Make sure to replace yourFreefeedAPIToken with your API key.

Freefeed uses API keys to allow access to the API. You can get your API key on the settings page (BetterFeed should be turned on), or on the settings page of m.freefeed.net frontend (no need for BetterFeed).

Or you can obtain your API key by providing your username and password.

HTTP Request

POST https://freefeed.net/v1/session

POST Payload

Parameter Description
username Your username
password Your password

Freefeed expects for the API key to be included in most API requests to the server in a header that looks like the following:

x-authentication-token: yourFreefeedAPIToken

Attachments

Create Attachment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')
Freefeed::Attachment.create(
  client,
  file: Faraday::UploadIO.new("/path/to/your/file.jpg", 'image/jpeg')
)
curl "https://freefeed.net/v1/attachments"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -F "file=@/path/to/your/file.jpg"

The above command returns JSON structured like this:

{
  "attachments": {
    "id": "dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0",
    "fileName": "file.jpg",
    "fileSize": 75694,
    "url": "https:\/\/media.freefeed.net\/attachments\/dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0.jpg",
    "thumbnailUrl": "https:\/\/media.freefeed.net\/attachments\/thumbnails\/dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0.jpg",
    "imageSizes": {
      "o": {
        "w": 700,
        "h": 465,
        "url": "https:\/\/media.freefeed.net\/attachments\/dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0.jpg"
      },
      "t": {
        "w": 263,
        "h": 175,
        "url": "https:\/\/media.freefeed.net\/attachments\/thumbnails\/dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0.jpg"
      },
      "t2": {
        "w": 527,
        "h": 350,
        "url": "https:\/\/media.freefeed.net\/attachments\/thumbnails2\/dd2f5eaa-dad8-439a-93cc-6bdcf74ecee0.jpg"
      }
    },
    "mediaType": "image",
    "createdAt": 1539380940526,
    "updatedAt": 1539380940526,
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
  },
  "admins": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "type": "user",
      "screenName": "your FUNNY username",
      "updatedAt": "1538770654480",
      "isPrivate": "0",
      "isProtected": "0",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "administrators": [
        {

        }
      ],
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "type": "user",
      "screenName": "your FUNNY username",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "isPrivate": "0",
      "isProtected": "0",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "2"
      },
      "administrators": [
        "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
      ]
    }
  ]
}

This endpoint creates an attachment.

HTTP Request

Multipart upload request:

POST https://freefeed.net/v1/attachments

Post payload

Parameter Description
file Contents of a file to be uploaded. Must be posted using multipart/form-data in the usual way that files are uploaded via the browser.

Bookmarklet

Create Bookmarklet

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')
bookmarklet = Freefeed::Types::Bookmarklet.new(
  title: 'New Post',
  comment: 'First comment',
  image: 'http://example.com/image.jpeg'
)
Freefeed::Bookmarklet.create(client, bookmarklet)
curl "https://freefeed.net/v1/bookmarklet"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -H "content-type: application/json"
  -d '{"Title":"New Post","comment":"First comment","image":"http://example.com/image.jpeg"}'

The above command returns JSON structured like this:

{
  "posts": {
    "id": "7ef5649e-ef13-4a26-aeee-e9c33d94cd0f",
    "body": "New Post",
    "commentsDisabled": "0",
    "createdAt": "1539429526882",
    "updatedAt": "1539429526882",
    "commentLikes": 0,
    "ownCommentLikes": 0,
    "omittedCommentLikes": 0,
    "omittedOwnCommentLikes": 0,
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
    "postedTo": [
      "28c68cc1-5bb4-40bd-9767-155c1de480a0"
    ],
    "comments": [
      "ebf22ee2-8825-420e-9e0a-b7eaf2f669f9"
    ],
    "attachments": [
      "f508e4f2-bc0d-4648-a364-fd004ef30a26"
    ],
    "likes": [

    ],
    "omittedComments": 0,
    "omittedLikes": 0
  },
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "youru FUNNY sername",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "11",
        "likes": "0",
        "comments": "4",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "subscriptions": [
    {
      "id": "28c68cc1-5bb4-40bd-9767-155c1de480a0",
      "name": "Posts",
      "user": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    }
  ],
  "subscribers": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "11",
        "likes": "0",
        "comments": "4",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "comments": [
    {
      "id": "ebf22ee2-8825-420e-9e0a-b7eaf2f669f9",
      "body": "First comment",
      "createdAt": "1539429527056",
      "updatedAt": "1539429527056",
      "hideType": 0,
      "likes": 0,
      "hasOwnLike": false,
      "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    }
  ],
  "attachments": [
    {
      "id": "f508e4f2-bc0d-4648-a364-fd004ef30a26",
      "fileName": "1fd58ad4-4ce4-47dd-a91c-0a6ddfb31ccb.jpg",
      "fileSize": "42494",
      "url": "https:\/\/media.freefeed.net\/attachments\/f508e4f2-bc0d-4648-a364-fd004ef30a26.jpg",
      "thumbnailUrl": "https:\/\/media.freefeed.net\/attachments\/f508e4f2-bc0d-4648-a364-fd004ef30a26.jpg",
      "imageSizes": {
        "o": {
          "w": 350,
          "h": 175,
          "url": "https:\/\/media.freefeed.net\/attachments\/f508e4f2-bc0d-4648-a364-fd004ef30a26.jpg"
        }
      },
      "mediaType": "image",
      "createdAt": "1539429526723",
      "updatedAt": "1539429526723",
      "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    }
  ]
}

This endpoint creates a post (optionally with a comment and an attachment).

HTTP Request

Multipart upload request:

POST https://freefeed.net/v1/bookmarklet

JSON Body Parameters

Parameter Type Required Description
title String Yes A body of the post. Must include at least one \S character
comment String No First comment to the post
image String No URL of an image attachment to the post
images Array of String No Array or URLs of image attachments to the post
meta MetaBookmarklet No

MetaBookmarklet

Parameter Type Required Description
feeds String or Array of String Yes Username or groupname or array of username and/or groupnames which the post should be posted to

Comments

Create Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

comment = Freefeed::Types::CommentCreate.new(
  comment: { body: "Hi, love!", postId: '5579b79b-c5f5-464c-b101-638de4a8f335'}
)

Freefeed::Comment.create(client, comment)
curl "https://freefeed.net/v1/comments"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -H "content-type: application/json"
  -d '{"comment":{"body":"Hi, love!","postId":"5579b79b-c5f5-464c-b101-638de4a8f335"}}'

The above command returns JSON structured like this:

{
  "comments": {
    "id": "8cb67cab-0b4e-46ce-94bb-90b6eb2cc092",
    "body": "Hi, love!",
    "createdAt": "1539384483129",
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
  },
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "3",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "admins": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "3",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ]
}

This endpoint creates a comment.

HTTP Request

POST https://freefeed.net/v1/comments

JSON Body Parameters

Parameter Type Required Description
comment CommentCreate Yes See CommentCreate

CommentCreate

Parameter Type Required Description
body String Yes A body of the comment. Must include at least one \S character
postId String Yes Id of the post for the comment

Update Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

comment = Freefeed::Types::CommentUpdate.new(comment: { body: "Bye bye happiness"})

Freefeed::Comment.update(client, {id: '8cb67cab-0b4e-46ce-94bb-90b6eb2cc092'}, comment)
curl "https://freefeed.net/v1/comments/8cb67cab-0b4e-46ce-94bb-90b6eb2cc092"
  -X PUT
  -H "x-authentication-token: yourFreefeedAPIToken"
  -H "content-type: application/json"
  -d '{"comment":{"body":"Bye bye happiness"}}'

The above command returns JSON structured like this:

{
  "comments": {
    "id": "8cb67cab-0b4e-46ce-94bb-90b6eb2cc092",
    "body": "Bye bye happiness",
    "createdAt": "1539384483129",
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
  },
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "3",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ],
  "admins": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "3",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ]
}

This endpoint updates a comment.

HTTP Request

PUT https://freefeed.net/v1/comments/<ID>

URL Parameters

Parameter Description
ID The ID of the comment to update

JSON Body Parameters

Parameter Type Required Description
comment CommentUpdate Yes See CommentUpdate

CommentUpdate

Parameter Type Required Description
body String Yes A body of the comment. Must include at least one \S character

Delete Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Comment.destroy(client, id: '8cb67cab-0b4e-46ce-94bb-90b6eb2cc092')
curl "https://freefeed.net/v1/comments/8cb67cab-0b4e-46ce-94bb-90b6eb2cc092"
  -X DELETE
  -H "x-authentication-token: yourFreefeedAPIToken"

The above command returns empty JSON

{}

This endpoint deletes a specific comment.

HTTP Request

DELETE https://freefeed.net/v1/comments/<ID>

URL Parameters

Parameter Description
ID The ID of the comment to delete

Errors

Code JSON
403 {"err":"You don't have permission to delete this comment"}
404 {"err":"Can not find comment"}

Like Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Comment.like(client, id: '56d1864d-0d58-49b8-9827-109850991f60')
curl "https://freefeed.net/v2/comments/56d1864d-0d58-49b8-9827-109850991f60/like"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns JSON structured like this:

{
  "likes": [
    {
      "userId": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "createdAt": "2018-10-12T23:32:10.109Z"
    }
  ],
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "2",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ]
}

This endpoint likes a specific post.

HTTP Request

POST https://freefeed.net/v2/comments/<ID>/like

URL Parameters

Parameter Description
ID The ID of the comment to like

Unlike Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Comment.unlike(client, id: '56d1864d-0d58-49b8-9827-109850991f60')
curl "https://freefeed.net/v2/comments/56d1864d-0d58-49b8-9827-109850991f60/unlike"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns JSON structured like this:

{"likes":[],"users":[]}

This endpoint likes a specific post.

HTTP Request

POST https://freefeed.net/v2/comments/<ID>/unlike

URL Parameters

Parameter Description
ID The ID of the comment to unlike

Get Likes of a Comment

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Comment.likes(client, id: '56d1864d-0d58-49b8-9827-109850991f60')
curl "https://freefeed.net/v2/comments/56d1864d-0d58-49b8-9827-109850991f60/likes"
  -H "x-authentication-token: yourFreefeedAPIToken"

The above command returns JSON structured like this:

{
  "likes": [
    {
      "userId": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "createdAt": "2018-10-12T23:32:10.109Z"
    }
  ],
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "9",
        "likes": "0",
        "comments": "2",
        "subscribers": "0",
        "subscriptions": "2"
      }
    }
  ]
}

This endpoint returns likes of a specific comment.

HTTP Request

GET https://freefeed.net/v2/comments/<ID>/likes

URL Parameters

Parameter Description
ID The ID of the comment for which you want to get likes

Posts

Get Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.get(client, id: '7c70927a-4e51-49e7-bfe1-33bc4c1c0618')
curl "https://freefeed.net/v2/posts/7c70927a-4e51-49e7-bfe1-33bc4c1c0618"
  -H "x-authentication-token: yourFreefeedAPIToken"

The above command returns JSON structured like this:

{
  "posts": {
    "id": "7c70927a-4e51-49e7-bfe1-33bc4c1c0618",
    "body": "FAQ: frequently asked questions (and answers). If you have more questions, please contact @support.",
    "commentsDisabled": "1",
    "createdAt": "1449074608680",
    "updatedAt": "1475924950194",
    "commentLikes": 0,
    "ownCommentLikes": 0,
    "omittedCommentLikes": 0,
    "omittedOwnCommentLikes": 0,
    "createdBy": "5df98f17-6085-4a14-bcdc-1ae07cb1957f",
    "postedTo": [
      "8b7db31d-d5f4-41be-a159-829cf9470007"
    ],
    "comments": [
      "1f96e911-e1d7-44b7-81f1-fa3da5bb449e",
      "1d5f34cd-59fb-4967-af90-ae56a60d5392"
    ],
    "attachments": [

    ],
    "likes": [
      "ec3a56c7-19b1-4f07-864c-9e643c97ced3",
      "46dbbdbe-efbb-4f91-a853-b91d199176a1",
      "6726abcb-dcc3-4115-9b13-16332dd4cb1d"
    ],
    "omittedComments": 25,
    "omittedLikes": 8
  },
  "users": [
    {
      "id": "5df98f17-6085-4a14-bcdc-1ae07cb1957f",
      "username": "welcome",
      "screenName": "welcome",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1448302642164",
      "updatedAt": "1452687756552",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "3",
        "likes": "1",
        "comments": "40",
        "subscribers": "2009",
        "subscriptions": "0"
      }
    },
  ],
  "subscriptions": [
    {
      "id": "8b7db31d-d5f4-41be-a159-829cf9470007",
      "name": "Posts",
      "user": "5df98f17-6085-4a14-bcdc-1ae07cb1957f"
    }
  ],
  "subscribers": [
    {
      "id": "5df98f17-6085-4a14-bcdc-1ae07cb1957f",
      "username": "welcome",
      "screenName": "welcome",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1448302642164",
      "updatedAt": "1452687756552",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "3",
        "likes": "1",
        "comments": "40",
        "subscribers": "2009",
        "subscriptions": "0"
      }
    }
  ],
  "comments": [
    {
      "id": "1f96e911-e1d7-44b7-81f1-fa3da5bb449e",
      "body": "== About FreeFeed:",
      "createdAt": "1449074650399",
      "updatedAt": "1475924960830",
      "hideType": 0,
      "likes": 0,
      "hasOwnLike": false,
      "createdBy": "5df98f17-6085-4a14-bcdc-1ae07cb1957f"
    },
    {
      "id": "1d5f34cd-59fb-4967-af90-ae56a60d5392",
      "body": "If you have more questions, you can ask them at @support. If you have anything to add to the FAQ here, you can do it here: https:\/\/freefeed.net\/freefeed\/ef954a33-39a3-43e5-a62d-698ed55c9548",
      "createdAt": "1449075294335",
      "updatedAt": "1475928090704",
      "hideType": 0,
      "likes": 0,
      "hasOwnLike": false,
      "createdBy": "5df98f17-6085-4a14-bcdc-1ae07cb1957f"
    }
  ],
  "attachments": [

  ]
}

This endpoint retrieves a specific post.

HTTP Request

GET https://freefeed.net/v2/posts/<ID>

URL Parameters

Parameter Description
ID The ID of the post to retrieve

Create Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

post = Freefeed::Types::PostCreate.new(
  {
    post: { 
      body: 'Hello World!'
    },
    meta: {
      feeds: ['username']
    }
  }
)

Freefeed::Post.create(client, post)
curl "https://freefeed.net/v1/posts"
  -H "content-type: application/json"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -d '{"post":{"body":"HelloWorld!"},"meta":{"feeds":["yourusername"],"commentsDisabled":false}}'

The above command returns JSON structured like this:

{
  "posts": {
    "id": "7c70927a-4e51-49e7-bfe1-33bc4c1c0618",
    "body": "HelloWorld!",
    "commentsDisabled": "0",
    "createdAt": "1539348845566",
    "updatedAt": "1539348845566",
    "commentLikes": 0,
    "ownCommentLikes": 0,
    "omittedCommentLikes": 0,
    "omittedOwnCommentLikes": 0,
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
    "postedTo": [
      "28c68cc1-5bb4-40bd-9767-155c1de480a0"
    ],
    "comments": [

    ],
    "attachments": [

    ],
    "likes": [

    ],
    "omittedComments": 0,
    "omittedLikes": 0
  },
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "10",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "1"
      }
    }
  ],
  "subscriptions": [
    {
      "id": "28c68cc1-5bb4-40bd-9767-155c1de480a0",
      "name": "Posts",
      "user": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    }
  ],
  "subscribers": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "10",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "1"
      }
    }
  ],
  "comments": [

  ],
  "attachments": [

  ]
}

This endpoint creates a post.

HTTP Request

POST https://freefeed.net/v1/posts

JSON Body Parameters

Parameter Type Required Description
post PostCreate Yes See PostCreate
meta MetaCreate Yes See MetaCreate

PostCreate

Parameter Type Required Description
body String Yes A body of the post. Must include at least one \S character
attachments Array of UID No Array of previously uploaded attachmets ids

MetaCreate

Parameter Type Required Description
commentsDisabled Boolean No Indicates whether comments for the post should be disabled (Default is false)
feeds String or Array of String Yes Username or groupname or array of username and groupnames which the post should be posted to

Delete Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.destroy(client, id: '7c70927a-4e51-49e7-bfe1-33bc4c1c0618')
curl "https://freefeed.net/v1/posts/7c70927a-4e51-49e7-bfe1-33bc4c1c0618"
  -X DELETE
  -H "x-authentication-token: yourFreefeedAPIToken"

The above command returns JSON structured like this:

{
  "postStillAvailable": false
}

This endpoint deletes a specific post.

HTTP Request

DELETE https://freefeed.net/v1/posts/<ID>

URL Parameters

Parameter Description
ID The ID of the post to delete

Errors

Code JSON
403 {"err":"You can't delete another user's post"}
404 {"err":"Post not found"}

Update Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

post = Freefeed::Types::PostUpdate.new( { post: { body: 'HelloWorldAgain!' } } )

Freefeed::Post.update(client, {id: '7c70927a-4e51-49e7-bfe1-33bc4c1c0618'}, post)
curl "https://freefeed.net/v1/posts/7c70927a-4e51-49e7-bfe1-33bc4c1c0618"
  -X PUT
  -H "content-type: application/json"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -d '{"post":{"body":"HelloWorldAgain!"}}'

The above command returns JSON structured like this:

{
  "posts": {
    "id": "7c70927a-4e51-49e7-bfe1-33bc4c1c0618",
    "body": "HelloWorldAgain!",
    "commentsDisabled": "0",
    "createdAt": "1539348845566",
    "updatedAt": "1539348845566",
    "commentLikes": 0,
    "ownCommentLikes": 0,
    "omittedCommentLikes": 0,
    "omittedOwnCommentLikes": 0,
    "createdBy": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
    "postedTo": [
      "28c68cc1-5bb4-40bd-9767-155c1de480a0"
    ],
    "comments": [

    ],
    "attachments": [

    ],
    "likes": [

    ],
    "omittedComments": 0,
    "omittedLikes": 0
  },
  "users": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "10",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "1"
      }
    }
  ],
  "subscriptions": [
    {
      "id": "28c68cc1-5bb4-40bd-9767-155c1de480a0",
      "name": "Posts",
      "user": "920196ff-f2b0-4319-8fb2-626e4ac76d2c"
    }
  ],
  "subscribers": [
    {
      "id": "920196ff-f2b0-4319-8fb2-626e4ac76d2c",
      "username": "yourusername",
      "screenName": "your FUNNY username",
      "isPrivate": "0",
      "isProtected": "0",
      "createdAt": "1538770654480",
      "updatedAt": "1538770654480",
      "type": "user",
      "description": "",
      "profilePictureLargeUrl": "",
      "profilePictureMediumUrl": "",
      "statistics": {
        "posts": "10",
        "likes": "0",
        "comments": "0",
        "subscribers": "0",
        "subscriptions": "1"
      }
    }
  ],
  "comments": [

  ],
  "attachments": [

  ]
}

This endpoint updates a specific post.

HTTP Request

PUT https://freefeed.net/v1/posts/<ID>

URL Parameters

Parameter Description
ID The ID of the post to update

JSON Body Parameters

Parameter Type Required Description
post PostUpdate Yes See PostUpdate

PostUpdate

At least one parameter required!

Parameter Type Required Description
body String No A body of the post. Must include at least one \S character
attachments Array of UID No Array of previously uploaded attachmets ids
feeds Array of String No Array of username and/or groupnames where the post should be posted to

Like Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.like(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/like"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint likes a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/like

URL Parameters

Parameter Description
ID The ID of the post to like

Errors

Code JSON
403 {"err":"You can't like post that you have already liked"}
403 {"err":"You can't like your own post"}
404 {"err":"Can't find post"}

Unlike Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.unlike(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/unlike"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint unlikes a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/unlike

URL Parameters

Parameter Description
ID The ID of the post to unlike

Errors

Code JSON
403 {"err":"You can't un-like post that you haven't yet liked"}
404 {"err":"Can't find post"}

Hide Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.hide(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/hide"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint likes a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/hide

URL Parameters

Parameter Description
ID The ID of the post to like

Errors

Code JSON
404 {"err":"Can't find post"}

Unhide Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.unhide(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/unhide"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint unlikes a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/unhide

URL Parameters

Parameter Description
ID The ID of the post to unlike

Errors

Code JSON
404 {"err":"Can't find post"}

Disable comments for Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.disable_comments(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/disableComments"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint disables comments for a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/disableComments

URL Parameters

Parameter Description
ID The ID of the post to like

Errors

Code JSON
403 {"err":"You can't disable comments for another user's post"}
404 {"err":"Post not found"}

Enable comments for Post

require 'freefeed'

client = Freefeed::Client.new('yourFreefeedAPIToken')

Freefeed::Post.enable_comments(client, id: 'b4a6aca7-c0e0-4b84-a586-30abbf8c29b2')
curl "https://freefeed.net/v1/posts/b4a6aca7-c0e0-4b84-a586-30abbf8c29b2/enableComments"
  -H "x-authentication-token: yourFreefeedAPIToken"
  -X POST

The above command returns empty JSON:

{}

This endpoint enables comments for a specific post.

HTTP Request

POST https://freefeed.net/v1/posts/<ID>/enableComments

URL Parameters

Parameter Description
ID The ID of the post to unlike

Errors

Code JSON
403 {"err":"You can't enable comments for another user's post"}
404 {"err":"Post not found"}