Universal Studios API Unofficial Documentation
Last updated 3/14/24 @ 8:00 PM EST
Currently contains 7
fully documented endpoints.
Please ⭐ if you enjoy and want updates!
URL | Extra Info |
---|---|
https://assets.universalparks.com/{REGION}/ |
{REGION} is the Universal Region you are wanting. This can be Universal Orlando Resort (uor ) or Universal Studios Hollywood (osh ). |
https://api.universalparks.com/ |
|
https://services.universalorlando.com/api/ |
Used by both Universal Orlando Resort and Universal Studios Hollywood |
Universal uses OIDC
for their application authentication. It has a secret attached to it.
POST
Request
URL: https://api.universalparks.com/oidc/connect/token
Secret: 3d8f26d8-d302-4bfe-8670-8816e7713b90:AeweCuThiedaowecheighiereizeochiungaesielaechoifie
Needs to be encoded to base64 then used as a Basic
auth header.
API Key: UORFlutterAndroidApp
Needs to be put into x-uniwebservice-apikey
Request (needs to be urlencoded
):
scope=openid+default+offline_access&grant_type=password&username={EMAIL}&password={PASSWORD}
{EMAIL}
is your Universal Account email
{PASSWORD}
is your Universal Account password.
There is a way to do this WITHOUT a Universal Account, just makes things easier.
This creates a JWT
token that you can now use for any API request.
All requests have to be send as GET
since most of them are just grabbing a JSON
file.
Auth: No
URL: https://assets.universalparks.com/{REGION}/wait-time/wait-time-attraction-list.json
Gets the current statuses and wait times for all parks in the Universal Region.
Auth: No
URL: https://assets.universalparks.com/{REGION}/wait-time/show-list.json
Gets all the shows, the times that they're running, and the status for each show.
All requests either are GET
or POST
. All responses are in JSON
.
This is still a work in progress as I don't have everything marked yet.
Auth: No
Method: GET
URL: https://services.universalorlando.com/api/venues
Queries:
Query Title | Query Value |
---|---|
City |
Can either be Orlando or Hollywood |
pageSize |
SHOULD ALWAYS BE All LIKE IT WILL NOT LET YOU WITHOUT IT |
Example:
?city=Orlando&pageSize=All
⚠️ This seems pratically useless... like idk what to tell ya.
Auth: No
Method: GET
URL: https://services.universalorlando.com/api/Queues
Queries:
Query Title | Query Value |
---|---|
City |
Can either be Orlando or Hollywood |
pageSize |
SHOULD ALWAYS BE All LIKE IT WILL NOT LET YOU WITHOUT IT |
Example:
?city=Orlando&pageSize=All
Auth: Yes
Method: POST
URL: https://services.universalorlando.com/api
Body:
{"signature":"{SIGNATURE}","apiKey":"AndroidMobileApp"}
I have no clue on how the signature is generated, it seems to be a one time use generated inside the app?
Queries:
Query Title | Query Value |
---|---|
City |
Can either be Orlando or Hollywood |
Example:
?city=Orlando
Auth: No
Method: GET
URL: https://services.universalorlando.com/api/Routing/Paths
Queries:
Query Title | Query Value |
---|---|
City |
Can either be Orlando or Hollywood |
pageSize |
SHOULD ALWAYS BE All LIKE IT WILL NOT LET YOU WITHOUT IT |
Example:
?city=Orlando&pageSize=All