/roblox-web-apis

User-compiled list of ROBLOX web APIs

Primary LanguageJavaScript

ROBLOX Web APIs

Search APIs

http://www.roblox.com/games/list-json?sortFilter=1&MaxRows=5

####Search for an audio asset with the search term "pendulum fasten" http://search.roblox.com/catalog/json?Category=9&Keyword=pendulum%20fasten

Place APIs

####Get game passes for a place

####Get a place's game instances startIndex must be a multiple of 10

Set APIs

Get assets in a set

  • http://assetgame.roblox.com/Game/Tools/InsertAsset.ashx?sid=2

    <List>
        <Value>
            <Table>
                <Entry>
                    <Key>Name</Key>
                    <Value>Universal Connector</Value>
                </Entry>
                <Entry>
                    <Key>AssetId</Key>
                    <Value>10100443</Value>
                </Entry>
                <Entry>
                    <Key>AssetSetId</Key>
                    <Value>2</Value>
                </Entry>
                <Entry>
                    <Key>AssetVersionId</Key>
                    <Value>25509660</Value>
                </Entry>
                <Entry>
                    <Key>CreatorName</Key>
                    <Value>ROBLOX</Value>
                </Entry>
                <Entry>
                    <Key>IsTrusted</Key>
                    <Value>True</Value>
                </Entry>
            </Table>
        </Value>
    </List>

Economy APIs

####Get the currency exchange rates

// PHP 5+
$client = new SoapClient("http://www.roblox.com/Marketplace/EconomyServices.asmx?WSDL");
$response = $client->GetEstimatedTradeReturnForTickets(array("ticketsToTrade" => 1000));
echo $response->GetEstimatedTradeReturnForTicketsResult;
// node.js
var request = require('request');

var options = {
    method: 'POST',
       url: 'http://www.roblox.com/Marketplace/EconomyServices.asmx/GetEstimatedTradeReturnForRobux',
      json: { robuxToTrade: 1000 }
};

request(options, function(err, res, json) {
    var tixAmount = json.d;
    console.log(tixAmount);
});

Thumbnail APIs

####Asset Thumbnails

####Outfit Thumbnails

####Avatar Thumbnails

####Builders Club Overlay

####Valid Thumbnail Sizes

48x48 60x62 75x75 100x100 110x110 160x100 250x250 352x352 420x230 420x420
/Game/Tools/ThumbnailAsset.ashx x x x x
/Thumbs/Pixelated.ashx x
/Asset-Thumbnail/Json x x x x x x x x x x
/Outfit-Thumbnail/Json x x x x x x x x x x
/Thumbs/Asset.ashx x x x x x x x x x x
/Thumbs/Avatar.ashx x x x x x x x x x x
/Thumbs/RawAsset.ashx x x x x x x x x x x

Group APIs

Get a group's games

Get a group's emblem asset id

Get a thumbnail for a group

####Check if a user is in a group

####Get a user's rank number

####Get a user's rank name

####Get a group's ranks

  • http://www.roblox.com/api/groups/1/RoleSets/

    [{
        "ID": 169,
        "Name": "Member",
        "Rank": 1
    }, {
        "ID": 143227,
        "Name": "Dude",
        "Rank": 180
    }, {
        "ID": 143226,
        "Name": "Hunk",
        "Rank": 200
    }, {
        "ID": 94,
        "Name": "Admin",
        "Rank": 254
    }, {
        "ID": 28,
        "Name": "Owner",
        "Rank": 255
    }]

####Get a user's primary group

Friend APIs

####Check if two users are friends

####Check if a user is best friends with another user

####Get information about a developer product

  • http://api.roblox.com/Marketplace/ProductDetails?productId=18026036

    {
        "AssetId": 0,
        "ProductId": 18026036,
        "Name": "85 Candies Pack",
        "Description": null,
        "AssetTypeId": 0,
        "Creator": {
            "Id": 0,
            "Name": null
        },
        "IconImageAssetId": 0,
        "Created": "2013-10-16T00:37:38.517Z",
        "Updated": "2013-10-16T00:37:38.517Z",
        "PriceInRobux": 50,
        "PriceInTickets": 625,
        "Sales": 0,
        "IsNew": false,
        "IsForSale": true,
        "IsPublicDomain": false,
        "IsLimited": false,
        "IsLimitedUnique": false,
        "Remaining": null,
        "MinimumMembershipLevel": 0,
        "ContentRatingTypeId": 0
    }

User APIs

Get username from ID

Get ID from username

Get a list of places created by a user

  • http://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": 65437,
            "Price": 0,
            "ProductID": 0,
            "IsOwned": false,
            "IsVotingEnabled": true,
            "TotalUpVotes": 79,
            "TotalDownVotes": 34,
            "TotalBought": 0,
            "UniverseID": 150387,
            "HasErrorOcurred": false,
            "Favorites": 1728,
            "Description": "In a dystopian future, Robloxia is overrun by killbots.",
            "GameDetailReferralUrl": "http://www.roblox.com/games/48891/Timmy-and-the-Killbots",
            "Thumbnail": {
                "Final": true,
                "Url": "http://t7.rbxcdn.com/db35c88f3bfe3e45898cf9a65b370dd9",
                "RetryUrl": null
            },
            "UseDataSrc": false,
            "Name": "Timmy and the Killbots",
            "PlaceID": 48891,
            "PlayerCount": 0,
            "ImageId": 0
        }]
    }

####Get a user's body part colors

  • http://assetgame.roblox.com/Asset/BodyColors.ashx?userId=261

    <?xml version="1.0" encoding="utf-8" ?>
    <roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
        <External>null</External>
        <External>nil</External>
        <Item class="BodyColors">
            <Properties>
                <int name="HeadColor">24</int>
                <int name="LeftArmColor">24</int>
                <int name="LeftLegColor">24</int>
                <string name="Name">Body Colors</string>
                <int name="RightArmColor">24</int>
                <int name="RightLegColor">24</int>
                <int name="TorsoColor">1003</int>
                <bool name="archivable">true</bool>
            </Properties>
        </Item>
    </roblox>

####Get asset IDs worn by a user

####Get asset version IDs worn by a user

####Check if a username has been taken

Asset APIs

Get parts of a package

####Check if a user owns an asset

#####Get information about an asset

  • http://api.roblox.com/Marketplace/ProductInfo?assetId=1818

    {
        "AssetId": 1818,
        "ProductId": 1305046,
        "Name": "Crossroads",
        "Description": "The classic ROBLOX level is back!",
        "AssetTypeId": 9,
        "Creator": {
            "Id": 1,
            "Name": "ROBLOX"
        },
        "IconImageAssetId": 0,
        "Created": "2007-05-01T01:07:04.78Z",
        "Updated": "2013-07-01T16:40:24.527Z",
        "PriceInRobux": null,
        "PriceInTickets": null,
        "Sales": 0,
        "IsNew": false,
        "IsForSale": false,
        "IsPublicDomain": false,
        "IsLimited": false,
        "IsLimitedUnique": false,
        "Remaining": null,
        "MinimumMembershipLevel": 0,
        "ContentRatingTypeId": 0
    }

Get an asset's latest VersionId

Get serial number of a collectible asset

  • https://www.roblox.com/Trade/InventoryHandler.ashx?userId=%d&assetTypeId=%d&ItemsPerPage=25&page=%d"

    {
    	"sl_translate":"message",
    	"success":true,
    	"msg":"Inventory retreived!",
    	"data":{
    		"agentID":90115385,
    		"totalNumber":3,
    		"InventoryItems":[{
    			"Name":"Noob Attack: Artemis Annhilation",
    			"ImageLink":"https://t2.rbxcdn.com/b8807e8da2b996cff306a3da3c5b2f7c",
    			"ItemLink":"https://www.roblox.com/Noob-Attack-Artemis-Annhilation-item?id=553718984",
    			"SerialNumber":"1742",
    			"SerialNumberTotal":"5000",
    			"AveragePrice":"312",
    			"OriginalPrice":"75",
    			"UserAssetID":"646564564",
    			"MembershipLevel":null
    		}]
    	}
    }

#####Download various versions of an asset

#####Upload an asset

POST /Data/Upload.ashx?assetid=1818 HTTP/1.1
Host: data.roblox.com
Cookie: .ROBLOSECURITY=*
Content-Type: application/xml; charset=utf-8
Content-Length: 17

<roblox></roblox>

Returns an assetVersionId

#####Log in

POST https://www.roblox.com/NewLogin HTTP/1.1
Host: www.roblox.com
Content-Length: 29
Content-Type: application/json

{"username":"Shedletsky","password":"hunter2"}
  • User-Agent: ROBLOX iOS

Useful Hacks

Get the assetId of an assetVersionId:

$ curl -i http://www.roblox.com/--item?avid=1

HTTP/1.1 302 Found
Location: /ArrowCursor-png-item?id=1000000

Get the creator of an assetId, or see how many assetVersions it has

####Game Server APIs

####Current User APIs

Login APIs

POST https://www.roblox.com/MobileAPI/Signup HTTP/1.1
Host: www.roblox.com
Content-Type: application/json
Content-Length: 72

{"username":"Shedletsky","password":"hunter2","gender":"Male","dateOfBirth":"6/18/87"}
HTTP/1.1 200 OK
Set-Cookie: .ROBLOSECURITY=*
Content-Length: 210
Content-Type: application/json

{"Status":"OK","UserInfo":{"UserID":261,"UserName":"Shedletsky","RobuxBalance":0,"TicketsBalance":0,"ThumbnailUrl":"http://t3.rbxcdn.com/1768c4f3c0d7c30d978c9dce68aa786c","IsAnyBuildersClubMember":false}}
POST https://m.roblox.com/Login HTTP/1.1
Host: m.roblox.com
Content-Length: 29
Content-Type: application/json

{"username":"","password":""}
POST https://www.roblox.com/MobileAPI/Login HTTP/1.1
Host: www.roblox.com
Content-Length: 29
Content-Type: application/json

{"username":"","password":""}
POST https://www.roblox.com/Services/Secure/LoginService.asmx/ValidateLogin HTTP/1.1
Host: www.roblox.com
Content-Length: 85
Content-Type: application/json

{"userName":"","password":"","isCaptchaOn":false,"challenge":"","captchaResponse":""}

This page clears the browser's cookies. It doesn't invalidate the session:

POST https://www.roblox.com/MobileAPI/Logout HTTP/1.1
Host: www.roblox.com
Cookie: .ROBLOSECURITY=*
Content-Length: 0

The equivalent on the website is http://www.roblox.com/Item.aspx?avid=1

There's another parameter, serverPlaceId, which will deny the request if the owner of that place doesn't own it and it's not owned by roblox.

####Main Site

POST https://www.roblox.com/UserCheck/validatepasswordforsignup HTTP/1.1
Host: www.roblox.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

username=Shedletsky&password=hunter2
POST http://www.roblox.com/Services/GroupService.asmx/GetRoleSetsForGroup HTTP/1.1
Content-Type: application/json

{ "groupId": 1 }

#####Contributors: Mark Otaris, ArceusInator, oxcool1, Seranok