Skip to content

Friends v1

Reference for the Friends v1 endpoints on Roblox.

Base URL: https://friends.roblox.com

MethodPathName
POST/v1/contacts/:targetContactId/request-friendshippostContactsTargetcontactidRequestFriendship
GET/v1/metadatagetMetadata
GET/v1/my/friends/:userId/check-qr-sessiongetMyFriendsUseridCheckQrSession
GET/v1/my/friends/countgetMyFriendsCount
POST/v1/my/friends/refresh-qr-sessionpostMyFriendsRefreshQrSession
GET/v1/my/friends/requestsgetMyFriendsRequests
DELETE/v1/my/new-friend-requestsdeleteMyNewFriendRequests
GET/v1/my/new-friend-requests/countgetMyNewFriendRequestsCount
POST/v1/user/:userId/multiget-are-friendspostUserUseridMultigetAreFriends
POST/v1/user/following-existspostUserFollowingExists
GET/v1/user/friend-requests/countgetUserFriendRequestsCount
POST/v1/user/friend-requests/decline-allpostUserFriendRequestsDeclineAll
POST/v1/users/:requesterUserId/accept-friend-requestpostUsersRequesteruseridAcceptFriendRequest
POST/v1/users/:requesterUserId/decline-friend-requestpostUsersRequesteruseridDeclineFriendRequest
POST/v1/users/:senderUserId/accept-friend-request-with-tokenpostUsersSenderuseridAcceptFriendRequestWithToken
POST/v1/users/:targetUserId/followpostUsersTargetuseridFollow
GET/v1/users/:targetUserId/followersgetUsersTargetuseridFollowers
GET/v1/users/:targetUserId/followers/countgetUsersTargetuseridFollowersCount
GET/v1/users/:targetUserId/followingsgetUsersTargetuseridFollowings
GET/v1/users/:targetUserId/followings/countgetUsersTargetuseridFollowingsCount
POST/v1/users/:targetUserId/request-friendshippostUsersTargetuseridRequestFriendship
POST/v1/users/:targetUserId/unfollowpostUsersTargetuseridUnfollow
POST/v1/users/:targetUserId/unfriendpostUsersTargetuseridUnfriend
GET/v1/users/:userId/friendsgetUsersUseridFriends
GET/v1/users/:userId/friends/countgetUsersUseridFriendsCount
GET/v1/users/:userId/friends/findgetUsersUseridFriendsFind
GET/v1/users/:userId/friends/inactivegetUsersUseridFriendsInactive
GET/v1/users/:userId/friends/onlinegetUsersUseridFriendsOnline
GET/v1/users/:userId/friends/searchgetUsersUseridFriendsSearch
GET/v1/users/:userId/friends/statusesgetUsersUseridFriendsStatuses

postContactsTargetcontactidRequestFriendship

Section titled “postContactsTargetcontactidRequestFriendship”

POST /v1/contacts/:targetContactId/request-friendship

Send a contact friend request to target user

Usage
import { fetchApi } from 'rozod';
import { postContactsTargetcontactidRequestFriendship } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postContactsTargetcontactidRequestFriendship, {
targetContactId: /* string */
});
NameTypeRequiredDescription
targetContactIdstringYesThe target contact Id for friend request
FieldTypeDescription
successboolean
isCaptchaRequiredboolean
StatusDescription
4001: The target user is invalid or does not exist.
5: The target user is already a friend.
6: Invalid parameters.
7: The user cannot be friends with itself.
31: User with max friends sent friend request.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
2: The user is banned from performing operation.
3: The user is blocked from performing this action.
14: The user has not passed the captcha.
4299: The flood limit has been exceeded.

GET /v1/metadata

Usage
import { fetchApi } from 'rozod';
import { getMetadata } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getMetadata, {
targetUserId: /* integer? */
});
NameTypeRequiredDescription
targetUserIdinteger?No
FieldTypeDescription
isFriendsFilterBarEnabledboolean
isFriendsPageSortExperimentEnabledboolean
isFriendsUserDataStoreCacheEnabledboolean
frequentFriendSortRolloutnumber
userNamestring
displayNamestring

GET /v1/my/friends/:userId/check-qr-session

Usage
import { fetchApi } from 'rozod';
import { getMyFriendsUseridCheckQrSession } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getMyFriendsUseridCheckQrSession, {
userId: /* integer */
});
NameTypeRequiredDescription
userIdintegerYesuser Id that shows the qr code

Type: boolean

StatusDescription
4010: Authorization has been denied for this request.

GET /v1/my/friends/count

Get the number of friends a user has

Usage
import { fetchApi } from 'rozod';
import { getMyFriendsCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getMyFriendsCount, undefined);
FieldTypeDescription
countnumber
StatusDescription
4010: Authorization has been denied for this request.

POST /v1/my/friends/refresh-qr-session

Usage
import { fetchApi } from 'rozod';
import { postMyFriendsRefreshQrSession } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postMyFriendsRefreshQrSession, undefined);
FieldTypeDescription
Successboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

GET /v1/my/friends/requests

Get all users that friend requests with targetUserId using exclusive start paging

Usage
import { fetchApi } from 'rozod';
import { getMyFriendsRequests } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getMyFriendsRequests, {
limit: /* integer? = 10 */,
cursor: /* string? */,
sessionId: /* string? */
});
NameTypeRequiredDescription
limitinteger? = 10NoThe number of results per request.
cursorstring?NoThe paging cursor for the previous or next page.
sessionIdstring?NoOptional session identifier.
FieldTypeDescription
previousPageCursorstring
nextPageCursorstring
dataobject[]See below

data[] item fields:

FieldTypeDescription
friendRequestobjectSee below
mutualFriendsListstring[]
hasVerifiedBadgeboolean
descriptionstring
createdstring
isBannedboolean
externalAppDisplayNamestring
idnumber
namestring
displayNamestring

friendRequest fields:

FieldTypeDescription
sentAtstring
senderIdnumber
sourceUniverseIdnumber
originSourceType`“Unknown""PlayerSearch"
contactNamestring
senderNicknamestring
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4010: Authorization has been denied for this request.
4032: The user is banned from performing operation.
3: The user is blocked from performing this action.
4299: The flood limit has been exceeded.

DELETE /v1/my/new-friend-requests

Usage
import { fetchApi } from 'rozod';
import { deleteMyNewFriendRequests } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(deleteMyNewFriendRequests, undefined);
FieldTypeDescription
statusboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

GET /v1/my/new-friend-requests/count

Usage
import { fetchApi } from 'rozod';
import { getMyNewFriendRequestsCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getMyNewFriendRequestsCount, undefined);
FieldTypeDescription
countnumber
StatusDescription
4010: Authorization has been denied for this request.

POST /v1/user/:userId/multiget-are-friends

Check if the requesting user is friends with the specified users.

Usage
import { fetchApi } from 'rozod';
import { postUserUseridMultigetAreFriends } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUserUseridMultigetAreFriends, {
userId: /* integer */,
body: { /* ... */ }
});
NameTypeRequiredDescription
userIdintegerYesThe requesting userId.
FieldTypeDescription
targetUserIdsnumber[]
FieldTypeDescription
friendsIdnumber[]
StatusDescription
4001: The target user is invalid or does not exist.
4030: Token Validation Failed

POST /v1/user/following-exists

Returns whether or not the current user is following each userId in a list of userIds

Usage
import { fetchApi } from 'rozod';
import { postUserFollowingExists } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUserFollowingExists, {
body: { /* ... */ }
});
FieldTypeDescription
targetUserIdsnumber[]
FieldTypeDescription
followingsobject[]See below

followings[] item fields:

FieldTypeDescription
isFollowingboolean
isFollowedboolean
userIdnumber
StatusDescription
4000: An invalid userId was passed in.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
5031: Followers are disabled at this time.

GET /v1/user/friend-requests/count

Return the number of pending friend requests.

Usage
import { fetchApi } from 'rozod';
import { getUserFriendRequestsCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUserFriendRequestsCount, undefined);
FieldTypeDescription
countnumber
StatusDescription
4010: Authorization has been denied for this request.

POST /v1/user/friend-requests/decline-all

Decline all pending friend requests for the authenticated user.

Usage
import { fetchApi } from 'rozod';
import { postUserFriendRequestsDeclineAll } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUserFriendRequestsDeclineAll, undefined);
FieldTypeDescription
backgroundedboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

postUsersRequesteruseridAcceptFriendRequest

Section titled “postUsersRequesteruseridAcceptFriendRequest”

POST /v1/users/:requesterUserId/accept-friend-request

Accept a friend request.

Usage
import { fetchApi } from 'rozod';
import { postUsersRequesteruseridAcceptFriendRequest } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersRequesteruseridAcceptFriendRequest, {
requesterUserId: /* integer */
});
NameTypeRequiredDescription
requesterUserIdintegerYesThe user Id of the requester

Type: unknown

StatusDescription
4001: The target user is invalid or does not exist.
10: The friend request does not exist.
11: The current users friends limit has been exceeded.
12: The target users friends limit has been exceeded.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
3: The user is blocked from performing this action.

postUsersRequesteruseridDeclineFriendRequest

Section titled “postUsersRequesteruseridDeclineFriendRequest”

POST /v1/users/:requesterUserId/decline-friend-request

Decline a friend request.

Usage
import { fetchApi } from 'rozod';
import { postUsersRequesteruseridDeclineFriendRequest } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersRequesteruseridDeclineFriendRequest, {
requesterUserId: /* integer */
});
NameTypeRequiredDescription
requesterUserIdintegerYesThe user Id of the requester

Type: unknown

StatusDescription
4001: The target user is invalid or does not exist.
10: The friend request does not exist.
4010: Authorization has been denied for this request.
4030: Token Validation Failed

postUsersSenderuseridAcceptFriendRequestWithToken

Section titled “postUsersSenderuseridAcceptFriendRequestWithToken”

POST /v1/users/:senderUserId/accept-friend-request-with-token

Accept a friend request with an Off Network Friending token.

Usage
import { fetchApi } from 'rozod';
import { postUsersSenderuseridAcceptFriendRequestWithToken } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersSenderuseridAcceptFriendRequestWithToken, {
senderUserId: /* integer */,
body: { /* ... */ }
});
NameTypeRequiredDescription
senderUserIdintegerYesThe user id of the sender of the off network friend request
FieldTypeDescription
friendingTokenstring

Type: unknown

StatusDescription
4001: The target user is invalid or does not exist.
3: The user is blocked from performing this action.
5: The target user is already a friend.
6: Invalid parameters.
7: The user cannot be friends with itself.
11: The current users friends limit has been exceeded.
12: The target users friends limit has been exceeded.
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v1/users/:targetUserId/follow

Creates the following between a user and user with targetUserId

Usage
import { fetchApi } from 'rozod';
import { postUsersTargetuseridFollow } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersTargetuseridFollow, {
targetUserId: /* integer */,
body: { /* ... */ }
});
NameTypeRequiredDescription
targetUserIdintegerYes

Type: RobloxWebCaptchaModelsRequestCaptchaTokenRequest.optional()

FieldTypeDescription
successboolean
isCaptchaRequiredboolean
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
8: The user cannot follow itself.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
2: The user is banned from performing operation.
3: The user is blocked from performing this action.
14: The user has not passed the captcha.
4299: The flood limit has been exceeded.

GET /v1/users/:targetUserId/followers

Get all users that follow user with targetUserId in page response format

Usage
import { fetchApi } from 'rozod';
import { getUsersTargetuseridFollowers } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersTargetuseridFollowers, {
targetUserId: /* integer */,
cursor: /* string? */,
sortOrder: /* enum */
});
NameTypeRequiredDescription
targetUserIdintegerYes
cursorstring?NoThe paging cursor for the previous or next page.
sortOrderenumYesThe order the results are sorted in.
FieldTypeDescription
previousPageCursorstring
nextPageCursorstring
dataobject[]See below

data[] item fields:

FieldTypeDescription
isOnlineboolean
presenceType`01
isDeletedboolean
friendFrequentScorenumber
friendFrequentRanknumber
hasVerifiedBadgeboolean
descriptionstring
createdstring
isBannedboolean
externalAppDisplayNamestring
idnumber
namestring
displayNamestring
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4032: The user is banned from performing operation.
3: The user is blocked from performing this action.
4299: The flood limit has been exceeded.

GET /v1/users/:targetUserId/followers/count

Get the number of following a user has

Usage
import { fetchApi } from 'rozod';
import { getUsersTargetuseridFollowersCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersTargetuseridFollowersCount, {
targetUserId: /* integer */
});
NameTypeRequiredDescription
targetUserIdintegerYes
FieldTypeDescription
countnumber
StatusDescription
4001: The target user is invalid or does not exist.

GET /v1/users/:targetUserId/followings

Get all users that user with targetUserId is following in page response format

Usage
import { fetchApi } from 'rozod';
import { getUsersTargetuseridFollowings } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersTargetuseridFollowings, {
targetUserId: /* integer */,
cursor: /* string? */,
sortOrder: /* enum */
});
NameTypeRequiredDescription
targetUserIdintegerYes
cursorstring?NoThe paging cursor for the previous or next page.
sortOrderenumYesThe order the results are sorted in.
FieldTypeDescription
previousPageCursorstring
nextPageCursorstring
dataobject[]See below

data[] item fields:

FieldTypeDescription
isOnlineboolean
presenceType`01
isDeletedboolean
friendFrequentScorenumber
friendFrequentRanknumber
hasVerifiedBadgeboolean
descriptionstring
createdstring
isBannedboolean
externalAppDisplayNamestring
idnumber
namestring
displayNamestring
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4032: The user is banned from performing operation.
3: The user is blocked from performing this action.
4299: The flood limit has been exceeded.

GET /v1/users/:targetUserId/followings/count

Get the number of following a user has

Usage
import { fetchApi } from 'rozod';
import { getUsersTargetuseridFollowingsCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersTargetuseridFollowingsCount, {
targetUserId: /* integer */
});
NameTypeRequiredDescription
targetUserIdintegerYes
FieldTypeDescription
countnumber
StatusDescription
4001: The target user is invalid or does not exist.

POST /v1/users/:targetUserId/request-friendship

Send a friend request to target user

Usage
import { fetchApi } from 'rozod';
import { postUsersTargetuseridRequestFriendship } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersTargetuseridRequestFriendship, {
targetUserId: /* integer */,
body: { /* ... */ }
});
NameTypeRequiredDescription
targetUserIdintegerYesThe target user Id for friend request
FieldTypeDescription
friendshipOriginSourceType`“Unknown""PlayerSearch"
senderNicknamestring
FieldTypeDescription
successboolean
isCaptchaRequiredboolean
StatusDescription
4001: The target user is invalid or does not exist.
5: The target user is already a friend.
6: Invalid parameters.
7: The user cannot be friends with itself.
10: The friend request does not exist.
13: The users are not in the same game.
31: User with max friends sent friend request.
35: Invalid nickname.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
2: The user is banned from performing operation.
3: The user is blocked from performing this action.
14: The user has not passed the captcha.
4299: The flood limit has been exceeded.

POST /v1/users/:targetUserId/unfollow

Deletes the following between a user and user with targetUserId

Usage
import { fetchApi } from 'rozod';
import { postUsersTargetuseridUnfollow } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersTargetuseridUnfollow, {
targetUserId: /* integer */
});
NameTypeRequiredDescription
targetUserIdintegerYes

Type: unknown

StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
8: The user cannot follow itself.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
2: The user is banned from performing operation.
3: The user is blocked from performing this action.
14: The user has not passed the captcha.
4299: The flood limit has been exceeded.

POST /v1/users/:targetUserId/unfriend

Unfriend a user

Usage
import { fetchApi } from 'rozod';
import { postUsersTargetuseridUnfriend } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(postUsersTargetuseridUnfriend, {
targetUserId: /* integer */
});
NameTypeRequiredDescription
targetUserIdintegerYesThe target user id to unfriend

Type: unknown

StatusDescription
4001: The target user is invalid or does not exist.
4010: Authorization has been denied for this request.
4030: Token Validation Failed

GET /v1/users/:userId/friends

Get list of all friends for the specified user.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriends } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriends, {
userId: /* integer */,
userSort: /* unknown */
});
NameTypeRequiredDescription
userIdintegerYesThe user Id to get the friends for.
userSortunknownYesSpecifies how to sort the returned friends.
FieldTypeDescription
dataobject[]See below

data[] item fields:

FieldTypeDescription
isOnlineboolean
presenceType`01
isDeletedboolean
friendFrequentScorenumber
friendFrequentRanknumber
hasVerifiedBadgeboolean
descriptionstring
createdstring
isBannedboolean
externalAppDisplayNamestring
idnumber
namestring
displayNamestring
StatusDescription
4001: The target user is invalid or does not exist.

GET /v1/users/:userId/friends/count

Get the number of friends a user has

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsCount } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsCount, {
userId: /* integer */
});
NameTypeRequiredDescription
userIdintegerYes
FieldTypeDescription
countnumber
StatusDescription
4001: The target user is invalid or does not exist.

GET /v1/users/:userId/friends/find

Get a paginated list of all friends for the specified user.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsFind } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsFind, {
userId: /* integer */,
cursor: /* string? */,
limit: /* integer? = 50 */,
findFriendsType: /* unknown */
});
NameTypeRequiredDescription
userIdintegerYesThe user Id to get the friends for.
cursorstring?NoThe paging cursor for the previous or next page.
limitinteger? = 50NoThe number of results per request.
findFriendsTypeunknownYes
FieldTypeDescription
PreviousCursorstring
PageItemsobject[]See below
NextCursorstring
HasMoreboolean

PageItems[] item fields:

FieldTypeDescription
idnumber
hasVerifiedBadgeboolean
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.

GET /v1/users/:userId/friends/inactive

Get list of inactive friends for the specified user.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsInactive } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsInactive, {
userId: /* integer */
});
NameTypeRequiredDescription
userIdintegerYesThe user Id to get the friends for.
FieldTypeDescription
dataobject[]See below

data[] item fields:

FieldTypeDescription
isOnlineboolean
presenceType`01
isDeletedboolean
friendFrequentScorenumber
friendFrequentRanknumber
hasVerifiedBadgeboolean
descriptionstring
createdstring
isBannedboolean
externalAppDisplayNamestring
idnumber
namestring
displayNamestring
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4010: Authorization has been denied for this request.

GET /v1/users/:userId/friends/online

Get list of all online friends for the specified user.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsOnline } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsOnline, {
userId: /* integer */,
userSort: /* unknown */
});
NameTypeRequiredDescription
userIdintegerYesThe user Id to get the friends for.
userSortunknownYesThe sort order to return the friends.
FieldTypeDescription
dataobject[]See below

data[] item fields:

FieldTypeDescription
userPresenceobjectSee below
sortScorenumber
idnumber
namestring
displayNamestring

userPresence fields:

FieldTypeDescription
UserPresenceTypestring
UserLocationTypestring
lastLocationstring
placeIdnumber
rootPlaceIdnumber
gameInstanceIdstring
universeIdnumber
lastOnlinestring
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4010: Authorization has been denied for this request.

GET /v1/users/:userId/friends/search

Search for friends by name using a text query.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsSearch } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsSearch, {
userId: /* integer */,
query: /* string? */,
cursor: /* string? */,
limit: /* integer? = 20 */
});
NameTypeRequiredDescription
userIdintegerYesThe user Id to get the friends for.
querystring?NoThe string to search names of friends for.
cursorstring?NoThe paging cursor for the previous or next page.
limitinteger? = 20NoThe number of results per request.
FieldTypeDescription
PreviousCursorstring
PageItemsobject[]See below
NextCursorstring
HasMoreboolean

PageItems[] item fields:

FieldTypeDescription
idnumber
hasVerifiedBadgeboolean
StatusDescription
4001: The target user is invalid or does not exist.
6: Invalid parameters.
4010: Authorization has been denied for this request.

GET /v1/users/:userId/friends/statuses

Gets a list of friend statuses of specified users against the specified user.

Usage
import { fetchApi } from 'rozod';
import { getUsersUseridFriendsStatuses } from 'rozod/lib/endpoints/friendsv1';
const data = await fetchApi(getUsersUseridFriendsStatuses, {
userId: /* integer */,
userIds: /* number */
});
NameTypeRequiredDescription
userIdintegerYesThe user to check the friend statuses against.
userIdsnumberYes
FieldTypeDescription
dataobject[]See below

data[] item fields:

FieldTypeDescription
idnumber
status`“NotFriends""Friends"
StatusDescription
4001: The target user is invalid or does not exist.
15: Too many ids.
16: Invalid ids.