Skip to content

Instantly share code, notes, and snippets.

@ashelex
Last active April 18, 2024 15:07
Show Gist options
  • Save ashelex/122822a2180a9e601a5700af401dfe32 to your computer and use it in GitHub Desktop.
Save ashelex/122822a2180a9e601a5700af401dfe32 to your computer and use it in GitHub Desktop.
Universal Studios API Unofficial Documentation

Universal Logo

Universal Studios API Unofficial Documentation

New Documentation

Last updated 3/14/24 @ 8:00 PM EST

Currently contains 7 fully documented endpoints.

Please ⭐ if you enjoy and want updates!

Easy Navigator

Endpoints

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

Authentication

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.

Assets Requests

All requests have to be send as GET since most of them are just grabbing a JSON file.

Wait Time Attraction List

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.

Show List

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.

Service Requests

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.

Venues

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

Queues

⚠️ 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

General Information for Parks

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

Paths

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment