S&box Wiki

Backend API

This API is prone to changes at any time - and therefore this guide might go out of date. If something doesn't line up, it probably means the API was changed and that this page needs updating.

This page is an analysis of the API used for the dev site and the in-game menus; please be aware that this may change at any time and that none of this information is official. All endpoints are on the https://sap.facepunch.com/ domain.

Endpoints

Account endpoints | Asset endpoints | Session endpoints | Other endpoints

Account endpoints

POST /account/activity

Params

Returns

Example Request

Example Response

POST /account/login

Params

Returns

Example Request

Example Response

POST /account/services

Params

Returns

Example Request

Example Response

Asset endpoints

GET /package/get/1/{ident}

Params

ident: An identifier (org.package) for the asset you wish to retrieve info about.

Returns

An Asset

Example Request

/package/get/1/facepunch.construct

Example Response

{ "Package": { "Org": { "Ident": "facepunch", "Title": "Facepunch", "Description": "Facepunch Studios Ltd is a British video game developer and publisher headquartered in Walsall, England, founded in June 2004", "Thumb": "https://files.facepunch.com/sbox/org/facepunch/logo.1.png", "Twitter": "", "WebUrl": "" }, "Ident": "construct", "Title": "Construct", "Summary": "A simple construct map", "Description": "This is the default map. It both has purpose and no purpose.", "Thumb": "https://files.facepunch.com/sbox/asset/facepunch.construct/logo.50b9f9e2.png", "Type": "map", "Updated": "2023-03-28T08:03:57.2+00:00", "Created": "2021-05-10T10:21:44.2+00:00", "UsageStats": { "Total": { "Users": 5546, "Seconds": 30249987 }, "Month": { "Users": 1185, "Seconds": 3324817 }, "Week": { "Users": 365, "Seconds": 570307 }, "Day": { "Users": 62, "Seconds": 47322 }, "UsersNow": 3, "DailyUsers": [ 103, 128, 143, 118, 136, 132, 92, 97, 80, 85, 72, 72, 99, 75, 73, 81, 98, 95, 91, 71, 58, 64, 85, 94, 84, 101, 70, 72, 65, 63, 80, 75, 99, 86, 77, 74, 58, 62, 82, 71, 72, 63, 50, 60, 70, 70, 83, 79, 75, 75, 67, 59, 60, 67, 67, 56, 64, 82, 73, 52, 29 ], "DailySeconds": [ 43020, 74270, 119172, 153739, 93638, 136649, 125591, 171976, 107810, 137312, 108385, 124127, 101474, 88822, 103938, 142572, 128251, 143376, 124266, 63146, 96358, 140883, 110315, 189932, 108865, 141529, 99260, 104644, 91810, 160546, 137141, 133960, 116637, 175346, 254561, 172310, 77623, 182926, 121872, 71912, 57547, 61231, 51156, 76191, 113757, 105390, 162249, 45430, 144127, 131866, 157812, 131887, 95682, 91091, 113140, 56567, 78352, 81510, 117133, 44145, 15727 ], "Trend": -1.3204330205917358 }, "Tags": [ "" ], "Favourited": 73, "VotesUp": 104, "VotesDown": 6, "Version": { "Id": 16022, "Changes": "Changes on 28-Mar-23", "FileCount": 1983, "TotalSize": 3025575678, "Hash": 4984881807854345000, "ManifestUrl": "https://files.facepunch.com/sbox/manifest/facepunch/construct/ef59e41d5bfc0494b7904c41bb094ab3.json", "Created": "2023-03-28T08:03:56.7+00:00", "EngineVersion": 10, "Meta": "{\"Summary\":\"A simple construct map\",\"Description\":\"This is the default map. It both has purpose and no purpose.\",\"Public\":true,\"MapAddons\":[]}", "AssetVersionId": 16022 }, "Source": "https://github.com/facepunch/facepunch.construct", "Public": true, "Archive": false, "ApiVersion": 0, "Screenshots": [ { "Created": "2022-08-01T15:00:57.2Z", "Width": 1920, "Height": 1080, "Url": "https://files.facepunch.com/sbox/asset/facepunch.construct/screenshot.51112a7cdf4aa917.png", "Thumb": "https://files.facepunch.com/cdn-cgi/image/fit=cover,width={width},height={height}/sbox/asset/facepunch.construct/screenshot.51112a7cdf4aa917.png", "IsLoadingScreen": false }, { "Created": "2022-08-01T15:01:16.3Z", "Width": 1920, "Height": 1080, "Url": "https://files.facepunch.com/sbox/asset/facepunch.construct/screenshot.eab83032471281e5.png", "Thumb": "https://files.facepunch.com/cdn-cgi/image/fit=cover,width={width},height={height}/sbox/asset/facepunch.construct/screenshot.eab83032471281e5.png", "IsLoadingScreen": false }, { "Created": "2022-08-01T15:01:07.6Z", "Width": 1920, "Height": 1080, "Url": "https://files.facepunch.com/sbox/asset/facepunch.construct/screenshot.b3a7a2fe54a40231.png", "Thumb": "https://files.facepunch.com/cdn-cgi/image/fit=cover,width={width},height={height}/sbox/asset/facepunch.construct/screenshot.b3a7a2fe54a40231.png", "IsLoadingScreen": true } ], "PackageType": 1, "PackageReferences": [], "EditorReferences": [], "Interaction": { "Favourite": false, "FavouriteCreated": null, "Rating": null, "RatingCreated": null, "Used": false, "FirstUsed": null, "LastUsed": null, "Sessions": 0, "Seconds": 0 } }, "Milliseconds": 25.1893 }

GET /asset/list

Params

type: map, gamemode, tool, content, model, addon.

order: trending, popular, newest, live. Defaults to trending.

search: Any search query.

take: Number of assets to return.

skip: Offsets the number of assets to take.

category (An Index Value starting at 1):

Index Category
1 SandBox
2 Tech Demo/Expermental
3 Sports
4 Shooting
5 Parkour
6 Social
7 Meme
8 Roleplay
9 Racing
10 Mystery
11 Survival
12 Animals
13 Food
14 Strategy
15 Space
16 Fighting
17 Retro
18 Music
19 Art
20 Tycoon
21 Streamer

Returns

A list of Packages.

Example Request

/asset/list?type=map&order=trending&search=Construct

Example Response

[ { "Org": { "Ident": "facepunch", "Title": "Facepunch", "Thumb": "https://files.facepunch.com/sbox/org/facepunch/logo.1.png" }, "Ident": "construct", "Title": "Construct", "Summary": "A simple construct map", "Description": "This is the default map. It both has purpose and no purpose.", "Thumb": "https://files.facepunch.com/sbox/org/facepunch/construct/thumb.2f5f6e0a.jpg", "PackageType": 1, "Updated": "2022-03-31T10:43:21.7+00:00", "Created": "2021-05-10T10:21:44.2+00:00", "UsersNow": 0, "UsersDay": 123, "UsersMonth": 1366, "UsersTotal": 7812, "Tags": [], "CategoryId": 0, "SubCategoryId": 0, "Favourited": 0, "VotesUp": 0, "VotesDown": 0, "Source": null, "Public": true }, { "Org": { "Ident": "gmodn", "Title": "Ian", "Thumb": "https://files.facepunch.com/sbox/org/gmodn/logo.8483162e.png" }, "Ident": "testmap", "Title": "Ian's Construct", "Summary": "A map i used to kinda get used to mapping again. Not a good map.", "Description": "A map i used to kinda get used to mapping again. Not a good map.\r\n\r\nUpdate Log\r\n\r\n1/9/2022\r\nAdded Map\r\nAdded shatterglass where possible\r\nadjusted lighting\r\nmade the original dark/light room building from construct rp friendly \r\nAdded Warehouse Overhang Lights\r\n\r\n2/21/2022\r\nAdded world maps\r\nAdded Navmesh\r\nAdded Map overview", "Thumb": "", "PackageType": 1, "Updated": "2022-03-26T05:44:02.6+00:00", "Created": "2022-01-09T13:03:07+00:00", "UsersNow": 0, "UsersDay": 0, "UsersMonth": 3, "UsersTotal": 15, "Tags": [], "CategoryId": 0, "SubCategoryId": 0, "Favourited": 0, "VotesUp": 0, "VotesDown": 0, "Source": null, "Public": true }, ]

GET /asset/categories

Params

Returns

A list of categories and tags.

Example Request

/asset/categories

Example Response

{ "Categories": [ { "Id": 0, "title": "None", "icon": "sentiment_dissatisfied", "description": null, "count": 7 }, { "Id": 18, "title": "Music", "icon": "music_note", "description": null, "count": 1 }, { "Id": 19, "title": "Art", "icon": "palette", "description": null, "count": 1 }, [...] ], "Tags": [ { "Count": 39, "Key": "multiplayer" }, { "Count": 7, "Key": "has:vsnd" }, { "Count": 8, "Key": "coop" }, [...] ] }

POST /asset/{ident}/favourite

Params

ident: An identifier (org.package) for the asset you wish to retrieve info about.

Returns

Example Request

Example Response

POST /asset/upload

Params

Returns

Example Request

Example Response

POST /asset/manifest

Params

Returns

Example Request

Example Response

POST /asset/{ident}/rate

Params

ident: An identifier (org.package) for the asset you wish to retrieve info about.

Returns

Example Request

Example Response

POST /asset/{ident}/update

Params

ident: An identifier (org.package) for the asset you wish to retrieve info about.

Returns

Example Request

Example Response

Session endpoints

POST /session/result

Params

Returns

Example Request

Example Response

POST /session/score

Params

Returns

Example Request

Example Response

Other endpoints

GET /status

Returns

Staus information

Example Request

/status

Example Response

{ "Status": "OK", "Version": 1, "Assets": 3288, "Orgs": 3987, "Files": 99721, "FileSize": "337GB" }