/BTRoblox

BTRoblox - Making Roblox Better

Primary LanguageJavaScript

Available in the Chrome Web Store   Get the add-on from the Firefox Add-ons store

BTRoblox

BTRoblox, or Better Roblox, is an extension that aims to enhance Roblox website's look and functionality by adding a plethora of new features and modifying the layout of some existing pages.

Links

API Docs

Domain Description
abtesting.roblox.com Endpoints for the A/B Testing framework
accountinformation.roblox.com All endpoints for accessing/modifying account information
accountsettings.roblox.com All endpoints for account/user settings.
adconfiguration.roblox.com Roblox Ad Configuration related endpoints.
ads.roblox.com Ads configuration endpoints.
api.roblox.com Miscellaneous endpoints
assetdelivery.roblox.com Serves asset content.
auth.roblox.com All endpoints that tamper with authentication sessions.
avatar.roblox.com Endpoints relating to the customization of player avatars.
badges.roblox.com Endpoints for badges and badge awards management.
billing.roblox.com Real money transactions and interaction.
catalog.roblox.com Catalog items browsing and searching. Content and user based catalog items recommendations.
cdnproviders.roblox.com Purpose of Api here.
chat.roblox.com All chat and party related endpoints.
clientsettings.roblox.com Used by various Roblox clients to retrieve configuration information.
clientsettingscdn.roblox.com Used by various Roblox clients to retrieve configuration information.
contacts.roblox.com Contacts and userTag management.
contentstore.roblox.com ApiSite to front the TemporaryStore for files before uploading to S3
develop.roblox.com Game development configuration endpoints.
economy.roblox.com Endpoints related to transactions and currency.
economycreatorstats.roblox.com Roblox.EconomyCreatorStats.Api endpoints.
engagementpayouts.roblox.com For engagement-based payout information
followings.roblox.com Establishes follow relationship between subscriber entities (users, groups, etc) and source entities (games, groups, assets, etc.)
friends.roblox.com Friends and followers management.
gameinternationalization.roblox.com Manages internationalization of games such as translating in game content.
gamejoin.roblox.com All endpoints around launching a game.
gamepersistence.roblox.com Endpoints for the in-game datastore system for storing data for games.
games.roblox.com All endpoints for game discovery, and details.
groups.roblox.com Groups management.
groupsmoderation.roblox.com Group Moderation
inventory.roblox.com All endpoints for viewing (but not granting) ownership of items.
itemconfiguration.roblox.com Configure Items (bundles and avatar assets).
locale.roblox.com User locale management.
localizationtables.roblox.com Handles managing of localization tables.
metrics.roblox.com Record metrics across Roblox.
midas.roblox.com Handle requests around making purchases using Midas
notifications.roblox.com All notification stream endpoints.
points.roblox.com The web Api for the in-game PointsService.
premiumfeatures.roblox.com This API is for premium features and anything pertaining to account add ons
presence.roblox.com All endpoints for managing presence.
privatemessages.roblox.com All messages page endpoints.
publish.roblox.com All endpoints handling file uploads.
share.roblox.com Purpose of Api here.
textfilter.roblox.com High volume text filtering.
thumbnails.roblox.com Endpoints for requesting thumbnails.
thumbnailsresizer.roblox.com Validate and resize thumbnails to requested dimensions
trades.roblox.com Endpoints for trading collectible items.
translationroles.roblox.com Manages translation roles of developers in game localization.
translations.roblox.com Endpoints for requesting translations.
twostepverification.roblox.com Platform interface for the two step verification system.
usermoderation.roblox.com Endpoints for performing actions/operations related to User Moderation
users.roblox.com For direct Roblox user information.
voice.roblox.com APIs for Voice calls.

Undocumented APIs

User APIs

Get info about currently logged in user

  • https://www.roblox.com/my/account/json

    {
        "UserId": 261,
        "Name": "Shedletsky",
        "UserEmail": "d****@dummy.com",
        "IsEmailVerified": true,
        "AgeBracket": 0,
        "UserAbove13": true
    }
  • https://api.roblox.com/users/account-info

    {
        "UserId": 261,
        "Username": "Shedletsky",
        "HasPasswordSet": true,
        "Email": {
            "Value": "d****@dummy.com",
            "IsVerified": true
        },
        "AgeBracket": 0,
        "Roles": [],
        "MembershipType": 0,
        "RobuxBalance": 0,
        "NotificationCount": 0,
        "EmailNotificationEnabled": false,
        "PasswordNotificationEnabled": false,
        "CountryCode": "US"
    }
  • https://www.roblox.com/mobileapi/userinfo

    {
        "UserID": 261,
        "UserName": "Shedletsky",
        "RobuxBalance": 9001,
        "TicketsBalance": 0,
        "ThumbnailUrl": "http://t6.rbxcdn.com/a1c9c2b1cab0731732a59d96f840838e",
        "IsAnyBuildersClubMember": true,
        "IsPremium": false
    }
  • https://www.roblox.com/my/settings/json

    Response
    {
        "ChangeUsernameEnabled": true,
        "IsAdmin": false,
        "UserId": 261,
        "Name": "Shedletsky",
        "IsEmailOnFile": true,
        "IsEmailVerified": true,
        "IsPhoneFeatureEnabled": true,
        "RobuxRemainingForUsernameChange": 0,
        "PreviousUserNames": "",
        "UseSuperSafePrivacyMode": false,
        "IsSuperSafeModeEnabledForPrivacySetting": false,
        "UseSuperSafeChat": false,
        "IsAppChatSettingEnabled": true,
        "IsGameChatSettingEnabled": true,
        "IsAccountPrivacySettingsV2Enabled": true,
        "IsSetPasswordNotificationEnabled": false,
        "ChangePasswordRequiresTwoStepVerification": false,
        "ChangeEmailRequiresTwoStepVerification": false,
        "UserEmail": "d****@dummy.com",
        "UserEmailMasked": true,
        "UserEmailVerified": true,
        "CanHideInventory": true,
        "CanTrade": false,
        "MissingParentEmail": false,
        "IsUpdateEmailSectionShown": true,
        "IsUnder13UpdateEmailMessageSectionShown": false,
        "IsUserConnectedToFacebook": false,
        "IsTwoStepToggleEnabled": false,
        "AgeBracket": 0,
        "UserAbove13": true,
        "ClientIpAddress": "123.123.123.123",
        "AccountAgeInDays": 0,
        "IsOBC": false,
        "IsTBC": false,
        "IsAnyBC": false,
        "IsPremium": false,
        "IsBcRenewalMembership": false,
        "BcExpireDate": "\/Date(-0)\/",
        "BcRenewalPeriod": null,
        "BcLevel": null,
        "HasCurrencyOperationError": false,
        "CurrencyOperationErrorMessage": null,
        "BlockedUsersModel": {
            "BlockedUserIds": [156],
            "BlockedUsers": [{
                "uid": 156,
                "Name": "builderman"
            }],
            "MaxBlockedUsers": 50,
            "Total": 1,
            "Page": 1
        },
        "Tab": null,
        "ChangePassword": false,
        "IsAccountPinEnabled": true,
        "IsAccountRestrictionsFeatureEnabled": true,
        "IsAccountRestrictionsSettingEnabled": false,
        "IsAccountSettingsSocialNetworksV2Enabled": false,
        "IsUiBootstrapModalV2Enabled": true,
        "IsI18nBirthdayPickerInAccountSettingsEnabled": true,
        "InApp": false,
        "MyAccountSecurityModel": {
            "IsEmailSet": true,
            "IsEmailVerified": true,
            "IsTwoStepEnabled": true,
            "ShowSignOutFromAllSessions": true,
            "TwoStepVerificationViewModel": {
                "UserId": 261,
                "IsEnabled": true,
                "CodeLength": 0,
                "ValidCodeCharacters": null
            }
        },
        "ApiProxyDomain": "https://api.roblox.com",
        "AccountSettingsApiDomain": "https://accountsettings.roblox.com",
        "AuthDomain": "https://auth.roblox.com",
        "IsDisconnectFbSocialSignOnEnabled": true,
        "IsDisconnectXboxEnabled": true,
        "NotificationSettingsDomain": "https://notifications.roblox.com",
        "AllowedNotificationSourceTypes": ["Test", "FriendRequestReceived", "FriendRequestAccepted", "PartyInviteReceived", "PartyMemberJoined", "ChatNewMessage", "PrivateMessageReceived", "UserAddedToPrivateServerWhiteList", "ConversationUniverseChanged", "TeamCreateInvite", "GameUpdate", "DeveloperMetricsAvailable"],
        "AllowedReceiverDestinationTypes": ["DesktopPush", "NotificationStream"],
        "BlacklistedNotificationSourceTypesForMobilePush": [],
        "MinimumChromeVersionForPushNotifications": 50,
        "PushNotificationsEnabledOnFirefox": true,
        "LocaleApiDomain": "https://locale.roblox.com",
        "HasValidPasswordSet": true,
        "IsUpdateEmailApiEndpointEnabled": true,
        "FastTrackMember": null,
        "IsFastTrackAccessible": false,
        "HasFreeNameChange": false,
        "IsAgeDownEnabled": true,
        "IsSendVerifyEmailApiEndpointEnabled": true,
        "IsPromotionChannelsEndpointEnabled": true,
        "ReceiveNewsletter": false,
        "SocialNetworksVisibilityPrivacy": 6,
        "SocialNetworksVisibilityPrivacyValue": "AllUsers",
        "Facebook": null,
        "Twitter": "@Shedletsky",
        "YouTube": null,
        "Twitch": null
    }

Get online status of an user

  • https://api.roblox.com/users/261/onlinestatus/
    {
        "GameId": null,
        "IsOnline": false,
        "LastLocation": "Offline",
        "LastOnline": "2019-02-19T15:15:51.311703-06:00",
        "LocationType": 2,
        "PlaceId": null,
        "VisitorId": 261,
        "PresenceType": 0
    }

Place APIs

Get place details

  • https://www.roblox.com/places/api-get-details?assetId=606849621

    Response
    {
        "AssetId": 606849621,
        "Name": "🚂 BETTER TRAINS! Jailbreak ",
        "Description": "Last week we added a sewer escape and more! THIS WEEK we\u0027ve got a surprise, BETTER TRAINS! \r\n- No/Less sliding! 😃\r\n- Better performance! ⚡️\r\n- Longer trains! 🚂🚃🚃🚃\r\n- No flinging! 🚀\r\n- No more drifting trains! Stays on track! 🛤\r\n\r\n💰 This summer, expect a new place to rob in Jailbreak! Coming soon! \r\n\r\nWelcome to Jailbreak! Live the life of a Police Officer or a Criminal. Stop crimes or cause them. Uphold the law or break the law. In this world, the choice is yours. \r\n\r\nFollow us on Twitter for EARLY update information! \r\n@asimo3089\r\n@badccvoid \r\n@badimo \r\n\r\nJoin our group to know right when we upload future updates and events! https://www.roblox.com/My/Groups.aspx?gid=3059674 \r\n\r\nThumbnails by @ID0ntHaveAUse \r\nIcon/Thumbnails by @RBLXcrackop",
        "Created": "1/9/2017",
        "Updated": "5/26/2018",
        "FavoritedCount": 5933844,
        "Url": "https://www.roblox.com/games/606849621/BETTER-TRAINS-Jailbreak",
        "ReportAbuseAbsoluteUrl": "https://www.roblox.com/abusereport/asset?id=606849621\u0026RedirectUrl=%2fgames%2f606849621%2fBETTER-TRAINS-Jailbreak",
        "IsFavoritedByUser": true,
        "IsFavoritesUnavailable": false,
        "UserCanManagePlace": false,
        "VisitedCount": 1374993708,
        "MaxPlayers": 26,
        "Builder": "Badimo",
        "BuilderId": 210085248,
        "BuilderAbsoluteUrl": "https://www.roblox.com/groups/group.aspx?gid=3059674",
        "IsPlayable": true,
        "ReasonProhibited": "None",
        "ReasonProhibitedMessage": "None",
        "IsBuildersClubOnly": false,
        "IsCopyingAllowed": false,
        "BuildersClubOverlay": "None",
        "PlayButtonType": "FancyButtons",
        "AssetGenre": "Town and City",
        "AssetGenreViewModel": {
            "DisplayName": "Town and City",
            "Id": 7
        },
        "OnlineCount": 48219,
        "UniverseId": 245662005,
        "UniverseRootPlaceId": 606849621,
        "TotalUpVotes": 1799706,
        "TotalDownVotes": 209951,
        "UserVote": true,
        "OverridesDefaultAvatar": false,
        "UsePortraitMode": false,
        "IsExperimental": false,
        "Price": 0
    }

Get place settings

  • https://www.roblox.com/places/47324/settings

    Response
    {
        "DefaultFormatNameString": "{0}\\u0027s Place Number: {1}",
        "IUser": {
            "Name": "Shedletsky",
            "Description": "*snip*",
            "AccountId": 261,
            "Created": "*snip*",
            "AccountStatus": 0,
            "UseSuperSafePrivacyMode": false,
            "UseSuperSafeConversationMode": false,
            "AgeBracket": 0,
            "Birthdate": "*snip*",
            "GenderType": 0,
            "Id": 261
        },
        "GameDetailsResources": {
            "IsValueCreated": false,
            "Value": {
                "ActionShareGameToChat": "Share to chat",
                "HeadingDescription": "Description",
                "HeadingRecommendedGames": "Recommended Games",
                "LabelAbout": "About",
                ...
            }
        },
        "ID": 47324,
        "DefaultUserName": "Shedletsky",
        "DefaultPlaceNumber": "82",
        "Name": "Sword Fights on the Heights IV",
        "Description": "Death before dishonor.",
        "DescriptionMaxCharacterCount": 1000,
        "Genre": "All",
        "Access": "Everyone",
        "IsPublic": false,
        "DeviceSectionHeader": null,
        "SellGameAccessSectionHeader": null,
        "ShouldShowStartPlaceNameOrDescriptionUpdateAlsoUpdatesGames": false,
        "NumberOfMaxPlayersList": [
            1,
            2,
            3,
            ...
        ],
        "NumberOfPlayersList": [
            1,
            2,
            3,
            ...
        ],
        "IsAllGenresAllowed": false,
        "AllowedGearTypes": [
            {
                "GearTypeDisplayName": "Melee",
                "IsSelected": false,
                "EncodedBitMask": "1"
            },
            {
                "GearTypeDisplayName": "Power ups",
                "IsSelected": false,
                "EncodedBitMask": "8"
            },
            {
                "GearTypeDisplayName": "Ranged",
                "IsSelected": false,
                "EncodedBitMask": "2"
            },
            {
                "GearTypeDisplayName": "Navigation",
                "IsSelected": false,
                "EncodedBitMask": "16"
            },
            {
                "GearTypeDisplayName": "Explosives",
                "IsSelected": false,
                "EncodedBitMask": "4"
            },
            {
                "GearTypeDisplayName": "Musical",
                "IsSelected": false,
                "EncodedBitMask": "32"
            },
            {
                "GearTypeDisplayName": "Social",
                "IsSelected": false,
                "EncodedBitMask": "64"
            },
            {
                "GearTypeDisplayName": "Transport",
                "IsSelected": false,
                "EncodedBitMask": "256"
            },
            {
                "GearTypeDisplayName": "Building",
                "IsSelected": false,
                "EncodedBitMask": "128"
            }
        ],
        "ChatType": "Classic",
        "IsCopyingAllowed": false,
        "IsCommentsAllowed": true,
        "NumberOfPlayersMax": 50,
        "NumberOfPlayersPreferred": 40,
        "NumberOfCustomSocialSlots": 10,
        "IsSocialSlotTypesEnabled": true,
        "SocialSlotType": 1,
        "SellGameAccess": false,
        "ShowAllowPrivateServers": false,
        "ArePrivateServersAllowed": false,
        "PrivateServersPrice": 0,
        "PrivateServerMinPrice": 0,
        "MarketplaceTaxRate": 0.9,
        "ActivePrivateServersCount": 0,
        "ActivePrivateServersSubscriptionsCount": 0,
        "PrivateServerConfigurationLink": "https://develop.roblox.com/v1/universes//configuration/vip-servers",
        "Price": 0,
        "PrivateServersHelpLink": null,
        "OverridesDefaultAvatar": false,
        "UsePortraitMode": false,
        "BCSellRequirement": null,
        "BCSellReqirementMet": true,
        "SellingVisible": true,
        "BCSellReqirementText": "Pay to Play places are a premium feature only available to users with None.",
        "Creator": {
            "Name": "Shedletsky",
            "CreatorTargetId": 261,
            "CreatorType": 0
        },
        "PublishStep": 0,
        "MaxPublishStepReached": 0,
        "PlayableDevices": [
            {
                "DeviceType": 1,
                "Selected": true
            },
            {
                "DeviceType": 2,
                "Selected": true
            },
            {
                "DeviceType": 3,
                "Selected": true
            },
            {
                "DeviceType": 4,
                "Selected": false
            }
        ],
        "FinalPublishStep": 4,
        "VersionHistoryOnConfigurePageEnabled": true,
        "DefaultDevelopTabName": "Game",
        "PortraitModeEnabled": false,
        "RedirectTermsToHelpFullUrl": "https://en.help.roblox.com/hc/articles/115004647846-Roblox-Terms-of-Use",
        "UserIsAnyBuildersClubMember": false,
        "IsPremium": false,
        "UserIsSellerBanned": false,
        "DeviceConfigurationEnabled": true,
        "ConsoleContentAgreementEnabled": true,
        "ShowDeveloperProducts": true,
        "CurrentUniverse": null,
        "AllowPlaceToBeCopiedInGame": false,
        "AllowPlaceToBeUpdatedInGame": false,
        "DeveloperProductUniverseId": 0,
        "TemplateID": null,
        "AccessTypesUsingPermissions": null,
        "AccessTypeSelectList": [
            {
                "Disabled": false,
                "Group": null,
                "Selected": false,
                "Text": "Everyone",
                "Value": null
            },
            {
                "Disabled": false,
                "Group": null,
                "Selected": false,
                "Text": "Friends",
                "Value": null
            }
        ],
        "UserAgreementModel": null,
        "MachineID": "WEB946",
        "BaseScripts": [
            "~/js/roblox.js",
            "~/js/jquery.tipsy.js",
            "~/js/GoogleAnalytics/GoogleAnalyticsEvents.js",
            "~/js/JSErrorTracker.js",
            "~/js/jquery.cookie.js",
            "~/js/common/forms.js",
            "~/js/jquery.simplemodal-1.3.5.js",
            "~/js/GenericConfirmation.js",
            "~/js/JavaScriptEndpoints.js",
            "~/js/XsrfToken.js"
        ],
        "Title": "Roblox Studio",
        "Groups": null,
        "PrimaryGroupId": null,
        "MetaTagListViewModel": {
            "FacebookMetaTags": null,
            "TwitterMetaTags": null,
            "StructuredDataTags": {
                "StructuredDataContext": "http://schema.org",
                "StructuredDataType": "Organization",
                "StructuredDataName": "Roblox",
                "RobloxUrl": "https://www.roblox.com/",
                "RobloxLogoUrl": "https://images.rbxcdn.com/c69b74f49e785df33b732273fad9dbe0.png",
                "RobloxFacebookUrl": "https://www.facebook.com/ROBLOX/",
                "RobloxTwitterUrl": "https://twitter.com/roblox",
                "RobloxLinkedInUrl": "https://www.linkedin.com/company/147977",
                "RobloxInstagramUrl": "https://www.instagram.com/roblox/",
                "RobloxYouTubeUrl": "https://www.youtube.com/user/roblox",
                "RobloxGooglePlusUrl": "https://plus.google.com/+roblox",
                "RobloxTwitchTvUrl": "https://www.twitch.tv/roblox",
                "Title": "Roblox",
                "Description": null,
                "Images": null,
                "ImageWidth": null,
                "ImageHeight": null
            },
            "Description": "Roblox is a global platform that brings people together through play.",
            "Keywords": "free games, online games, building games, virtual worlds, free mmo, gaming cloud, physics engine",
            "NoIndexNoFollow": false,
            "IncludeReferrerOriginTag": false
        },
        "XsrfToken": "*snip*",
        "XsrfTokensEnabled": true,
        "IsSiftScienceEnabled": false,
        "JavascriptErrorTrackerViewModel": {
            "InitializeParameter": "{ \\u0027suppressConsoleError\\u0027: true}"
        }
    }

Toggle game visibility in profile

POST https://www.roblox.com/game/toggle-profile
Cookie: .ROBLOSECURITY=*
X-CSRF-TOKEN: *
Content-Type: application/json
Content-Length: 42

{"placeId":1818,"addToProfile":true}
{"isValid":true,"data":{"inShowcase":true},"error":""}

Universe APIs

Get info about an universe

Get assets in an universe

  • https://api.roblox.com/universes/get-aliases?universeId=265920480&page=1

    • Requires studio access to the universe
    {
        "FinalPage": true,
        "Aliases": [{
            "Name": "Scripts/Init",
            "Type": 1,
            "TargetId": 718028943,
            "Asset": {
                "Id": 718028943,
                "TypeId": 5,
                "Name": "Script",
                "Description": "Script",
                "CreatorType": 1,
                "CreatorTargetId": 4719353,
                "Created": "2017-03-31T12:16:46.547",
                "Updated": "2017-08-29T08:50:09.317"
            },
            "Version": null
        }],
        "PageSize": 50
    }

Get places in an universe

Get universe containing place

DataStore APIs

V1

GetAsync("Key")

GET https://gamepersistence.roblox.com/v1/persistence/standard?key=DSName&scope=DSScope&target=Key
GET https://gamepersistence.roblox.com/v1/persistence/sorted?key=DSName&scope=DSScope&target=Key
Cookie: .ROBLOSECURITY=*
Content-Type: application/octet-stream
Roblox-Place-Id: 1818
200 OK
content-length: 7
content-type: application/octet-stream
roblox-usn: 08D94934165492FF.0000000002.08D94934E28101F9.01

"value"

SetAsync("Key", "value")

POST https://gamepersistence.roblox.com/v1/persistence/standard?key=DSName&scope=DSScope&target=Key
POST https://gamepersistence.roblox.com/v1/persistence/sorted?key=DSName&scope=DSScope&target=Key
Cookie: .ROBLOSECURITY=*
Content-Type: application/octet-stream
Roblox-Place-Id: 1818
Content-Length: 7

"value"
200 OK
content-length: 57
content-type: application/json; charset=utf-8

{"usn":"08D94934165492FF.0000000002.08D94934E28101F9.01"}

RemoveAsync("Key")

POST https://gamepersistence.roblox.com/v1/persistence/standard/remove?key=DSName&scope=DSScope&target=Key
POST https://gamepersistence.roblox.com/v1/persistence/sorted/remove?key=DSName&scope=DSScope&target=Key
Cookie: .ROBLOSECURITY=*
Content-Type: application/octet-stream
Roblox-Place-Id: 1818
200 OK
content-length: 7
content-type: application/octet-stream
roblox-usn: 08D94934165492FF.0000000002.08D94934E28101F9.01

"value"

IncrementAsync("Key", 10)

POST https://gamepersistence.roblox.com/v1/persistence/standard/increment?key=DSName&scope=DSScope&target=Key&by=10
POST https://gamepersistence.roblox.com/v1/persistence/sorted/increment?key=DSName&scope=DSScope&target=Key&by=10
Cookie: .ROBLOSECURITY=*
Content-Type: application/octet-stream
Roblox-Place-Id: 1818
200 OK
content-type: application/json; charset=utf-8
content-length: 70

{"value":"10","usn":"08D94934165492FF.0000000004.08D9493603433C74.01"}

GetSortedAsync(true, 1, 1, 100):AdvanceToNextPageAsync()

GET https://gamepersistence.roblox.com/v1/persistence/sorted/list?scope=DSScope&key=DSName&pageSize=10&direction=asc&minValue=1&maxValue=100&exclusiveStartKey=AQEBAQRLZXkx
Cookie: .ROBLOSECURITY=*
Content-Type: application/octet-stream
Roblox-Place-Id: 1818
200 OK
content-type: application/json; charset=utf-8
content-length: 102

{"entries":[{"target":"Key2","value":2,"usn":"2"}],"lastEvaluatedKey":"AQEBAgRLZXky"}

V2

GetAsync with multiple keys

POST https://gamepersistence.roblox.com/persistence/getV2?type=standard
POST https://gamepersistence.roblox.com/persistence/getV2?type=sorted
Roblox-Place-Id: 1818
Content-Type: application/x-www-form-urlencoded
Cookie: .ROBLOSECURITY=*
Content-Length: 128

&qkeys[0].scope=DSScope&qkeys[0].key=DSName&qkeys[0].target=Key1&qkeys[1].scope=DSScope&qkeys[1].key=DSName&qkeys[1].target=Key2
200 OK
content-type: application/json; charset=utf-8
content-length: 152

{"data":[{"Key":{"Scope":"DSScope","Target":"Key1","Key":"DSName"},"Value":"1"},{"Key":{"Scope":"DSScope","Target":"Key2","Key":"DSName"},"Value":"2"}]}

GetSortedAsync(true, 1, 1, 100):AdvanceToNextPageAsync()

POST https://gamepersistence.roblox.com/persistence/getSortedValues?scope=DSScope&key=DSName&pageSize=1&ascending=true&inclusiveMinValue=1&inclusiveMaxValue=100&exclusiveStartKey=AQEBAQRLZXkx
Roblox-Place-Id: 1818
Cookie: .ROBLOSECURITY=*
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
content-length: 85

{"data":{"Entries":[{"Target":"Key2","Value":2}],"ExclusiveStartKey":"AQEBAgRLZXky"}}

Profile Page APIs

Get collections of an user

  • https://www.roblox.com/users/profile/robloxcollections-json?userId=261
    {
        "CollectionsItems": [
            {
                "AssetSeoUrl": "https://www.roblox.com/catalog/1114768/The-Kleos-Aphthiton",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t3.rbxcdn.com/0af97318f7dfc4313441e87cfcdc059d",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "Name": "The Kleos Aphthiton",
                "FormatName": null,
                "Description": "Kleos Aphthiton: undying glory. This helm was won in the August 2007 Grand Melee competition. Other helms like it were awarded to the top four finishers in that contest. It is very rare.",
                "AssetRestrictionIcon": {
                    "TooltipText": "Discontinued item, resellable.",
                    "CssTag": "limited",
                    "LoadAssetRestrictionIconCss": false,
                    "HasTooltip": false
                }
            },
            {
                "AssetSeoUrl": "https://www.roblox.com/catalog/6128663/Crown-of-the-Dark-Lord-of-SQL",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t0.rbxcdn.com/3098434922e315e109bc9799cac2b8b4",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "Name": "Crown of the Dark Lord of SQL",
                "FormatName": null,
                "Description": "SELECT * from users WHERE accountid = 111627",
                "AssetRestrictionIcon": {
                    "TooltipText": null,
                    "CssTag": null,
                    "LoadAssetRestrictionIconCss": false,
                    "HasTooltip": false
                }
            },
            ...
        ]
    }

Get player badges of an user

  • https://www.roblox.com/users/profile/playerassets-json?assetTypeId=21&userId=261
    • Was made to be used in profiles, so only shows first 6 badges
    {
        "Title": "Player Badges",
        "Label": "badges",
        "ModalAssetViewType": 1,
        "MaxNumberOfVisibleAssets": 6,
        "Assets": [
            {
                "AssetSeoUrl": "https://www.roblox.com/badges/1946785131/Risk",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t6.rbxcdn.com/4c1865391b1b027532d2b332ac2dc62b",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "Name": "Risk",
                "FormatName": null,
                "Description": "Get a streak of 5 kills",
                "AssetRestrictionIcon": null
            },
            {
                "AssetSeoUrl": "https://www.roblox.com/badges/1916274658/By-the-Book",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t6.rbxcdn.com/2176e6a0e08757e1354ebf6709c335aa",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "Name": "By the Book!",
                "FormatName": null,
                "Description": "You read the rules!",
                "AssetRestrictionIcon": null
            },
            ...
        ],
        "UserId": 261,
        "IsSeeAllHeaderButtonVisible": true,
        "AssetTypeInventoryUrl": "https://www.roblox.com/users/261/inventory/#!/badges",
        "ProfileLangResources": {
            "ActionAccept": "Accept",
            "ActionAddFriend": "Add Friend",
            "ActionBlockUser": "Block User",
            "ActionCancelBlockUser": "Cancel",
            ...
        }
    }

Get games on an user's profile

  • https://www.roblox.com/users/profile/playergames-json?userId=261
    {
        "Title": "Games",
        "Games": [
            {
                "CreatorID": 0,
                "CreatorName": "Shedletsky",
                "CreatorAbsoluteUrl": "https://www.roblox.com/users/261/profile",
                "Plays": 17022411,
                "Price": 0,
                "ProductID": 0,
                "IsOwned": false,
                "IsVotingEnabled": true,
                "TotalUpVotes": 28624,
                "TotalDownVotes": 6076,
                "TotalBought": 0,
                "UniverseID": 156639,
                "HasErrorOcurred": false,
                "Favorites": 244706,
                "Description": "Death before dishonor.",
                "GameDetailReferralUrl": "https://www.roblox.com/games/refer?PlaceId=47324\\u0026Position=1\\u0026PageType=Profile",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t0.rbxcdn.com/47624390b8be1002eb244280d0cee967",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "UseDataSrc": false,
                "IsAsyncThumbnailEnabled": false,
                "GamePageResources": null,
                "Name": "Sword Fights on the Heights IV",
                "PlaceID": 47324,
                "PlayerCount": 26,
                "ImageId": 0,
                "IsSecure": false,
                "ShowExperimentalMode": false
            },
            {
                "CreatorID": 0,
                "CreatorName": "Shedletsky",
                "CreatorAbsoluteUrl": "https://www.roblox.com/users/261/profile",
                "Plays": 104271,
                "Price": 0,
                "ProductID": 0,
                "IsOwned": false,
                "IsVotingEnabled": true,
                "TotalUpVotes": 1227,
                "TotalDownVotes": 230,
                "TotalBought": 0,
                "UniverseID": 34927903,
                "HasErrorOcurred": false,
                "Favorites": 5049,
                "Description": "I can\\u0027t tell if I\\u0027m making fun of cart ride games or paying homage to them. Favorite if you like riding carts into my face.",
                "GameDetailReferralUrl": "https://www.roblox.com/games/refer?PlaceId=77814493\\u0026Position=2\\u0026PageType=Profile",
                "Thumbnail": {
                    "Final": true,
                    "Url": "https://t6.rbxcdn.com/bad82e1d58c247788cb501879e9f6dbe",
                    "RetryUrl": null,
                    "UserId": 0,
                    "EndpointType": "Avatar"
                },
                "UseDataSrc": false,
                "IsAsyncThumbnailEnabled": false,
                "GamePageResources": null,
                "Name": "Ride a Cart Into My Face",
                "PlaceID": 77814493,
                "PlayerCount": 0,
                "ImageId": 0,
                "IsSecure": false,
                "ShowExperimentalMode": false
            },
            ...
        ],
        "ModalAssetViewType": 4,
        "ProfileLangResources": {
            "ActionAccept": "Accept",
            "ActionAddFriend": "Add Friend",
            "ActionBlockUser": "Block User",
            ...
        },
        "GamePageResources": {
            "abelFilterDefault": "Default",
            "ActionDisableExperimentalMode": "Disable",
            "ActionSeeAll": "See All",
            ...
        }
    }