Endpoints
| Endpoint | Returns | Human page |
|---|---|---|
/api/v1/key-codes | The complete key code reference: 107 keys with event.key, event.code, the legacy keyCode and a note wherever a value is not consistent across browsers. | /data/key-codes |
/api/v1/gamepad-mappings | The W3C standard gamepad mapping: 17 button indexes and four axes, each with the specification's positional description and the label printed on Xbox, DualSense and Switch Pro controllers. | /data/gamepad-mappings |
/api/v1/tests | A machine-readable index of all 11 tests: name, URL, embed URL, category, what it checks and which browser API it uses. | /tests |
Example response
Every response carries the attribution string as its first field, so it survives being copied into somebody else's codebase.
GET https://mygearcheck.com/api/v1/gamepad-mappings
{
"_attribution": "Data from https://mygearcheck.com/ (CC BY 4.0). Please link back when you use it.",
"dataset": "gamepad-mappings",
"version": "1.0.0",
"license": "CC BY 4.0",
"documentation": "https://mygearcheck.com/data/gamepad-mappings",
"source": {
"spec": "https://w3c.github.io/gamepad/",
"reviewed": "2026-08-05"
},
"appliesWhen": "navigator.getGamepads() reports mapping === \"standard\"",
"buttons": [
{
"index": 0,
"position": "Bottom button in right cluster",
"xbox": "A",
"dualsense": "Cross",
"switchPro": "B"
}
]
}Licence and attribution
Everything here is published under CC BY 4.0. Use it commercially, ship it in a product, put it in your documentation. The one condition is attribution, and a link back to https://mygearcheck.com satisfies it. A link is also genuinely useful to your readers, because it is where a correction would appear.
Versioning
The path carries the major version. Within v1 we will add fields but not remove or repurpose them, so parsing by field name stays safe. A breaking change gets a new path rather than a silent edit. Each dataset also carries its own version number and changelog on its documentation page.
Caching and limits
These responses are generated at build time and served as static files from a CDN, so there is no server to overload and no rate limit to hit under normal use. Please cache on your side anyway rather than fetching per page view: the data changes at most a few times a year.
What is deliberately not here
- No endpoint that runs a test. Hardware testing happens in your browser, on your device, and a server cannot do it.
- No endpoint that accepts or stores test results. Nothing this site does involves sending your results anywhere, and adding an endpoint that could would undo the whole point.
- No product, price or specification data. Hardware specifications go stale fast, and publishing figures we cannot keep verified would make this dataset worse than useless.
Something wrong?
Tell us. Corrections are made, the version number moves, and the change is recorded in the changelog on the dataset page.