Skip to content

Universe Wait Times

The Universe Wait Times endpoint returns live wait time data for all attractions within a given TBM Universe game. This is useful for building queue dashboards, park apps, or real-time attraction monitors.

Endpoint: HEAD GET https://api.teamtbm.org/v1/universe/{UNIVERSE_ID}/wait-times

Authentication: Public (None)

Rate Limits

Limit Value
Requests 60 per minute
Scope Per IP address

Exceeding the rate limit will return a 429 Too Many Requests response.

Path Parameters

Parameter Type Required Description
UNIVERSE_ID integer ✅ Yes The Roblox Universe ID (within the TBM Universe) to retrieve wait times for

Response Format

{
    "success": true,
    "code": 200,
    "waitTimes": [
        {
            "name": "Adventure Falls",
            "land": "Explorer Valley",
            "placeId": 10000000001,
            "open": true,
            "waitTime": 5,
            "totalPlaying": 12,
            "totalServers": 3,
            "avgPlayersPerServer": 4
        },
        {
            "name": "Rocket Rush",
            "land": "Launch Zone",
            "placeId": 10000000002,
            "open": true,
            "waitTime": 2,
            "totalPlaying": 8,
            "totalServers": 2,
            "avgPlayersPerServer": 4
        },
        {
            "name": "Thunder Mountain",
            "land": "Wild West",
            "placeId": 10000000003,
            "open": false,
            "waitTime": null,
            "totalPlaying": null,
            "totalServers": null,
            "avgPlayersPerServer": null
        }
    ],
    "cachedAt": null
}

Fields:

  • waitTimes (array) — List of attraction objects for the universe
  • cachedAt (integer | null) — UNIX timestamp of when the data was cached, or null if live

waitTimes Item Fields:

Field Type Description
name string Attraction name
land string The themed land or area the attraction belongs to
placeId integer Roblox Place ID for the attraction
open boolean Whether the attraction is currently open
waitTime integer | null Current wait time in minutes, or null if closed
totalPlaying integer | null Total players currently in the attraction, or null if closed
totalServers integer | null Total active servers for the attraction, or null if closed
avgPlayersPerServer integer | null Average players per server, or null if closed

Returned when the UNIVERSE_ID path parameter is missing or not a valid integer.

{
    "success": false,
    "code": 400,
    "message": "Bad Request",
    "error": "A valid Universe ID is required."
}

Returned when the provided Universe ID does not correspond to a known universe.

{
    "success": false,
    "code": 404,
    "message": "Not Found",
    "error": "Invalid Universe."
}
{
    "success": false,
    "code": 500,
    "message": "Internal Server Error",
    "error": "An unexpected error occurred. Please try again later."
}

HTTP Status Codes

Code Meaning
200 Success — wait time data returned
400 Bad Request — missing or invalid Universe ID
404 Not Found — universe not found
429 Too Many Requests — rate limit exceeded
500 Internal Server Error

Example Requests

curl -X GET "https://api.teamtbm.org/v1/universe/123456789/wait-times" \
     -H "Accept: application/json"
const universeId = 123456789;
const response = await fetch(`https://api.teamtbm.org/v1/universe/${universeId}/wait-times`, {
    headers: { "Accept": "application/json" }
});
const data = await response.json();
import requests

universe_id = 123456789
response = requests.get(f"https://api.teamtbm.org/v1/universe/{universe_id}/wait-times")
data = response.json()
<?php
$universeId = 123456789;
$ch = curl_init("https://api.teamtbm.org/v1/universe/{$universeId}/wait-times");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json"]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
?>