roblox.user_games
stable Advanced
List the public experiences created by a Roblox user.
GET /v1/roblox/user_games
What you get#
A list of Roblox results in Onekey's unified shape, in data (an array). An empty array is a normal, successful answer and is charged like any other; a source that reports "nothing found" as an error returns a free 404 not_found instead.
What it costs#
- Advanced · 5 credits for a fresh fetch, charged only when it succeeds.
- Free when served from cache (0.2 credit for a cached response over 100 KB).
- Free if the request is invalid (never charged) or the source fails or reports not found (refunded).
Parameters#
| Name | Type | Required | Default | What it is | Constraints |
|---|---|---|---|---|---|
id | string | yes | (required) | Roblox user id | max 12 chars; must match [0-9]{1,12}; trimmed |
Request#
curl "https://api.onekey.dev/v1/roblox/user_games?id=1" \
-H "x-api-key: YOUR_API_KEY"Try it
Add your key to run this call right here. No key? Get one free. The key stays in this tab.
Recorded response#
A real Roblox response, recorded and returned in Onekey's shape. Fields the platform does not provide are null.
{
"success": true,
"data": [
{
"entity": {
"id": "295594",
"name": "Chaos Canyon",
"description": "Experience Chaos Canyon - Escape from Desolation Valley, explore the ruins on the cliffs, walk on the Sky Bridge and hold the Battle Cube from invaders! This map features models created by the community, including: PilotLuke, tingc222, and Yahoo.\n\nChaos Canyon is a classic Brick Battle game, and was one of Roblox's first \"official arena maps\". In pure Roblox fashion, the places could be edited by anyone. (This game will be available to tinker with after The Hunt: Roblox 20).\n\n\"One thing we at Roblox have been thinking hard about is how to make sure users can find fun maps on Roblox when they want to play a quick game. In the past this has not been a problem since we didn’t have all that many users... Recently, the number of users who are proficient builders has exploded... If you go to the “Browse Places” tab, you’ll now get exactly 100 pages of places (as of this writing). That’s 1000 places.\" ~ Shedletsky, December 11th, 2006, The Roblox Blog\n\n4eb4-808f-5bf5d4cb7759",
"updatedAt": "2026-09-21T19:26:08Z"
},
"ext": {
"visits": 11944307,
"rootPlaceId": "14403"
},
"content": {
"createdAt": "2013-10-31T22:09:58Z"
}
},
{
"entity": {
"id": "246424",
"name": "Rocket Arena",
"description": "This map goes back to the basics: Rockets, jetboots, and blowing up bridges. Out-maneuver your foes using your jetboots, cut off their escape by nuking the bridges, and rain doom down upon them using a rapid-fire rocket launcher. But don't fall in the lava - ouch!\n\nRocket Arena is a unique Brick Battle game as it focuses on some people's favorite brick battle weapon: The Rocket Launcher.\n\n\"I am working on a set of additional badges for a future release. New badges fall into one of two catagories: they are either entirely unlike any existing badge, or they are “higher level” versions of existing badges. One “higher level” badge I am thinking of making is a more difficult to get version of the Bloxxer badge. At the moment, 64 Robloxians have bloxxers. Using my January 8 post as a reference point, one can say that about 1.3 users earn Bloxxers every day on Roblox. Roughly 2% of all Robloxians have Bloxxers.\" ~ Shedletsky, Bloxxers Who Roxor, Roblox Blog, January 23rd, 2007\n",
"updatedAt": "2026-09-19T17:39:06Z"
},
"ext": {
"visits": 16373524,
"rootPlaceId": "25415"
},
"content": {
"createdAt": "2013-10-31T22:08:58Z"
}
}
],
"metadata": {
"platform": "roblox",
"endpoint": "user_games",
"cached": false,
"stale": false,
"age_s": 0,
"fetched_at": "2026-01-01T12:00:00+00:00",
"credits_charged": 5,
"request_id": "7f3a9c2e5b1d4c8fa2e6d0b9c4f18e37"
},
"error": null
}Field mapping#
How this endpoint's source fields become Onekey's unified schema. Fields the source lacks come back as null.
| Source path | Onekey field | Transform |
|---|---|---|
id | entity.id | toString |
name | entity.name | - |
description | entity.description | - |
placeVisits | ext.visits | toNumber |
created | content.createdAt | toIsoDate |
updated | entity.updatedAt | toIsoDate |
rootPlace.id | ext.rootPlaceId | toString |
Caching and freshness#
- Fresh for about 2 minutes. Repeat calls in that window are served from cache and are free.
- Between 2 minutes and 15 minutes the cached copy is still served instantly and marked
stale: truewhile Onekey refreshes it in the background. - If the source is down when a refresh is needed, the last copy can be served for up to 1 hour more (marked stale).
- A "not found" is remembered for 1 minute and is free.
- The cache is shared across all customers, which is what keeps repeat calls cheap.
What can go wrong#
| Status | Code | What to do |
|---|---|---|
| 401 | unauthorized | Check the x-api-key header. |
| 402 | insufficient_credits | Add credits; your balance must cover the price. |
| 404 | not_found | Unknown endpoint path. |
| 422 | invalid_params | Fix the parameters using the table above. Free. |
| 429 | rate_limited | Wait Retry-After seconds, then retry. |
| 502 | upstream_error | The source failed. Refunded; retry with backoff. |
See Errors for the full list and retry guidance.
Status: stable (verified against the live source).