FMLDevelopers

Comments

Comment on a story

POST/comment/{article}Member token required

Requires a user token. Returns the comment (201), 400 if the content is empty, 404 if the story doesn't exist or if parent isn't a comment of this story. If the comment is a reply, the parent comment's author is notified. A member can comment once every 30 seconds. Comments containing forbidden words are flagged.

Parameters

contentrequired
string, required — comment text
parentoptional
integer, optional — id of the comment you're replying to
Request
curl -X POST "https://www.fmylife.com/api/v2/comment/{article}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "content=…"
Response 201
{
  "data": {
    "id": 178,
    "date": null,
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone.",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": 0,
    "thumbdown": 0,
    "userthumbed": 0,
    "report": 0,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [
    {
      "id": 50,
      "site": null,
      "name": "I never take things to heart",
      "description": "Having said that, my 3 comments on that FML were really worth it.",
      "hidden": true,
      "goal": 1,
      "limited": "0",
      "category": 1,
      "total": 7418,
      "illustration": "50-1.gif"
    }
  ],
  "badge_display": [
    {
      "name": "I never take things to heart",
      "description": "Having said that, my 3 comments on that FML were really worth it.",
      "coin": "/images/badges/coins/50.webp?v=1793345964",
      "gif": "/images/badges/50-1.gif"
    }
  ]
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

401

{
  "data": [
    "You must be authenticated in order to access this function."
  ],
  "meta": {},
  "badge": [],
  "badge_display": []
}

404

{
  "data": [
    "FML not found."
  ],
  "meta": {},
  "badge": [],
  "badge_display": []
}

Edit one of your comments

POST/comment/{comment}/editMember token required

Requires a user token. You can only edit your own comments (400 otherwise). Returns the updated comment (201).

Parameters

contentrequired
string, required — new comment text
Request
curl -X POST "https://www.fmylife.com/api/v2/comment/{comment}/edit" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "content=…"
Response 201
{
  "data": {
    "id": 178,
    "date": "2026-10-30T08:57:33+01:00",
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone!",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": 0,
    "thumbdown": 0,
    "userthumbed": 0,
    "report": 0,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

401

{
  "data": [
    "You must be authenticated in order to access this function."
  ],
  "meta": {},
  "badge": [],
  "badge_display": []
}

404

{
  "data": [
    "FML not found."
  ],
  "meta": {},
  "badge": [],
  "badge_display": []
}

Get a comment by id

GET/comment/{comment}/{replies}API key only

Use /comment/{comment}/replies to include the comment's replies. When authenticated, your thumbs are included. Returns 404 if the comment doesn't exist.

Parameters

commentoptionalin the pathformat \d+
integer, in the path — comment id
repliesoptionalin the pathformat (replies)?
optional, in the path — the literal word replies, to include the replies
Request
curl "https://www.fmylife.com/api/v2/comment/{comment}/{replies}" \
  -H "X-VDM-Api-Key: $API_KEY"
Response 200
{
  "data": {
    "id": 176,
    "date": "2026-10-30T08:56:01+01:00",
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone!",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": 0,
    "thumbdown": 2,
    "userthumbed": 0,
    "report": 1,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

404

{
  "data": [
    ""
  ],
  "meta": {},
  "badge": [],
  "badge_display": []
}

Give a comment a thumbs up

PATCH/comment/{comment}/up/{inc}Member token required

Requires a user token. One thumb per member and comment: repeating the call changes nothing, and going from thumbs up to thumbs down (or the other way) moves the thumb. Returns the comment (202).

Parameters

commentoptionalin the pathformat \d+
integer, in the path — comment id
incoptionalin the pathformat \d+
integer, in the path — ignored: always one thumb
Request
curl -X PATCH "https://www.fmylife.com/api/v2/comment/{comment}/up/{inc}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 202
{
  "data": {
    "id": 176,
    "date": "2026-10-30T08:56:01+01:00",
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone!",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": 0,
    "thumbdown": 2,
    "userthumbed": 0,
    "report": 1,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

401

{
  "data": "You must be authenticated in order to access this function.",
  "meta": {},
  "badge": [],
  "badge_display": []
}

404

{
  "data": "",
  "meta": {},
  "badge": [],
  "badge_display": []
}

Give a comment a thumbs down

PATCH/comment/{comment}/down/{inc}Member token required

Requires a user token. One thumb per member and comment: repeating the call changes nothing, and going from thumbs up to thumbs down (or the other way) moves the thumb. A comment that gets too many thumbs down is hidden automatically (status 6, auto-nuked). Returns the comment (202).

Parameters

commentoptionalin the pathformat \d+
integer, in the path — comment id
incoptionalin the pathformat \d+
integer, in the path — ignored: always one thumb
Request
curl -X PATCH "https://www.fmylife.com/api/v2/comment/{comment}/down/{inc}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 202
{
  "data": {
    "id": 176,
    "date": "2026-10-30T08:56:01+01:00",
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone!",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": -1,
    "thumbdown": 3,
    "userthumbed": 0,
    "report": 1,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

401

{
  "data": "You must be authenticated in order to access this function.",
  "meta": {},
  "badge": [],
  "badge_display": []
}

404

{
  "data": "",
  "meta": {},
  "badge": [],
  "badge_display": []
}

Report a comment

PATCH/comment/{comment}/reportMember token required

Requires a user token. One report per member and comment. Returns the comment (202), 404 if it doesn't exist.

Parameters

commentoptionalin the pathformat \d+
integer, in the path — id of the comment to report
Request
curl -X PATCH "https://www.fmylife.com/api/v2/comment/{comment}/report" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 202
{
  "data": {
    "id": 176,
    "date": "2026-10-30T08:56:01+01:00",
    "status": 0,
    "parent": 0,
    "content": "Same thing happened to me last week, you're not alone!",
    "article": 6,
    "author": {
      "id": 1079692805,
      "username": "DocsTester",
      "avatar": "/images/default-avatar.jpg",
      "title": null
    },
    "thumbup": 0,
    "thumbdown": 3,
    "userthumbed": 0,
    "report": 1,
    "isModerator": false,
    "replies": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

A real API response, on test data. Lists are cut to 2 items.

Possible errors

401

{
  "data": "You must be authenticated in order to access this function.",
  "meta": {},
  "badge": [],
  "badge_display": []
}

404

{
  "data": "",
  "meta": {},
  "badge": [],
  "badge_display": []
}