FMLDevelopers

Members

Log a member in

POST/user/authenticateAPI key only

On success, returns the member object (200) and the user token in the X-VDM-Api-Token response header: send that header with your next requests. Returns 401 if the credentials are missing or wrong, or if the account is banned.

Parameters

loginrequired
string, required — username or email address
passwordrequired
string, required — the member's password, in plain text (always use HTTPS)
Request
curl -X POST "https://www.fmylife.com/api/v2/user/authenticate" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "login=…" \
  --data-urlencode "password=…"
Response 200
{
  "data": {
    "id": 1079692805,
    "fbid": 0,
    "twid": 0,
    "dateEntry": "2026-10-30T08:55:02+01:00",
    "dateUpdate": "2026-10-30T08:55:02+01:00",
    "status": 0,
    "role": [
      "ROLE_USER"
    ],
    "username": "DocsTester",
    "email": "[email protected]",
    "city": "Paris",
    "area": null,
    "country": null,
    "timezone": null,
    "birthday": null,
    "origin": 0,
    "bio": null,
    "source": "site",
    "relation": null,
    "title": null,
    "site": 2,
    "oldIDVDM": null,
    "oldIDFML": null,
    "avatar": null,
    "metrics": null,
    "signature": null
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Possible errors

401

{
  "error": "103 - Invalid login credentials."
}

Refresh a user token

POST/user/refreshtokenAPI key only

Send the expired token in the X-VDM-Api-Token header along with secret. The old token is deleted; the new one comes back in the X-VDM-Api-Token response header, with the member object (200). Returns 401 on failure.

Parameters

secretrequired
string, required — the member's secret: MD5 hash of the member id followed by the username (md5(id . username))
Request
curl -X POST "https://www.fmylife.com/api/v2/user/refreshtoken" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "secret=…"
Response 200
{
  "data": {
    "id": 2321654987,
    "fbid": 0,
    "twid": 0,
    "dateEntry": "2016-09-16 08:00:18",
    "dateUpdate": "2016-09-16 08:00:18",
    "status": 1,
    "role": {
      "0": "ROLE_ADMIN"
    },
    "username": "admin",
    "email": "[email protected]",
    "city": null,
    "area": null,
    "country": null,
    "timezone": "Africa/Harare",
    "birthday": "1997-11-23",
    "origin": 1,
    "bio": "Reiciendis sint sunt eum id tempora rerum occaecati corrupti.",
    "source": "cowroker",
    "relation": "couple",
    "title": "mr",
    "site": 1
  },
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "9 - Missing parameter."
}

Log the member out

GET/user/logoutMember token required

Deletes the user token sent in X-VDM-Api-Token. Returns anonymous on success, 401 if the token is invalid.

Parameters

No parameters.

Request
curl "https://www.fmylife.com/api/v2/user/logout" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": "anonymous",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

400

{
  "error":"100 - You must be authenticated in order to access this function."
}

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

Get a member's options

GET/user/{userid}/optionsMember token required

Returns the member's notification, newsletter and privacy options, as set with /user/{userid}/moreinfos. Requires a user token.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/options" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": {
    "user_id": 1079692805,
    "nl_weekly": true,
    "nl_monthly": false,
    "nl_daily": false,
    "al_comment": false,
    "al_message": false,
    "hide_profile": false,
    "show_activity": true,
    "show_receipt": true,
    "optin_vdm": true,
    "optin_partners": true,
    "activity_on_timeline": true,
    "hide_illustrations": false,
    "user_content_types_filters": []
  },
  "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": []
}

Create an account

POST/userAPI key only

Returns the new member (201) and logs them in: the user token is in the X-VDM-Api-Token response header. Avatar image files can be sent in the same multipart request. Returns 400 if the username or email is already taken, the email is invalid, or the passwords don't match.

Parameters

usernamerequired
string, required — username
emailrequired
string, required — email address
passwordrequired
string, required — password
confirm_passwordrequired
string, required — the same password again
Request
curl -X POST "https://www.fmylife.com/api/v2/user" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "username=…" \
  --data-urlencode "email=…" \
  --data-urlencode "password=…" \
  --data-urlencode "confirm_password=…"
Response 200
{
  "data": {
    "id": 50467299,
    "fbid": 0,
    "twid": 0,
    "dateEntry": {
      "date": "2016-09-16 10:28:19.000000",
      "timezone_type": 3,
      "timezone": "UTC"
    },
    "dateUpdate": null,
    "status": 0,
    "role": {
      "0": "ROLE_USER"
    },
    "username": "test",
    "email": "[email protected]",
    "city": null,
    "area": null,
    "country": null,
    "timezone": null,
    "birthday": null,
    "origin": "api",
    "bio": null,
    "source": "site",
    "relation": null,
    "title": "mr",
    "site": 3
  },
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

400

{
  "error": "This username is already associated with an account."
}

400

{
  "error": "This email is already associated with an account."
}

400

{
  "error": "This email is not valid."
}

400

{
  "error": "Field confirm_password is missing."
}

400

{
  "error": "The password fields must match."
}

Upload a member's avatars

POST/user/{userid}/avatarMember token required

Send the images as multipart files. Maximum size: 25 MB per file. Returns the avatars (202). Only for your own account (admins can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
img_1required
file, required — first avatar (main profile picture)
img_2optional
file, optional — second avatar
img_3optional
file, optional — third avatar
Request
curl -X POST "https://www.fmylife.com/api/v2/user/{userid}/avatar" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "img_1=…"
Response 202
{
  "data": {
    "img_1": {
      "url": "/img/4a081d3b5c2a14e9f38471d80202df34.jpeg/avatar_small/img_users",
      "id": 5,
      "name": "4a081d3b5c2a14e9f38471d80202df34.jpeg"
    },
    "img_2": {
      "url": "/images/default-avatar.jpg",
      "id": ""
    },
    "img_3": {
      "url": "/images/default-avatar.jpg",
      "id": ""
    }
  },
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

404

{
  "error": "404 - This user not found."
}

400

{
  "error": "400 - The file is too large. Allowed maximum size is 1 MB."
}

Update a member's notification and privacy options

PUT/user/{userid}/moreinfosMember token required

Only the fields you send are changed. Each option takes 1 (on) or 0 (off). Returns the updated options (202). Only for your own account (admins can act on any account), 403 otherwise. Read them back with /user/{userid}/options.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
optin_vdmoptional
1 or 0, optional — receive news from the site
optin_partnersoptional
1 or 0, optional — receive promotional offers from partners
nl_weeklyoptional
1 or 0, optional — subscribe to the weekly newsletter
al_commentoptional
1 or 0, optional — get notified when a comment is posted on a story you follow
al_messageoptional
1 or 0, optional — get notified of new private messages
nl_dailyoptional
1 or 0, optional — subscribe to the daily newsletter
hide_profileoptional
1 or 0, optional — hide my profile
show_activityoptional
1 or 0, optional — show my activity
activity_on_timelineoptional
1 or 0, optional — publish my activity on my timeline
show_receiptoptional
1 or 0, optional — send read receipts
user_content_types_filtersoptional
array of integers, optional — content type ids to filter out (see /article/type/list); an empty value leaves the current filter unchanged
Request
curl -X PUT "https://www.fmylife.com/api/v2/user/{userid}/moreinfos" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 202
{
  "data": {
    "user_id": 1079692805,
    "nl_weekly": true,
    "nl_monthly": false,
    "nl_daily": false,
    "al_comment": false,
    "al_message": false,
    "hide_profile": false,
    "show_activity": true,
    "show_receipt": true,
    "optin_vdm": true,
    "optin_partners": true,
    "activity_on_timeline": true,
    "hide_illustrations": false,
    "user_content_types_filters": []
  },
  "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": []
}

Request account deletion

DELETE/user/{userid}Member token required

Doesn't delete the account right away: emails the member a link to confirm the deletion. Returns 204. Only for your own account (admins can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
Request
curl -X DELETE "https://www.fmylife.com/api/v2/user/{userid}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 204
{
  "data": {
    "response": "The procedure was performed"
  },
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

404

{
  "error": "404 - This user not found."
}

Like a member

POST/user/likeMember token required

Requires a user token: the liker is always the authenticated member, who can't like themselves (401). Returns the liked member's new like count, number_of_likes (202), or 208 if you already liked them. The liked member is notified.

Parameters

useridrequired
Ignored: the liker is always the authenticated member
user_likedrequired
integer, required — id of the member to like
Request
curl -X POST "https://www.fmylife.com/api/v2/user/like" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "userid=…" \
  --data-urlencode "user_liked=…"
Response 202
{
  "data": {
    "number_of_likes": xx
  },
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

208

{
  "error": "208 - You have already liked this user."
}

Log in with Facebook (disabled)

POST/user/connect/facebookAPI key only

This endpoint is disabled: it always returns 400. Use /user/authenticate.

Parameters

idrequired
string — Facebook user id (ignored: endpoint disabled)
namerequired
string — name (ignored: endpoint disabled)
emailrequired
string — email address (ignored: endpoint disabled)
genderoptional
string — gender (ignored: endpoint disabled)
birthdayoptional
string — date of birth (ignored: endpoint disabled)
locationoptional
string — location (ignored: endpoint disabled)
pictureoptional
string — picture URL (ignored: endpoint disabled)
Request
curl -X POST "https://www.fmylife.com/api/v2/user/connect/facebook" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "id=…" \
  --data-urlencode "name=…" \
  --data-urlencode "email=…"
Response 400
{
  "data": "Missing datas for facebook connect",
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Log in with Twitter (disabled)

POST/user/connect/twitterAPI key only

This endpoint is disabled: it always returns 400. Use /user/authenticate.

Parameters

idrequired
string — Twitter user id (ignored: endpoint disabled)
namerequired
string — name (ignored: endpoint disabled)
emailrequired
string — email address (ignored: endpoint disabled)
descriptionoptional
string — profile description (ignored: endpoint disabled)
profile_image_urloptional
string — picture URL (ignored: endpoint disabled)
Request
curl -X POST "https://www.fmylife.com/api/v2/user/connect/twitter" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "id=…" \
  --data-urlencode "name=…" \
  --data-urlencode "email=…"
Response 400
{
  "data": "Missing datas for twitter connect",
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Send a password reset link

POST/user/resetpasswordAPI key only

If an account uses this email, sends it a link to choose a new password; the current password keeps working until then. Returns 200 for any valid email, whether an account uses it or not, and 400 if the email is invalid.

Parameters

emailrequired
string, required — the account's email address
Request
curl -X POST "https://www.fmylife.com/api/v2/user/resetpassword" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "email=…"
Response 200
{
  "data": "User's password has been reset",
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Change a member's password

PUT/user/edit/password/{userid}Member token required

Returns 202 on success, 400 if confirm_password is missing or doesn't match, 403 if current_password is missing or wrong. The member's other sessions (their other tokens) are signed out; the request's token stays valid. Only for your own account (an admin can act on any account without current_password), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
current_passwordrequired
string, required — the member's current password
passwordrequired
string, required — new password
confirm_passwordrequired
string, required — the new password again
Request
curl -X PUT "https://www.fmylife.com/api/v2/user/edit/password/{userid}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "current_password=…" \
  --data-urlencode "password=…" \
  --data-urlencode "confirm_password=…"
Response 202
{
  "data": "User's password has been updated",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "100 - You must be authenticated in order to access this function."
}

400

{
  "error": "16 - Field confirm_password is missing."
}

400

{
  "error": "17 - The password fields must match."
}

Change a member's email address

PUT/user/edit/email/{userid}Member token required

The account goes back to pending until the member clicks the confirmation link sent to the new address. Returns 202 on success, 400 if the email is taken or invalid, 403 if current_password is missing or wrong. Only for your own account (an admin can act on any account without current_password), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
current_passwordrequired
string, required — the member's current password
emailrequired
string, required — new email address
Request
curl -X PUT "https://www.fmylife.com/api/v2/user/edit/email/{userid}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "current_password=…" \
  --data-urlencode "email=…"
Response 200
{
  "data": "User's email has been updated",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "100 - You must be authenticated in order to access this function."
}

400

{
  "error": "12 - This email is already associated with an account."
}

400

{
  "error": "13 - This email is not valid."
}

Generate a visitor id

GET/user/uniqidAPI key only

Returns {"uniqid": …}, a random integer that identifies an anonymous device. Send it in the X-VDM-Uniqid header so that votes, smileys and moderation are recorded without an account.

Parameters

No parameters.

Request
curl "https://www.fmylife.com/api/v2/user/uniqid" \
  -H "X-VDM-Api-Key: $API_KEY"
Response 200
{
  "data": {
    "uniqid": 1237550485
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Update a member's profile

PUT/user/{userid}/profileMember token required

Only the fields sent are changed: title, birthday, city, relation, bio, plus area, country, countrycode, timezone and source; other fields are ignored (email and password have their own endpoints). Returns the updated member (202), or 400 if the bio is too long. Only for your own account (an admin can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
titleoptional
string, optional — title: mr, mrs or miss
birthdayoptional
date, optional — date of birth, YYYY-MM-DD or ISO 8601
cityoptional
string, optional — city
relationoptional
string, optional — relationship status: single, couple or complicated
biooptional
string, optional — biography, up to 2,000 characters
Request
curl -X PUT "https://www.fmylife.com/api/v2/user/{userid}/profile" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 202
{
  "data": {
    "id": 1079692805,
    "fbid": 0,
    "twid": 0,
    "dateEntry": "2026-10-30T08:55:02+01:00",
    "dateUpdate": "2026-10-30T08:55:02+01:00",
    "status": 0,
    "role": [
      "ROLE_USER"
    ],
    "username": "DocsTester",
    "email": "[email protected]",
    "city": "Paris",
    "area": null,
    "country": null,
    "timezone": null,
    "birthday": null,
    "origin": 0,
    "bio": null,
    "source": "site",
    "relation": null,
    "title": null,
    "site": 2,
    "oldIDVDM": null,
    "oldIDFML": null,
    "avatar": null,
    "metrics": null,
    "signature": 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": []
}

Get a member's public page

GET/user/{userid}/memberAPI key only

Returns the member (public fields, except for yourself and admins), their three avatars, their profile visibility and their metrics. With X-VDM-Uniqid, the visit is counted. 404 if the member doesn't exist.

Parameters

useridrequiredin the pathformat \d+
integer, in the path — member id

Values

badges:
    status: 0 => progress | 1 => acquired
    category: 1 => bronze | 2 => silver | 3 => gold
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/member" \
  -H "X-VDM-Api-Key: $API_KEY"
Response 200
{
  "data": {
    "user": {
      "id": 1079692805,
      "dateEntry": "2026-10-30T08:55:02+01:00",
      "status": 0,
      "username": "DocsTester",
      "city": "Paris",
      "country": null,
      "bio": null,
      "relation": null,
      "title": null,
      "site": 2,
      "avatar": null,
      "metrics": null,
      "signature": null
    },
    "avatar_1": null,
    "avatar_2": null,
    "avatar_3": null,
    "profile_visibility": false,
    "number_of_visits": 3,
    "number_of_likes": 0,
    "number_of_friends": 0,
    "number_of_followers": 0,
    "number_of_comment": 0,
    "number_of_favorite": 0,
    "number_of_article": 0,
    "number_of_badge": 3
  },
  "meta": {},
  "badge": [],
  "badge_display": []
}

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

Get a member's profile, signed in

GET/user/{userid}/profileMember token required

Requires a user token. Like /user/{userid}/member, plus the number of visits, likes and friends; the visit is counted for the signed-in member. 404 if the member doesn't exist.

Parameters

useridrequiredin the pathformat \d+
integer, in the path — member id

Values

badges:
    status: 0 => progress | 1 => acquired
    category: 1 => bronze | 2 => silver | 3 => gold
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/profile" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": {
    "user": {
      "id": 1079692805,
      "fbid": 0,
      "twid": 0,
      "dateEntry": "2026-10-30T08:55:02+01:00",
      "dateUpdate": "2026-10-30T08:55:02+01:00",
      "status": 0,
      "role": [
        "ROLE_USER"
      ],
      "username": "DocsTester",
      "email": "[email protected]",
      "city": "Paris",
      "area": null,
      "country": null,
      "timezone": null,
      "birthday": null,
      "origin": 0,
      "bio": null,
      "source": "site",
      "relation": null,
      "title": null,
      "site": 2,
      "oldIDVDM": null,
      "oldIDFML": null,
      "avatar": null,
      "metrics": null,
      "signature": null
    },
    "avatar_1": null,
    "avatar_2": null,
    "avatar_3": null,
    "profile_visibility": false,
    "number_of_visits": 3,
    "number_of_likes": 0,
    "number_of_friends": 0,
    "number_of_followers": 0,
    "number_of_comment": 0,
    "number_of_favorite": 0,
    "number_of_article": 0,
    "number_of_badge": 3,
    "metrics": {
      "isFollowed": false,
      "isBlocked": false,
      "isLike": false
    }
  },
  "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": []
}

List a member's profile visitors

GET/user/{userid}/visitsAPI key only

Paginated: meta gives page, per_page, page_count and total_count. Most recent visits first by default.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id
pageoptional
array — pagination: page[number] (page number, default 1) and page[bypage] (items per page, default 30)
orderbyoptional
array, default orderby[date]=DESC — sort order, as orderby[field]=ASC|DESC
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/visits" \
  -H "X-VDM-Api-Key: $API_KEY"
Response 200
{
  "data": [],
  "meta": {
    "page": 1,
    "per_page": 30,
    "page_count": 0,
    "total_count": 0
  },
  "badge": [],
  "badge_display": []
}

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

List the members who liked a member

GET/user/{userid}/likesAPI key only

Paginated: meta gives page, per_page, page_count and total_count. Most recent likes first by default.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id
pageoptional
array — pagination: page[number] (page number, default 1) and page[bypage] (items per page, default 30)
orderbyoptional
array, default orderby[date]=DESC — sort order, as orderby[field]=ASC|DESC
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/likes" \
  -H "X-VDM-Api-Key: $API_KEY"
Response 200
{
  "data": [],
  "meta": {
    "page": 1,
    "per_page": 30,
    "page_count": 0,
    "total_count": 0
  },
  "badge": [],
  "badge_display": []
}

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

Delete one of a member's avatars

DELETE/user/avatar/{userid}/{imageid}Member token required

Returns 200 on success, 404 if the member or image doesn't exist. Only for your own account (admins can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
imageidrequiredin the pathformat \d+
integer, required, in the path ({imageid}) — id of the image to delete
Request
curl -X DELETE "https://www.fmylife.com/api/v2/user/avatar/{userid}/{imageid}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": "User's avatar has been deleted",
  "meta": {}
}

With attribute /all

{
  "data": "All user's avatar has been deleted",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "100 - You must be authenticated in order to access this function."
}

404

{
  "error": "10 - This user not found."
}

404

{
  "error": "27 - Image not found."
}

Delete all of a member's avatars

DELETE/user/avatar/{userid}/allMember token required

Returns 200 on success. Only for your own account (admins can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
Request
curl -X DELETE "https://www.fmylife.com/api/v2/user/avatar/{userid}/all" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": "All user's avatar has been deleted",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "100 - You must be authenticated in order to access this function."
}

404

{
  "error": "10 - This user not found."
}

404

{
  "error": "27 - Image not found."
}

Reorder a member's avatars

PATCH/user/avatar/{userid}Member token required

Send the image ids in the order you want them displayed. Returns 200. Only for your own account (admins can act on any account), 403 otherwise.

Parameters

useridrequiredin the pathformat \d+
integer, required — your member id
img_1required
integer, required — id of the image to show first
img_2required
integer, required — id of the image to show second
img_3required
integer, required — id of the image to show third
Request
curl -X PATCH "https://www.fmylife.com/api/v2/user/avatar/{userid}" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN" \
  --data-urlencode "img_1=…" \
  --data-urlencode "img_2=…" \
  --data-urlencode "img_3=…"
Response 200
{
  "data": "User's avatar have been updated",
  "meta": {}
}

Example from the original docs: values are made up and some fields may have changed.

Possible errors

401

{
  "error": "102 - Invalid API key."
}

401

{
  "error": "104 - Invalid or expired API token."
}

401

{
  "error": "100 - You must be authenticated in order to access this function."
}

404

{
  "error": "10 - This user not found."
}

List a member's badges

GET/user/{userid}/badgesMember token required

Requires a user token. Returns 404 if the member doesn't exist.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id

Values

status: 0 => progress | 1 => acquired
    category: 1 => bronze | 2 => silver | 3 => gold
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/badges" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": [
    {
      "user": 1079692805,
      "id": 31,
      "status": 1,
      "progression": 1,
      "data": "",
      "stamp": "2026-10-30T08:56:01+01:00",
      "site": null,
      "name": "Invader",
      "description": "You were outside of France when you submitted this FML",
      "hidden": "0",
      "goal": 1,
      "limited": "0",
      "category": 2,
      "total": 58801,
      "illustration": "31.gif"
    },
    {
      "user": 1079692805,
      "id": 17,
      "status": 1,
      "progression": 1,
      "data": "",
      "stamp": "2026-10-30T08:56:01+01:00",
      "site": null,
      "name": "Perfectionist",
      "description": "Editing your comments can help you avoid embarrassment, and it might make you seem smarter.",
      "hidden": "0",
      "goal": 1,
      "limited": "0",
      "category": 1,
      "total": 33966,
      "illustration": "17.gif"
    }
  ],
  "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": []
}

List a member's stories

GET/user/{userid}/articlesMember token required

Requires a user token. For your own account, your stories in every status except deleted (including pending and refused ones); for another member, their published stories only. With keywords, metrics, images, paragraphs and videos. Not paginated.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id

Values

status: 0 => new | 1 => rejected | 2 => promoted | 3 => refused | 4 => validated | 5 => private | 6 => autopilot | 7 => deleted | 8 => scheduled | 9 => tocheck

    type: 1 => classic | 3 => photo | 4 => histo | 5 => world | 6 => confession | 7 => illustrated | 9 => news | 10 => video

    genders: 1 => male | 2 => female

    layout: 1 => teaching | 2 => layout2 | 3 => layout3

    flag: 1 => popular | 2 => coupdecoeur

    usermetrics:
        smiley: 1 => amusing | 2 => funny | 3 => weird | 4 => hilarious
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/articles" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": [
    {
      "id": 518674,
      "status": 11,
      "type": 1,
      "spicy": false,
      "optin": false,
      "socialTruncate": false,
      "title": null,
      "content": "Today, I tested the API for an hour before noticing I had swapped my key and my token. FML",
      "content_hidden": "Today, I tested the API for an hour before noticing I had swapped my key and my token. FML",
      "created": "2026-10-30T08:56:41+01:00",
      "updated": "2026-10-30T08:56:41+01:00",
      "published": "2026-10-30T08:56:41+01:00",
      "user": 1079692805,
      "author": "DocsTester",
      "gender": null,
      "layout": 0,
      "flag": 0,
      "origin": "api",
      "apikey": "{{apikey}}",
      "vote": 1,
      "site": 2,
      "siteorig": null,
      "slug": "today-i-tested-the-api-for-an-hour-before-noticing-i-had-swapped-my-key-and-my-token-fml",
      "bitly": null,
      "metrics": {
        "article": 518674,
        "comment": 0,
        "favorite": 0,
        "reports": 1,
        "mod_positive": 0,
        "mod_negative": 0,
        "votes_up": 0,
        "votes_down": 0,
        "smiley_amusing": 0,
        "smiley_funny": 0,
        "smiley_weird": 0,
        "smiley_hilarious": 0
      },
      "usermetrics": {
        "favorite": false,
        "smiley": null,
        "votes": null
      },
      "keywords": [],
      "images": [],
      "videos": [],
      "openview": 0,
      "url": null,
      "suggested": null,
      "paragraphs": []
    },
    {
      "id": 518673,
      "status": 0,
      "type": 1,
      "spicy": false,
      "optin": false,
      "socialTruncate": false,
      "title": null,
      "content": "Today, I tested the API for an hour before noticing I had swapped my key and my token. FML",
      "content_hidden": "Today, I tested the API for an hour before noticing I had swapped my key and my token. FML",
      "created": "2026-10-30T08:56:01+01:00",
      "updated": "2026-10-30T08:56:09+01:00",
      "published": "2026-10-30T08:56:01+01:00",
      "user": 1079692805,
      "author": "DocsTester",
      "gender": null,
      "layout": 0,
      "flag": 0,
      "origin": "api",
      "apikey": "{{apikey}}",
      "vote": 1,
      "site": 2,
      "siteorig": null,
      "slug": "today-i-tested-the-api-for-an-hour-before-noticing-i-had-swapped-my-key-and-my-token-fml",
      "bitly": null,
      "metrics": {
        "article": 518673,
        "comment": 0,
        "favorite": 0,
        "reports": 1,
        "mod_positive": 0,
        "mod_negative": 0,
        "votes_up": 0,
        "votes_down": 0,
        "smiley_amusing": 0,
        "smiley_funny": 0,
        "smiley_weird": 0,
        "smiley_hilarious": 0
      },
      "usermetrics": {
        "favorite": false,
        "smiley": null,
        "votes": null
      },
      "keywords": [],
      "images": [],
      "videos": [],
      "openview": 0,
      "url": null,
      "suggested": null,
      "paragraphs": []
    }
  ],
  "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": []
}

List a member's favorite stories

GET/user/{userid}/favoritesMember token required

Requires a user token. Paginated (meta). Each story includes your own votes, smileys and favorite status.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id
pageoptional
array — pagination: page[number] (page number, default 1) and page[bypage] (items per page, default 30)

Values

status: 0 => new | 1 => rejected | 2 => promoted | 3 => refused | 4 => validated | 5 => private | 6 => autopilot | 7 => deleted | 8 => scheduled | 9 => tocheck

    type: 1 => classic | 2 => blog | 3 => photo | 4 => histo | 5 => world | 6 => confession | 7 => illustrated | 9 => news | 10 => video

    genders: 1 => male | 2 => female

    layout: 1 => teaching | 2 => layout2 | 3 => layout3

    flag: 1 => popular | 2 => coupdecoeur

    usermetrics:
        smiley: 1 => amusing | 2 => funny | 3 => weird | 4 => hilarious
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/favorites" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
Response 200
{
  "data": [],
  "meta": {
    "page": 1,
    "per_page": 30,
    "page_count": 0,
    "total_count": 0
  },
  "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": []
}

List a member's comments

GET/user/{userid}/commentsMember token required

Requires a user token. Returns the member's top-level comments (not their replies to other comments), each with its replies. Not paginated.

Parameters

useridrequiredin the pathformat \d+
integer, required — member id

Values

status: 0 => default | 1 => highlighted | 2 => nuked | 3 => confession | 4 => deleted
Request
curl "https://www.fmylife.com/api/v2/user/{userid}/comments" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"
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": 1,
      "report": 1,
      "isModerator": false,
      "replies": null
    },
    {
      "id": 177,
      "date": "2026-10-30T08:56:41+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": []
}