Is there any way to check if an experience is public/private or copylocked/uncopylocked with a service similar to MarketplaceService that could be used in a simple (only a few lines long) studio script, similarly to how an asset’s name and last updated properties can be checked with Marketplace? If not, is there any other way to do it with a simple (only a few lines long) studio script? I’ve been wondering about this for a while…
just curious to know why do you need that
No easy way to do this without a proxy as roblox API is banned on HTTP service for some reason.
There’s no way to do it from my understanding
You can achieve this with http requests although in order to use Roblox API you need a proxy(you can check ProxyService).
local HttpService = game:GetService("HttpService")
--make a proxy or use a public one to make it work
function Proxy(url)
return url
end
function GET(url)
url = Proxy(url)
local result
local Success, Error = pcall(function()
result = HttpService:GetAsync(url)
result = HttpService:JSONDecode(result)
end)
if Success then
return result
else
warn(Error)
end
end
function getPlaceData(placeId)
local endpoint = "https://games.roblox.com/v1/games/multiget-place-details?placeIds="..placeId
return GET(endpoint)
end
function getUniverseData(universeId)
local endpoint = "https://games.roblox.com/v1/games?universeIds="..universeId
return GET(endpoint)
end
local PlaceId = 0 --your place id
local PlaceData = getPlaceData(PlaceId)
local universeId, isPrivate = PlaceData.universeId, PlaceData.isPlayable
print("game private:", isPrivate)
local UniverseData = getUniverseData(universeId)
local uncopylocked = UniverseData.copyingAllowed
print("uncopylocked:", uncopylocked)
hey, for me personally that API doesn’t work on my proxy, i use a google App Script (which is free) as proxy, the only limitation is that you can only read data. Here is the tutorial, you gotta also extract the module from this guy’s place: https://youtu.be/PqBvgdpzesg
my code with the other api is:
(make sure you have the proxy http module inside the script)
local Places = {
155615604,
69, -- random numbers to see if it would filter it out
420,-- random numbers to see if it would filter it out
}
-- Removing all places from the list that aren't playable
local List = "" -- making a custom list that can go through the API, a table wont work
for i, v in pairs(Places) do
List = List.. ",".. v
end
local Response = require(script.HttpProxy):GetAsync("https://games.roblox.com/v1/games/multiget-playability-status?universeIds=".. List) --API call
if Response then -- Checking if the API responded (proxy or api might be down)
for i, v in pairs(Response) do --Checking each item that the API returned
if v.isPlayable == false then -- Checking if it is not playable?
for i2, v2 in pairs(Places) do -- Going through every item in the places table
if v2 == v.universeId then -- checking if the non-playable place is inside the list of places
table.remove(Places, i2) -- removing the place that isn't playable
end
end
end
end
end
Vouch. It seems as if Roblox removed the “isPlayable” parameter for that api (https://games.roblox.com/v1/games?universeIds=(universeid)) as of now.