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.
- Roblox Web Apis by matthewdean
- Roblox-Apis by NoTwistedHere
- API Docs
- Undocumented APIs
- roblox://
- roblox-studio://
- apis.roblox.com/player-hydration-service
- apis.roblox.com/content-aliases-api
- apis.roblox.com/creator-marketplace-purchasing-service
- apis.roblox.com/game-passes
- apis.roblox.com/asset-permissions-api
- apis.roblox.com/explore-api
- apis.roblox.com/search-api
- apis.roblox.com/platform-chat-api
- apis.roblox.com/showcases-api
- develop.roblox.com
- economy.roblox.com
- gamepersistence.roblox.com
- www.roblox.com
Domain | Description |
---|---|
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. |
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. |
chat.roblox.com | All chat and party related endpoints. |
chatmoderation.roblox.com | |
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. |
notifications.roblox.com | All notification stream endpoints. |
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. |
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. |
twostepverification.roblox.com | Platform interface for the two step verification system. |
users.roblox.com | For direct Roblox user information. |
voice.roblox.com | APIs for Voice calls. |
- roblox://experiences/start?id=1818
- roblox://placeId=1818/
- supported params:
placeId
(or justid
),gameInstanceId
,accessCode
,linkCode
,launchData
,reservedServerAccessCode
,joinAttemptId
,joinAttemptOrigin
,callId
andbrowserTrackerId
. (credit to bloxstrap for this information)
- supported params:
- roblox-studio:1+launchmode:edit+task:EditPlace+placeId:1818+universeId:13058
- POST https://apis.roblox.com/content-aliases-api/v1/universes/create-alias?universeId={universeId}&name={name}&type={aliasTypeId}&targetId{targetId}
- POST https://apis.roblox.com/content-aliases-api/v1/universes/delete-alias?universeId={universeId}&name={name}
- POST https://apis.roblox.com/content-aliases-api/v1/universes/update-alias?universeId={universeId}&oldName={oldName}&name={name}&type={aliasTypeId}&targetId={targetId}
- POST https://apis.roblox.com/creator-marketplace-purchasing-service/v1/products/1346487601/purchase
{"assetId":11829118051,"assetType":10,"expectedPrice":0,"searchId":null}
{"purchased":true,"productId":1346487601,"price":0,"reason":"Success"}
POST https://apis.roblox.com/asset-permissions-api/v1/assets/check-permissions
content-type: application/json
{
"requests": [
{
"subject": {
"subjectType": "User" | "Group",
"subjectId": "{userId}" | "{groupId}"
},
"action": "Edit",
"assetId": {assetId}
}
]
}
200 OK
content-type: application/json
{
"results": [
{ "value": { "status": "NoPermission" | "HasPermission" } }
]
}
- GET https://apis.roblox.com/explore-api/v1/get-sorts?sessionId={sessionID}
- GET https://apis.roblox.com/explore-api/v1/get-sort-content?sessionId={sessionID}&sortId={sortID}
-
GET https://apis.roblox.com/platform-chat-api/v1/get-conversation-metadata
-
POST https://apis.roblox.com/platform-chat-api/v1/update-typing-status
{"conversation_id":"{conversationId}"}
{"status":"success"}
-
POST https://apis.roblox.com/platform-chat-api/v1/send-messages
{"conversation_id":"{conversationId}","messages":[{"content":"this is a test message"}]}
{"messages":[{"id":"12345678-1234-1234-1234-123456789abc","content":"this is a test message","sender_user_id":4719353,"created_at":"2024-06-27T21:32:22.7534644Z","status":"success","type":"unknown_type"}]}
-
POST https://apis.roblox.com/platform-chat-api/v1/create-conversations
{"conversations":[{"type":"group","name":"","participant_user_ids":[1234,2345]}],"include_user_data":true}
{"conversations":[{"source":"chat","id":"123456789","type":"group","name":null,"created_by":4719353,"participant_user_ids":[4719353,1234,2345],"user_data":*snip*,"messages":[],"unread_message_count":0,"updated_at":"2024-06-27T21:39:27.7080493Z","created_at":"0001-01-01T00:00:00Z","status":"success"}]}
-
POST https://apis.roblox.com/platform-chat-api/v1/get-conversations
{"ids":[123456789],"include_messages":true,"include_participants":true,"include_user_data":true}
{"conversations":[{"source":"chat","id":"123456789","type":"group","name":null,"created_by":4719353,"participant_user_ids":[4719353,1234,2345],"user_data":*snip*,"messages":[],"unread_message_count":0,"updated_at":"2024-06-27T21:39:27.7080493Z","created_at":"2024-06-27T21:39:27.7080493Z"}]}
- GET https://apis.roblox.com/showcases-api/v1/users/profile/playerassets-json?assetTypeId=10&userId=4719353
- Supported assetTypeIds: 10 (Models), 11 (Clothing)
- These examples use this place with placeId of 1076067099 and universeId of 446315170
- GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores?prefix=T&maxItemsToReturn=1&exclusiveStartKey=cursor
Roblox-Place-Id: 1076067099
200 OK {"datastores":[{"name":"Test","createdTime":"2024-08-22T16:49:57.8516146Z","updatedTime":"2024-08-22T16:49:57.8516146Z"}],"lastReturnedKey":""}
- GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi
Roblox-Place-Id: 1076067099
// If key exists 200 OK content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "ho"
// If key doesn't exist 404 Not Found content-type: application/json {"errors":[{"code":11,"message":"The requested key does not exist.","retryable":false}]}
- GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi&version=08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01
Roblox-Place-Id: 1076067099
// If version exists 200 OK content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "ho"
// If version doesn't exist but key does 204 No Content content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] <no data>
// If key doesn't exist 404 Not Found content-type: application/json {"errors":[{"code":11,"message":"The requested key does not exist.","retryable":false}]}
GetDataStore("Test"):SetAsync("hi", "ho", {1, 2, 3}, DataStoreSetOptions({ key1 = "value1", key2 = "value2" }))
- POST https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi
Content-Type: application/octet-stream Content-MD5: VQNh2cu4sdBAMRrdwrY35w== Roblox-Place-Id: 1076067099 Roblox-Object-Userids: [1,2,3] Roblox-Object-Attributes: {"key1":"value1","key2":"value2"} "ho"
200 OK content-type: application/json {"version":"08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01","deleted":false,"contentLength":4,"createdTime":"2024-08-22T17:00:36.1474268Z","objectCreatedTime":"2024-08-22T16:49:57.8993219Z"}
GetDataStore("Test"):UpdateAsync("hi", function() return "ho", {1, 2, 3}, DataStoreSetOptions({ key1 = "value1", key2 = "value2" }) end)
- Implemented using GetAsync and SetAsync with If-Match header
// First it gets current data GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi Roblox-Place-Id: 1076067099
200 OK content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "ho"
// Then it tries to set it to new value (note If-Match header which matches etag returned by GetAsync) POST https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi Content-Type: application/octet-stream If-Match: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" Content-MD5: uax0tCReVutN8x1hJ+LNDQ== Roblox-Place-Id: 1076067099 Roblox-Object-Userids: [1,2,3] Roblox-Object-Attributes: {"key1":"value1","key2":"value2"} "hy"
// If it succeeds 200 OK content-type: application/json {"version":"08DCC2CE8B549D47.0000000003.08DCC2CEED7D4991.01","deleted":false,"contentLength":4,"createdTime":"2024-08-22T17:21:58.3230353Z","objectCreatedTime":"2024-08-22T17:19:13.6397639Z"}
// If it fails (data does not match If-Match), return new data and repeat setasync 412 Precondition Failed content-type: application/octet-stream content-md5: uax0tCReVutN8x1hJ+LNDQ== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "hy"
- DELETE https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 <no body>
// If key exists 200 OK content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "ho"
// If key doesn't exist 404 Not Found content-type: application/json {"errors":[{"code":11,"message":"The requested key does not exist.","retryable":false}]}
- DELETE https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object?datastore=Test&objectKey=global%2Fhi&version=08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 <no body>
// If version exists 200 OK content-type: application/octet-stream content-md5: VQNh2cu4sdBAMRrdwrY35w== etag: "08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01" roblox-object-version-id: 08DCC2CA74D3E243.0000000007.08DCC2CBF140D0DC.01 roblox-object-created-time: 2024-08-22T16:49:57.8993219Z roblox-object-version-created-time: 2024-08-22T17:00:36.1474268Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] "ho"
// If version doesn't exist 404 Not Found content-type: application/json {"errors":[{"code":12,"message":"The requested object version does not exist.","retryable":false}]}
GetDataStore("Test"):IncrementAsync("hi", 1, {1, 2, 3}, DataStoreSetOptions({ key1 = "value1", key2 = "value2" }))
- POST https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object/increment?datastore=Test&objectKey=global%2Fhi&incrementBy=1
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 Roblox-Object-Userids: [1,2,3] Roblox-Object-Attributes: {"key1":"value1","key2":"value2"} <no body>
// If it succeeds 200 OK content-type: application/octet-stream content-md5: xMpCOKC5I4INzFCab3WEmw== etag: "08DCC2D1D7C3A452.0000000001.08DCC2D1D7C3A452.01" roblox-object-version-id: 08DCC2D1D7C3A452.0000000001.08DCC2D1D7C3A452.01 roblox-object-created-time: 2024-08-22T17:42:50.3644242Z roblox-object-version-created-time: 2024-08-22T17:42:50.3644242Z roblox-object-attributes: {"key1":"value1","key2":"value2"} roblox-object-userids: [1,2,3] 1
// If existing data is not numeric 400 Bad Request content-type: application/json {"errors":[{"code":24,"message":"Key value is not numeric.","retryable":false}]}
- GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects?datastore=Test&prefix=global%2Fhi&maxItemsToReturn=1&exclusiveStartKey=cursor&excludeDeleted=true
Roblox-Place-Id: 1076067099
200 OK content-type: application/json {"keys":["global/hi"],"lastReturnedKey":"nzrxiER/+KVBNMl9B7mbqnzqkKsBZcr9liT+cwLGGf01Iw=="}
- GET https://gamepersistence.roblox.com/v2/persistence/446315170/datastores/objects/object/versions?datastore=Test&objectKey=global%2Fhi&sortOrder=Ascending&startTime=1970-01-01T00:00:00Z&endTime=2024-08-22T18:24:03Z&maxItemsToReturn=1
- Start and end times are in millis
Roblox-Place-Id: 1076067099
200 OK content-type: application/json {"versions":[{"version":"08DCC2CA74D3E243.0000000005.08DCC2CB5C770715.01","deleted":false,"contentLength":4,"createdTime":"2024-08-22T16:56:26.5221909Z","objectCreatedTime":"2024-08-22T16:49:57.8993219Z"}],"lastReturnedKey":"X3qpRUgyRrQhbDShI97MRuacpM6vR7jTjyNqyBDMiMdleUpwYm14cGJtVldaWEp6YVc5dUlqcG1ZV3h6WlN3aWJHRnpkRlpsY25OcGIyNGlPaUl3T0VSRFF6SkRRVGMwUkRORk1qUXpMakF3TURBd01EQXdNRFV1TURoRVEwTXlRMEkxUXpjM01EY3hOUzR3TVNJc0lrTjFjbk52Y2xabGNuTnBiMjRpT2pGOQ=="}
// If key doesn't exist 404 Not Found content-type: application/json {"errors":[{"code":11,"message":"The requested key does not exist.","retryable":false}]}
- GET https://gamepersistence.roblox.com/v1/persistence/sorted?key=Test&scope=global&target=hi
Roblox-Place-Id: 1076067099
200 OK content-type: application/octet-stream roblox-usn: 123 123
- POST https://gamepersistence.roblox.com/v1/persistence/sorted?key=Test&scope=global&target=hi
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 123
200 OK content-type: application/json {"usn":"123"}
- POST https://gamepersistence.roblox.com/v1/persistence/sorted/remove?key=Test&scope=global&target=hi
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 <no data>
200 OK content-type: application/octet-stream roblox-usn: 123 123
- POST https://gamepersistence.roblox.com/v1/persistence/sorted/increment?key=Test&scope=global&target=hi&by=1
Content-Type: application/octet-stream Roblox-Place-Id: 1076067099 <no data>
200 OK content-type: application/json {"value":"124","usn":"124"}
- GET https://gamepersistence.roblox.com/v1/persistence/sorted/list?key=Test&scope=global&pageSize=1&direction=asc&minValue=1&maxValue=100&exclusiveStartKey=AQEBAQRLZXkx
Roblox-Place-Id: 1076067099
200 OK content-type: application/json {"entries":[{"target":"hi","value":123,"usn":"123"}],"lastEvaluatedKey":"AQEBAgRLZXky"}