# Quickstart One base URL, plain GET requests, JSON back. Nothing to sign up for on the keyless tier. ## The base URL Requests go to `https://api.dietbloxycola.com`. api.bloxycola.com answers too. Every path starts with `/v1`, and `GET /v1` lists what exists. HTTP: ```http GET https://api.dietbloxycola.com/v1/live ``` ## Your first request The live numbers are the quickest thing to read: players online, visits and favorites across the studio, and the same per game. cURL: ```bash curl https://api.dietbloxycola.com/v1/live ``` JavaScript: ```js const res = await fetch("https://api.dietbloxycola.com/v1/live"); const live = await res.json(); ``` Python: ```python import requests live = requests.get("https://api.dietbloxycola.com/v1/live", timeout=10).json() ``` Luau: ```lua -- HttpService must be on in the game's settings. local HttpService = game:GetService("HttpService") local body = HttpService:GetAsync("https://api.dietbloxycola.com/v1/live") local live = HttpService:JSONDecode(body) ``` ## What comes back 200 OK: ```json { "playing": 12, "visits": 51234, "favorites": 861, "games": [ { "universeId": 10761832456, "playing": 12, "visits": 51234, "favorites": 861, "upVotes": 190, "downVotes": 14 } ] } ``` Counts are Roblox's own. `games` carries one entry per public game; today that is Shoplifters. Every answer carries an `x-request-id`; quote it when you write to us. ## Poll politely Each keyless answer says how long the CDN holds it in its `cache-control` header. Asking faster than that window returns the same bytes from the edge, so there is nothing to gain by hammering. The windows are on the [caching](https://api.dietbloxycola.com/docs/caching) page. ## Your own games The keyed tier needs a key: sign in with Roblox on the [keys](https://api.dietbloxycola.com/docs/keys) page, make one, and send it as a bearer. Its endpoints share the base URL, the error shape and these pages; each product's page says which scope its key needs and what it allows a minute.