API Key: Difference between revisions
reword the words |
|||
| (16 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
{{Relic infobox}} | {{Relic infobox}} | ||
'''API Key''' is a unique [[Relics|relic]] unlocked by sending a | '''API Key''' is a unique [[Relics|relic]] unlocked by sending a request to a "secret" endpoint. | ||
==Obtaining== | ==Obtaining== | ||
The player must have at least three other relics in order to obtain API Key. | The player must have at least three other relics in order to obtain API Key.<ref name="3relics"/> | ||
API Key is obtained by sending a [[ | API Key is obtained by sending a [[wikipedia:POST request|POST request]] to the following endpoint: <code>https://gdcolon.com/zoo/api/zooKey</code>. This can be done using a desktop browser's [[wikipedia:Web development tools|developer tools]]. The request body must contain a [[wikipedia:JSON|JSON]] object, with the player's Discord ID as an <code>id</code> parameter. The player must also provide their [[wikipedia:session token|session token]], either as a [[wikipedia:HTTP cookie|cookie]] or as a <code>Token</code> [[wikipedia:HTTP header|header]]. | ||
The server responds with an error, asking for | The server responds with an error, asking for an additional, randomly-selected password (e.g. public IP address / last 3 digits of your token) in the response body. The random selection changes per player. When resending the request with the password included, the API Key is granted. | ||
Below is Python | Below is a working Python example: | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line=""> | ||
| Line 36: | Line 36: | ||
Here's a website that allows you to run python code. https://reqbin.com/code/python | Here's a website that allows you to run python code. https://reqbin.com/code/python | ||
===Troubleshooting=== | ===Troubleshooting=== | ||
'''If you encounter an error while running the code via the aforementioned website, follow these steps:''' | '''If you encounter an error while running the code via the aforementioned website, follow these steps:''' | ||
| Line 51: | Line 52: | ||
==Effects== | ==Effects== | ||
{{Description}} | {{Description}} | ||
The player's profile on the [[Zoo API]] gains a <code>secretInfo</code> field with the following data: | |||
{| class="sortable | {| class="wikitable sortable mw-collapsible mw-collapsed" | ||
|+ | |+ | ||
! | !Key | ||
! | !Explanation | ||
!Data type | |||
|- | |||
|rowspan=2|<code>sort</code> | |||
|rowspan=2|How the player's animals are sorted | |||
|<code>0</code>: Sorted by amount | |||
|- | |||
|<code>1</code>: Sorted by name | |||
|- | |||
|<code>color</code> | |||
|Zoo color | |||
|Decimal number representing a [[wikipedia:hex triplet|hex triplet]] | |||
|- | |||
|<code>promise</code> | |||
|Things guaranteed for the next rescue | |||
| | |||
{| class="wikitable sortable mw-collapsible" | |||
|+ | |||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |||
|<code>pair</code> | |||
|Whether a pair is guaranteed | |||
|Boolean | |||
|- | |||
|rowspan=8|<code>type</code> | |||
|rowspan=8|The guaranteed [[animal type]] | |||
|<code>arctic</code>: Arctic animal | |||
|- | |||
|<code>bird</code>: Bird | |||
|- | |||
|<code>bug</code>: Bug | |||
|- | |||
|<code>farm</code>: Farm animal | |||
|- | |||
|<code>favorite</code>: Leader's favorite animal | |||
|- | |||
|<code>jungle</code>: Jungle animal | |||
|- | |- | ||
| | |<code>pet</code>: Pet | ||
|- | |- | ||
| | |<code>water</code>: Aquatic animal | ||
|- | |- | ||
| | |<code>animal</code> | ||
| | |The guaranteed animal | ||
|Internal name of the animal (equivalent to the shortcode of its emoji) | |||
|- | |- | ||
| | |<code>debuffImmunity</code> | ||
| | |Cooldown raises will be divided by this number | ||
|Integer | |||
|- | |- | ||
| | |<code>buffBoost</code> | ||
| | |Cooldown reductions will be multiplied by this number | ||
|Integer | |||
|- | |- | ||
| | |<code>luckyRelics | ||
| | |Whether the best outcome is guaranteed for luck-based effects | ||
|Boolean | |||
|} | |} | ||
|- | |- | ||
| questEnd | |<code>questEnd</code> | ||
| | |When the current [[quest]] ends | ||
|[[wikipedia:Unix timestamp|Unix timestamp]] | |||
|- | |||
|<code>curseEnd</code> | |||
|When the player's [[curse]] ends | |||
|Unix timestamp | |||
|- | |||
|<code>mechanicEnd</code> | |||
|When the current [[mechanic]] upgrade finishes | |||
|Unix timestamp | |||
|- | |||
|<code>questBoosts</code> | |||
|Bonuses for the current quest | |||
| | |||
{| class="wikitable sortable mw-collapsible" | |||
|+ | |||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |||
|<code>rareCurse</code> | |||
|Whether [[Safety Pin]] was used | |||
|Boolean | |||
|- | |- | ||
| | |<code>extraRewards</code> | ||
| | |Number of extra rewards guaranteed by [[Telescope]] | ||
|Integer | |||
|- | |- | ||
| | |<code>length</code> | ||
| | |Length increase | ||
|Number of hours | |||
|} | |||
|- | |- | ||
| | |<code>shop</code> | ||
| | |Shop info | ||
| | |||
{| class="wikitable sortable mw-collapsible | |||
|+ | |||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |- | ||
| | |<code>credits</code> | ||
| | |Shop credits | ||
|Integer | |||
|- | |- | ||
| credits | |rowspan=2|<code>maxCredits</code> | ||
| | |rowspan=2|Maximum credits | ||
|<code>6</code> if [[Sack]] is equipped | |||
|- | |- | ||
| | |<code>4</code> otherwise | ||
|- | |- | ||
| | |<code>nextCredit</code> | ||
| | |When the next credit will be given | ||
|Unix timestamp | |||
|- | |- | ||
| lastPurchase | |<code>lastPurchase | ||
| | |Time of last purchase | ||
|Unix timestamp | |||
|} | |} | ||
|- | |- | ||
| cooldowns | |<code>cooldowns</code> | ||
| | |Most time-based cooldowns | ||
{| class="wikitable" | | | ||
! | {| class="wikitable sortable mw-collapsible" | ||
! | |+ | ||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |||
|<code>rescue</code> | |||
|Rescue cooldown | |||
|rowspan=7|Unix timestamp | |||
|- | |- | ||
| | |<code>relic</code> | ||
| | |Relic cooldown | ||
|- | |- | ||
| | |<code>leader</code> | ||
| | |Leader cooldown | ||
|- | |- | ||
| | |<code>cardPull</code> | ||
| | |{{cmd|pull}} cooldown | ||
|- | |- | ||
| | |<code>pet</code> | ||
| | |{{cmd|pet}} cooldown | ||
|- | |- | ||
| | |<code>fishy</code> | ||
| | |{{cmd|fishy}} cooldown | ||
|- | |- | ||
| | |<code>sisyphus</code> | ||
| | |{{cmd|sisyphus}} cooldown | ||
|- | |- | ||
| | |rowspan=2|<code>profile</code> | ||
| | |rowspan=2|Profile cooldown | ||
|<code>null</code> if player only has one profile | |||
|- | |- | ||
| | |Unix timestamp otherwise | ||
|} | |} | ||
|- | |- | ||
| terminal | |<code>terminal</code> | ||
| | |[[Terminal]] data | ||
{| class="wikitable" | | | ||
! | {| class="wikitable sortable mw-collapsible" | ||
! | |+ | ||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |- | ||
| directory | |<code>directory</code> | ||
| | |Current directory | ||
|String | |||
|- | |- | ||
| commands | |<code>commands</code> | ||
| | |Commands listed in {{cmd|help}} | ||
|Array | |||
|- | |- | ||
| nextFusion | |<code>nextFusion</code> | ||
| | |{{cmd|fuse}} cooldown | ||
|Number of rescues until {{cmd|fuse}} can be used (<code>0</code> if no cooldown) | |||
|} | |} | ||
|- | |- | ||
| garden | |<code>garden</code> | ||
| | |[[Garden]] data | ||
| | |||
{| class="wikitable sortable mw-collapsible" | |||
|+ | |||
!Key | |||
!Explanation | |||
!Data type | |||
|- | |||
|<code>nextPlant</code> | |||
|When the next seedling can be planted | |||
|Unix timestamp | |||
|- | |||
|rowspan=2|<code>watered</code> | |||
|rowspan=2|Whether the garden was watered | |||
|<code>false</code>: A plant can be watered | |||
|- | |||
|<code>true</code>: Cannot water until rescuing again | |||
|- | |||
|<code>longestPlant</code> | |||
|Longest lasting plant | |||
|Milliseconds | |||
|} | |||
|} | |||
==History== | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |||
! | !colspan=2|[[RoboTop]] | ||
|- | |- | ||
| | |v93.22 | ||
| | |Added API Key.<ref>{{cite changelog|93.22|added a secret new relic, may or may not be hidden in the console of the zoo site|robotop=1}}</ref> | ||
|+ | |||
!colspan=2|Zoo Bot | |||
|- | |- | ||
| | |v1.0.1 | ||
| | |Now displays cooldowns for {{cmd|pull}} and {{cmd|pet}}.<ref>{{cite changelog|1.0.1|Added card and pet cooldowns to the API, if you have the right permissions}}</ref> | ||
|- | |- | ||
| | |v1.3.1 | ||
| | |Now displays more info.<ref>{{cite changelog|1.3.1|Added more terminal related info to API Key}}</ref> | ||
|- | |- | ||
| | |v1.4.5 | ||
| | |Now requires 3 other relics to unlock instead of just 1.<ref name="3relics">{{cite changelog|1.4.5|Tweaked a certain secret relic to require having 3 relics first (previously 1)}}</ref> | ||
|} | |||
|} | |} | ||
API Key was the first relic to have a unique unlock method other than through quests. | |||
==References== | |||
<references/> | |||
[[Category:Relics]] | [[Category:Relics]] | ||
Latest revision as of 23:20, 4 April 2026
API Key
|
“Nerd.”
|
API Key is a unique relic unlocked by sending a request to a "secret" endpoint.
Obtaining[edit | edit source]
The player must have at least three other relics in order to obtain API Key.[1]
API Key is obtained by sending a POST request to the following endpoint: https://gdcolon.com/zoo/api/zooKey. This can be done using a desktop browser's developer tools. The request body must contain a JSON object, with the player's Discord ID as an id parameter. The player must also provide their session token, either as a cookie or as a Token header.
The server responds with an error, asking for an additional, randomly-selected password (e.g. public IP address / last 3 digits of your token) in the response body. The random selection changes per player. When resending the request with the password included, the API Key is granted.
Below is a working Python example:
import requests
url = "https://gdcolon.com/zoo/api/zooKey" #endpoint
headers = {"Content-Type": "application/json", "Accept": "application/json", "Token": ""} #request headers, insert authentication token into the Token header
#id refers to your Discord User ID
#password can be a few things (usually it's your public IP address/last 3 digits of your token). Leave blank at first and see the response to know which password it wants
params = {"id": "", "password": ""}
response = requests.post(url, headers=headers, json=params)
print(response.status_code)
print(response.text)
The authentication token is obtained by
1. Logging into gdcolon.com/zoo
2. Going into the Application tab in the Developer Tools
3. Finding https://gdcolon.com under 'Cookies', which is located in 'Storage'.
4. Find the Cookie Value for 'zoo', which is the authentication token.
Here's a website that allows you to run python code. https://reqbin.com/code/python
Troubleshooting[edit | edit source]
If you encounter an error while running the code via the aforementioned website, follow these steps:
- Install Python
- Save your code in a Python (.py) file, you can use Python itself, Notepad, Visual Studio, anything you want. Save it in your user folder under an easy name (e.g. zoo.py)
- Open CMD (Win+R -> cmd), If you are on MacOS open Terminal from the Launchpad. If you are on Linux you know how to open the terminal already...
- Run the following command: python [name of the file with the code you saved]
- If you did everything correctly, you should now have the API Key relic!
If python says the "requests" library is not installed, run this command in your terminal:
python -m pip install requests
Effects[edit | edit source]
Reveals cooldown, timestamps, and other hidden info on the online zoo API.
— In-game description
The player's profile on the Zoo API gains a secretInfo field with the following data:
| Key | Explanation | Data type | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sort
|
How the player's animals are sorted | 0: Sorted by amount
| ||||||||||||||||||||||||||||
1: Sorted by name
| ||||||||||||||||||||||||||||||
color
|
Zoo color | Decimal number representing a hex triplet | ||||||||||||||||||||||||||||
promise
|
Things guaranteed for the next rescue |
| ||||||||||||||||||||||||||||
questEnd
|
When the current quest ends | Unix timestamp | ||||||||||||||||||||||||||||
curseEnd
|
When the player's curse ends | Unix timestamp | ||||||||||||||||||||||||||||
mechanicEnd
|
When the current mechanic upgrade finishes | Unix timestamp | ||||||||||||||||||||||||||||
questBoosts
|
Bonuses for the current quest |
| ||||||||||||||||||||||||||||
shop
|
Shop info |
| ||||||||||||||||||||||||||||
cooldowns
|
Most time-based cooldowns |
| ||||||||||||||||||||||||||||
terminal
|
Terminal data |
| ||||||||||||||||||||||||||||
garden
|
Garden data |
|
History[edit | edit source]
| RoboTop | |
|---|---|
| v93.22 | Added API Key.[2] |
| Zoo Bot | |
| v1.0.1 | Now displays cooldowns for $ pull and $ pet.[3]
|
| v1.3.1 | Now displays more info.[4] |
| v1.4.5 | Now requires 3 other relics to unlock instead of just 1.[1] |
API Key was the first relic to have a unique unlock method other than through quests.
References[edit | edit source]
- ↑ 1.0 1.1 Zoo changelog, v1.4.5 (released 8 September 2023):
“Tweaked a certain secret relic to require having 3 relics first (previously 1)”
- ↑ RoboTop changelog, v93.22 (released 2 February 2022):
“added a secret new relic, may or may not be hidden in the console of the zoo site”
- ↑ Zoo changelog, v1.0.1 (released 18 February 2023):
“Added card and pet cooldowns to the API, if you have the right permissions”
- ↑ Zoo changelog, v1.3.1 (released 11 June 2023):
“Added more terminal related info to API Key”
