The following API endpoints are intended for light/recreational use. Please do not abuse them. The intended audience for these endpoints is anyone doing light/hobbyist development.
The API.Toys website is hosted on a Lightspeed server and resides behind CloudFlare. You should not receive a cached response to queries, but should results seem repetitive, append your query with a unique value like a Unix timestamp.
If any calls begin returning a "deprecated" element, then this indicates an endpoint is reaching end-of-life and should be reviewed. Click here for more information.
The iso_3166-1 endpoint returns ISO-standard Country information. By default calling the endpoint will return an array of Country objects containing respective Alpha-2,Alpha-3,Numeric codes and English (short) country names.
Specifying a code as a parameter will get an object of countries by the requested code type.
Please take special care to note that an object is returned when requesting a specific code type. Returning objects allows you to easily iterate to a specific code.
Valid codes are: alpha-2,alpha-3,numeric
[{alpha2: "AF",alpha3: "AFG",numeric: "004",name: {eng: "Afghanistan"}},{alpha2: "AX",alpha3: "ALA",numeric: "248",name: {eng: "Aland Islands"}}]
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
want | String | MVC/Get/Post | iso_3166-1/alpha-2 iso_3166-1?want=numeric |
The iso_639 endpoint returns ISO-standard Language information. By default calling the endpoint will return an array of Language objects containing respective ISO-639-1,ISO-639-2/T,ISO-639-2/B,ISO-639-3, ISO Language name (in English), localised language name (to the origin country), and language family group.
Specifying a code as a parameter will get an object of languages by the requested code type.
Please take special care to note that an object is returned when requesting a specific code type. Returning objects allows you to easily iterate to a specific code.
Valid codes are: 1,2t,2b,3
[{"iso_639_1":"aa", "iso_639_2t":"aar", "iso_639_2b":"aar", "iso_639_3":"aar", "iso_name":"Afar", "language_family":"Afro-Asiatic", "name_local":"Afaraf"}]
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
want | String | MVC/Get/Post | iso_639/1 iso_639?want=2b |
This endpoint returns dialing codes for countries. By default calling the endpoint will return an array of objects containing the dialing code and the English label for a country.
Specifying an ISO 3166 code as a parameter will get an object of dialing codes by the requested ISO code type.
Please take special care to note that an object is returned when requesting a specific code type. Returning objects allows you to easily iterate to a specific country.
Valid codes are: alpha-2,alpha-3,numeric
[{"dialcode":"1", "label":"United States"}, {"dialcode":"93", "label":"Afghanistan"}, {"dialcode":"355", "label":"Albania"}]
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
want | String | MVC/Get/Post | dialing_codes/alpha-2 dialing_codes?want=numeric |
[{"label":"3GP", "mime":"video/3gpp", "ext":"3gp"}, {"label":"7-Zip", "mime":"application/x-7z-compressed", "ext":"7z"}]
Returns the current UNIX time in seconds. If the microseconds switch is passed, you also get the microseconds as a STRING.
The microseconds are returned as a string in order to provide the full 8 decimal precision and prevent rounding.
{"timestamp":1480520000} {"timestamp":1480520000,"microseconds":"0.18521000"}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
microseconds | Boolean | MVC/Get/Post | timestamp/true timestamp?microseconds=true |
Returns the current time in a given timezone (in seconds), the offset from UTC (in seconds), and the timezone name.
The 'zone' parameter must be an ISO abbrevation for a timezone. Read this Wiki article for the abbreviations list.
Please note that microseconds are returned as a string in order to provide the full 8 decimal precision and prevent rounding.
{"result":1480520000,"offset":0,"name":"UTC"} {"result":1480502000,"offset":-18000,"name":"America%2FNew_York"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
zone | String | MVC/Get/Post | timezone_offset/EST timezone_offset?zone=CET timezone_offset?zone=CETµseconds=true |
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
microseconds | Boolean | MVC/Get/Post | timezone_offset/EST/true timezone_offset?zone=CETµseconds=true |
{"result":"heads"}
{"dice":"d6","rolls":[3]} {"dice":"d10","rolls":[7,4]}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
sides | Integer | MVC/Get/Post | dice_roll/10 dice_roll?sides=20 dice_roll?sides=8&rolls=2 |
rolls | Integer | MVC/Get/Post | dice_roll/6/5 dice_roll?rolls=10 dice_roll?sides=8&rolls=2 |
A countdown timer to the Unix 32-bit clock reset (Unix's equivalent of the Y2k bug). This API call returns the seconds until the 11 digit Unix timestamp format hits the overflow limit of a 32bit Integer field.
The y2k bug brought us prisoners being released early, which was probably the worst 'disaster' related to Y2k. But what will happen with the Integers overflow at 3:14am on January 19th, 2038 (UTC)? Be. Afraid.
{"maximum_value_of_int32":2147483647,"current_time":1480520000,"seconds_left_before_y2k":666963647}
Randomly assembles a name that could be used for usernames or blog names.
The paramters "long" and "longer" make slightly longer names using one or more words.
The words list is filtered to remove any words that may sound innapropriate or offensive when combined with other words. If you enable "nsfw", those excluded words are added back into the dictionary, which may result in nsfw phrases.
Some words are just filth. If you want to allow words that are unquestionably adult in nature, enable the "adult" flag.
{"long":false,"longer":false,"nsfw":false,"adult":false,"chosen":"Breezy Drum","more":["Alert Science","Adaptable River","Dull Charles","Repulsive Turtle","Soft Majestic","Bored Warlock","Curious Joe","Long Goose","Hot Wolf","Massive Smith"]}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
long | Boolean | MVC/Get/Post | random_blog_name/true random_blog_name?long=true random_blog_name?long=true&adult=true |
longer | Boolean | MVC/Get/Post | random_blog_name/true/true random_blog_name?long=true&longer=true random_blog_name?long=true&longer=true&adult=true |
nsfw | Boolean | MVC/Get/Post | random_blog_name/true/false/true random_blog_name?nsfw=true random_blog_name?long=true&longer=true&nsfw=true |
adult | Boolean | MVC/Get/Post | random_blog_name/true/false/true/true random_blog_name?adult=true random_blog_name?long=true&nsfw=true&adult=true |
Translates the video game Final Fantasy X's "Al Bhed" language to English.
The 'language' is simple letter swapping on English words. It is actually possible to pronounce and converse in the language.
See the English to Al Bhed endpoint (/api/english_albhed), to reverse the translation.
{"input":"Rammu Funmt","result":"Hello World"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | albhed_english?text=Rammu+Funmt |
Translates English to the video game Final Fantasy X's "Al Bhed" language.
See the Al Bhed to English endpoint (/api/albhed_english), to reverse the translation.
{"input":"Hello World","result":"Rammu Funmt"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | english_albhed?text=Hello+World |
Shifts the characters in the given English 'text' String by a 'num' number of places.
'IBM' shifted -1 places becomes 'HAL'.
If you shift a letter and the position moves beyond the boundary of the 26 letters in the English Alphabet, the alphabet will cycle.
In this scenario 'Zoo' shifted +6 places becomes 'Fuu'
{"input":"IBM","result":"HAL"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | shift_text?text=Hello+World&num=2 |
num | Integer | Get/Post | shift_text?text=Hello+World&num=2 |
Shifts the characters in the given English 'text' String by a number of places generated from the provided 32byte hexadecimal hash (an md5 without hyphens is perfect for this).
Works in a similar way to other shifting endpoints like /api/shift_text.
The hash parameter is optional - if you don't provide it, one will be generated for you. The hash used to shift the text will be returned in the response for you to use again.
{input: "Hello World",result: "Zwddg Ogjdv",hash: "dc143797d478251e9eb468d8d43bf056"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | shift_hash?text=Hello+World |
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
hash | String (32byte hex/or md5) | Get/Post | shift_hash?text=Hello+World&hash=f4da9e9daa5841dc475214631bb228c3 |
Shifts the characters in the given English 'text' String by a 'num' number of places.
Functionally identical to /api/shift_text however this uses the English QWERTY keyboard map for letter positioning.
'IBM' shifted -1 places becomes 'UVN'.
The shift pattern moves your submitted text left or right on the keyboard. When the letter moves past the end of the line it goes to the next line down or up the keyboard depending on usage of positive or negative numbers. The key map loops if you go out of range (either end of the keyboard).
In this scenario 'Zoo' shifted +7 places becomes 'Qhh'
{"input":"IBM","result":"UVN"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | shift_qwerty?text=Hello+World&num=2 |
num | Integer | Get/Post | shift_qwerty?text=Hello+World&num=2 |
Provides an endpoint that will either randomly give a Rock Paper Scissors move, or if you provide a move the endpoint responds with a play and result.
The parameter 'guess' is optional, and must be one of : 'rock', 'paper' or 'scissors'
{"cpu": "scissors", "player": "", "winner": ""} {"cpu": "scissors", "player": "rock", "winner": "player", "move": "rock crushes scissors"}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
guess | String | MVC/Get/Post | rock_paper_scissors/rock rock_paper_scissors?guess=paper |
An extended version of the 'Rock, Paper, Scissors' endpoint that plays 'Rock, Paper, Scissors, Lizard, Spock', a popular enhancement to the traditional game.
The parameter 'guess' is optional, and must be one of : 'rock', 'paper', 'scissors', 'lizard' or 'spock'
{"cpu": "spock", "player": "", "winner": ""} {"cpu": "lizard", "player": "rock", "winner": "player", "move": "rock crushes lizard"}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
guess | String | MVC/Get/Post | rock_paper_scissors_lizard_spock/spock rock_paper_scissors_lizard_spock?guess=lizard |
Generates a phrase made out of random syllables.
The parameter 'words' returns x number of words.
Results are URL Encoded
{"words":["Yoxvem-bux","Dah%27fem","Taj","Hib+Nub+Yurrpaplugg+Xth","Sot+Saltte","Wehqol-gogg","Kojduggfov","Moff+Gou+Panrth","Hufffip%27tohxac","Dux+Nip+Yth"]}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
words | Integer | MVC/Get/Post | random_syllables/5 random_syllables?words=20 |
Creates ficticious plot summaries that could be used as a writing basis for Television Soap Operas/Serials.
All parameters accepted only through POST.
If you do not supply any of the following optional parameters, the endpoint will use a built-in default set of data to complete your query.
{"plots": {"plot1": "Jason and Shona run away together.", "plot2": "Mark impregnates Emily.", "plot3": "An old friend of Emily appears."}}
Optional Parameters:
Name | Type | Method | Description |
---|---|---|---|
child_male | String | Post | CSV list of male child characters. |
child_female | String | Post | CSV list of female child characters. |
teen_male | String | Post | CSV list of teen male characters. |
teen_female | String | Post | CSV list of teen female characters. |
adult_male | String | Post | CSV list of adult male characters. |
adult_female | String | Post | CSV list of adult female characters. |
elderly_male | String | Post | CSV list of elderly male characters. |
elderly_female | String | Post | CSV list of elderly female characters. |
events | String | Post | CSV list of life/story events. eg: Wedding,Funeral,Interview |
circumstances | String | Post | CSV list of life/story circumstances. eg: Gas Leak,Medical Operation,Car Accident,Flash Flood |
objects | String | Post | CSV list of life/story objects. eg: a cigarette,a lighter,a computer |
{"text": "Hello World","words": ["Hotel","Echo","Lima","Lima","Oscar","Whiskey","Oscar","Romeo","Lima","Delta"], "out": "Hotel Echo Lima Lima Oscar Whiskey Oscar Romeo Lima Delta"}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | nato_phonetic?text=Hello+World |
Returns 1 or more random names from the Worms video-game series.
The minimum number to return is 1, and must always be specified with MVC parameters.
The 'language' parameter currently accepts "en-gb" for English or "cs-cz" for Czech and defaults to English if not specified.
{results: ["Penguin"]} {results: ["Chatchie","Andrea","Roger","Sheridan","Burnt"]}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
num | Integer | MVC/Get/Post | worm_name/5 worm_name/5/en-gb worm_name?num=5 worm_name?num=1&language=en-gb |
language | String | MVC/Get/Post | worm_name/1/en-gb worm_name?num=1&language=en-gb |
Returns 1 or more random medieval English names.
"group" has the following accepted values: "celtic", "norman_germanic", "norse", "saxon", "rare" and "all". The "all" group includes data from all groups.
"gender" can be "male" or "female".
"surname" enables the additional return of a surname with the first name. Please note that Surname only works with the "all" grouping currently.
String values in the response are URL Encoded.
{results: ["Segarus"]} {results: ["Eddusa+de+Malhortye","Alfreda+Roard","Goldgeve+Rou"]}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
num | Integer | MVC/Get/Post | medieval_name/5 medieval_name/5/all medieval_name?num=5 medieval_name?num=1&group=all |
group | String | MVC/Get/Post | medieval_name/1/all medieval_name?num=1&group=all |
gender | String | MVC/Get/Post | medieval_name/1/all//male medieval_name?num=1&group=all&gender=male |
surname | String | MVC/Get/Post | medieval_name/1/all/male/true medieval_name?num=1&group=all&gender=male&surname=true |
Returns a randomly generated Guild Wars 2 Character Profile. This information can be used to create a new character in the game.
"species" accepts any valid playable species. Values: "human", "charr", "asura", "norn", "sylvari".
"gender" accepts "male" or "female".
"class" accepts any valid playable class eg: "warrior", "guardian", "revenant", "engineer", "thief", "ranger", "mesmer", "necromancer" or "elementalist".
Names for Human and Norn species are not returned by this endpoint. Use in combination with /api/medieval_name for Human and Norn names.
String values in the response are URL Encoded.
MVC parameters require the correct order of species/gender/class. Use "null" for when you don't want to send species of gender.
{"species":"norn","gender":"female","age":41,"class":"revenant","professions":["Weaponsmith","Jeweler","Leatherworker","Scribe"],"body":{"height":"Average","shape":"Skinny"},"starting_gear":"resplendent curtain","personality":"dignity","personal_story":{"stage1":"protect the spirits","stage2":"blacked out","stage3":"snow leopard"},"order":"vigil"}
Optional Parameters:
Name | Type | Method | Example |
---|---|---|---|
species | String | MVC/Get/Post | gw2_character/human gw2_character/norn/female gw2_character?species=human gw2_character?species=asura&gender=male |
gender | String | MVC/Get/Post | gw2_character/human/male gw2_character?species=sylvari&gender=male |
class | String | MVC/Get/Post | gw2_character/human/male/warrior gw2_character?species=sylvari&gender=female&class=engineer |
Returns the IP Address of the caller. This will return in whatever format (v4 or v6) that the server receives your request in.
{"ip":"1.2.3.4"}
Returns the hostname of the IP address your request is made with.
{"hostname":"host1234.myserver.com"}
Returns the user agent string of the client.
{"user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
Returns IP Address, User Agent and the Hostname of the request.
{"ip":"1.2.3.4","hostname":"host1234.myserver.com","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
Returns either an 8 or 9 letter anagram (depending on parameter usage) from the UK Television show 'Countdown'.
Nine letter anagrams are taken from the final round 'Countdown Conundrums' at the end of the programme.
Eight letter anagrams are from the 'Teatime teaser' section of the show, used as puzzles for the viewers at home to solve during commercial breaks.
An eight letter anagram may also return an additional "clue" element to provide a hint at what the correct solution is. Hints are not available for nine letter puzzles.
If no size parameter is specified in the call, the endpoint will default to the 9-letter anagrams.
The "answers" element of the response is returned as an array in case there are multiple possible acceptable answers for a conundrum.
Along with "anagram" and "answers", you may also get "rejected_answers" and "reasons" returned (both latter elements are optional).
The "rejected_answers" is an array containing unacceptable answers, and "reasons" contains the reason for each rejection.
{"anagram":"TONGVICAR", "answers":["CAVORTING"]} {"anagram":"CHICNURSE","answers":["CRUNCHIES"],"rejected_answers":["SCRUNCHIE"],"reasons":["'Scrunchie' is a brand name."]}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
size | Integer | MVC/Get/Post | countdown_anagram/8 countdown_anagram?size=9 |
An endpoint that will return a list of possible English words from a String of nine letters.
Please note: This is a slow endpoint and caching is implemented.
The server will scan a dictionary for possible combinations and the response can take up to 60 seconds to respond.
With an emphasis on speed, not all words may return in the response due to the algorithm passing over the dictionary aiming for a balance of speed and thoroughness.
The returned words range from four to nine letters long.
{"letters":["G","Y","H","D","N","O","E","U","R"],"sorted":"DEGHNORUY","found":["GREYHOUND","YOURN","YOUR","YOUNGER","ROUGHY","HUNGRY","HYDROGEN","HORNY","ENROUGH","ROUGHEN","HURON","ROHUN","OURN","ROUN"]}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | MVC/Get/Post | find_words/GYHDNOEUR find_words?text=GYHDNOEUR |
Returns TRUE or FALSE if the word provided is found within an English dictionary and is suitable for board games that exclude brand names, place or people's names.
Accepts text only via GET or POST.
This endpoint is intended for word games like Scrabble or Countdown and is limited to a maximum length of 9 characters.
{"found": true}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
text | String | Get/Post | check_dictionary?text=greyhound |
Returns if it is possible to solve a maths problem with given numbers and a target. Similar to the Numbers round in the Countdown Television Show.
Provide anywhere from 5 to 10 numbers in CSV format as the 'values' parameter.
Provide a 'target' number (any value between 1 and 999).
If a solution is possible that reaches the 'target', the endpoint will provide the equation.
{"values": "25,10,6,40,4,1", "target": "641", "calculation": "(((25*6)*4)+1)+40"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
values | CSV String | Get/Post | solve_sum?values=25,10,6,40,4,1&target=641 |
target | Integer | Get/Post | solve_sum?values=25,10,6,40,4,1&target=641 |
A simple endpoint that returns a random joke from a database of McVitie's Penguin jokes.
{"q":"Why can't Penguins fly?","a":"Because they are chocolate biscuits"}
Attempts to generate a barcode resource for given input.
Accepted Barcode types are: "aztec","codablockf","code128","code16k","code39e","code49","code93","codeone","datamatrix","dotcode","gridmatrix","hanxin","micropdf417","microqrcode","pdf417","qrcode","telepen","upnqr"
Content can be any valid String for the barcode type you select. Limited quality checking is performed on input values, so you need to do your own content validation. Errors in input will result in failure to generate a barcode.
{"input":"Test data","type":"qrcode","output":"http://api.toys/tmp/barcodes/f737432585f6e3ed41a5fb0596f37900.png"}
Required Parameters:
Name | Type | Method | Example |
---|---|---|---|
code | String | MVC/Get/Post | barcode/qrcode barcode?code=code16k |
content | String | Post |
If any endpoints in the Basic API are marked for retirement, you will begin to see a "deprecated" data element returned on queries. This data element will contain more information on the deprecation which will help you as a developer take action.
The date of removal will normally be included, and possibly a suggestion on alternative calls that could be made to achieve the same information.
Example:
{"old_response_data":"Just some old data here.","deprecated":"This endpoint will be switched off on 2025-01-01. Use /api/new_request_endpoint instead."}
It is a very good idea to design your application to warn you if you begin to see "deprecated" data responses from any API call you consume.