The Friends API provides comprehensive functionality for managing friendships, followers, and friend requests on Roblox.
Importing endpoints
Import the endpoints you need from the friends module:
import { getUsersUseridFriends, postUsersTargetuseridRequestFriendship, getUsersUseridFriendsCount } from 'rozod/endpoints/friendsv1';
import { fetchApi } from 'rozod';
Get user’s friends
Retrieve a list of all friends for a user.
const friends = await fetchApi(getUsersUseridFriends, {
userId: 1234567890,
userSort: 0, // 0 = Alphabetical, 1 = StatusFrequents, 2 = StatusAlphabetical
});
if (!isAnyErrorResponse(friends)) {
friends.data.forEach((friend) => {
console.log(`${friend.displayName} (@${friend.name})`);
console.log(`Online: ${friend.isOnline}`);
});
}
Get friends count
Get the total number of friends a user has.
const count = await fetchApi(getUsersUseridFriendsCount, {
userId: 1234567890,
});
if (!isAnyErrorResponse(count)) {
console.log(`Total friends: ${count.count}`);
}
Send friend request
Send a friend request to another user (requires authentication).
const result = await fetchApi(postUsersTargetuseridRequestFriendship, {
targetUserId: 987654321,
body: {
friendshipOriginSourceType: 0, // 0 = Unknown, 1 = QRCode, etc.
senderNickname: '', // Optional nickname
},
});
if (!isAnyErrorResponse(result)) {
console.log('Friend request sent');
if (result.isCaptchaRequired) {
console.log('Captcha required');
}
}
Some actions may require captcha verification. The response will indicate if a captcha is needed.
Get friend requests
Retrieve pending friend requests for the authenticated user.
import { getMyFriendsRequests } from 'rozod/endpoints/friendsv1';
const requests = await fetchApi(getMyFriendsRequests, {
limit: 25,
friendRequestSort: 1, // 0 = RequestCreated, 1 = SentAt, 2 = RequestCreatedWithMutualFriends
});
if (!isAnyErrorResponse(requests)) {
requests.data.forEach((request) => {
console.log(`Request from: ${request.displayName}`);
console.log(`Mutual friends: ${request.mutualFriendsList.length}`);
});
}
Accept friend request
Accept a pending friend request.
import { postUsersRequesteruseridAcceptFriendRequest } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUsersRequesteruseridAcceptFriendRequest, {
requesterUserId: 987654321,
});
if (!isAnyErrorResponse(result)) {
console.log('Friend request accepted');
}
Decline friend request
Decline a pending friend request.
import { postUsersRequesteruseridDeclineFriendRequest } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUsersRequesteruseridDeclineFriendRequest, {
requesterUserId: 987654321,
});
if (!isAnyErrorResponse(result)) {
console.log('Friend request declined');
}
Unfriend a user
Remove a user from your friends list.
import { postUsersTargetuseridUnfriend } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUsersTargetuseridUnfriend, {
targetUserId: 987654321,
});
if (!isAnyErrorResponse(result)) {
console.log('User unfriended');
}
Following system
Follow a user
import { postUsersTargetuseridFollow } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUsersTargetuseridFollow, {
targetUserId: 987654321,
body: {
captchaId: '',
captchaToken: '',
captchaProvider: '',
challengeId: '',
},
});
if (!isAnyErrorResponse(result)) {
console.log('Now following user');
}
Unfollow a user
import { postUsersTargetuseridUnfollow } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUsersTargetuseridUnfollow, {
targetUserId: 987654321,
});
if (!isAnyErrorResponse(result)) {
console.log('Unfollowed user');
}
Get followers
Retrieve users following a specific user.
import { getUsersTargetuseridFollowers } from 'rozod/endpoints/friendsv1';
const followers = await fetchApi(getUsersTargetuseridFollowers, {
targetUserId: 1234567890,
limit: 50,
});
if (!isAnyErrorResponse(followers)) {
followers.data.forEach((follower) => {
console.log(`${follower.displayName} is following`);
});
}
Get following
Retrieve users that a specific user is following.
import { getUsersTargetuseridFollowings } from 'rozod/endpoints/friendsv1';
const following = await fetchApi(getUsersTargetuseridFollowings, {
targetUserId: 1234567890,
limit: 50,
});
if (!isAnyErrorResponse(following)) {
following.data.forEach((user) => {
console.log(`Following: ${user.displayName}`);
});
}
Get follower/following counts
import { getUsersTargetuseridFollowersCount, getUsersTargetuseridFollowingsCount } from 'rozod/endpoints/friendsv1';
const followersCount = await fetchApi(getUsersTargetuseridFollowersCount, {
targetUserId: 1234567890,
});
const followingCount = await fetchApi(getUsersTargetuseridFollowingsCount, {
targetUserId: 1234567890,
});
if (!isAnyErrorResponse(followersCount) && !isAnyErrorResponse(followingCount)) {
console.log(`Followers: ${followersCount.count}`);
console.log(`Following: ${followingCount.count}`);
}
Search friends
Search through a user’s friends by name.
import { getUsersUseridFriendsSearch } from 'rozod/endpoints/friendsv1';
const results = await fetchApi(getUsersUseridFriendsSearch, {
userId: 1234567890,
query: 'john',
limit: 20,
});
if (!isAnyErrorResponse(results)) {
results.PageItems.forEach((friend) => {
console.log(`Found: ${friend.id}`);
});
}
Get online friends
Retrieve only the friends who are currently online.
import { getUsersUseridFriendsOnline } from 'rozod/endpoints/friendsv1';
const onlineFriends = await fetchApi(getUsersUseridFriendsOnline, {
userId: 1234567890,
});
if (!isAnyErrorResponse(onlineFriends)) {
onlineFriends.data.forEach((friend) => {
console.log(`${friend.displayName} is online`);
console.log(`Location: ${friend.userPresence.lastLocation}`);
});
}
Check friend status
Check the friendship status between users.
import { getUsersUseridFriendsStatuses } from 'rozod/endpoints/friendsv1';
const statuses = await fetchApi(getUsersUseridFriendsStatuses, {
userId: 1234567890,
userIds: [987654321, 555555555],
});
if (!isAnyErrorResponse(statuses)) {
statuses.data.forEach((status) => {
console.log(`User ${status.id}: ${status.status}`);
// status: 0 = NotFriends, 1 = Friends, 2 = RequestSent, 3 = RequestReceived
});
}
Batch operations
Check if users are friends
import { postUserUseridMultigetAreFriends } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUserUseridMultigetAreFriends, {
userId: 1234567890,
body: {
targetUserIds: [987654321, 555555555, 333333333],
},
});
if (!isAnyErrorResponse(result)) {
console.log('Friends:', result.friendsId);
}
Check following status
import { postUserFollowingExists } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUserFollowingExists, {
body: {
targetUserIds: [987654321, 555555555],
},
});
if (!isAnyErrorResponse(result)) {
result.followings.forEach((follow) => {
console.log(`User ${follow.userId}:`);
console.log(` Following: ${follow.isFollowing}`);
console.log(` Followed by: ${follow.isFollowed}`);
});
}
Use pagination with the cursor parameter to fetch large friend lists efficiently. The Friends API supports limits of 10, 18, 25, 50, or 100 items per request.
Get friend request count
Get the count of pending friend requests.
import { getUserFriendRequestsCount } from 'rozod/endpoints/friendsv1';
const count = await fetchApi(getUserFriendRequestsCount, undefined);
if (!isAnyErrorResponse(count)) {
console.log(`Pending requests: ${count.count}`);
}
Decline all friend requests
Decline all pending friend requests at once.
import { postUserFriendRequestsDeclineAll } from 'rozod/endpoints/friendsv1';
const result = await fetchApi(postUserFriendRequestsDeclineAll, undefined);
if (!isAnyErrorResponse(result)) {
if (result.backgrounded) {
console.log('Declining all requests in background');
}
}
Available endpoints
All endpoints are exported from rozod/endpoints/friendsv1:
getUsersUseridFriends - Get user’s friends
getUsersUseridFriendsCount - Get friend count
postUsersTargetuseridRequestFriendship - Send friend request
postUsersRequesteruseridAcceptFriendRequest - Accept friend request
postUsersRequesteruseridDeclineFriendRequest - Decline friend request
postUsersTargetuseridUnfriend - Unfriend user
postUsersTargetuseridFollow - Follow user
postUsersTargetuseridUnfollow - Unfollow user
getUsersTargetuseridFollowers - Get followers
getUsersTargetuseridFollowings - Get following
getUsersUseridFriendsOnline - Get online friends
getUsersUseridFriendsSearch - Search friends
- And more…
For the complete list, refer to the TypeScript types in your IDE.