Versions
Check that the API is up, find out when its data has changed, and get the full API contract. To keep a local copy of a data file current, save its hash from /versions and download the file again only when the hash changes.
Get API status
Whether the API is up, which query features it supports, and the record count and version of the main datasets.
Properties
- Name
statusTypeanyDescription - Name
capabilitiesTypeobjectDescription - Name
datasetsTypeobjectDescription
Request
GET
https://api.mouse.rip/statusconst response = await fetch('https://api.mouse.rip/status')
Response
{
"capabilities": {
"bulk_lookup": true,
"collection_querying": true,
"cross_type_search": true,
"facets": true
},
"datasets": {
"attraction": {
"count": 5993,
"version": "4948ca90c8"
},
"items": {
"count": 4116,
"version": "1164752cfe"
},
"mice": {
"count": 1311,
"version": "00b5dddc0f"
},
"power-types": {
"count": 10,
"version": "e51e8bd99d"
},
"recipes": {
"count": 266,
"version": "eecbb9266c"
},
"scoreboards": {
"count": 152,
"version": "f55067e396"
},
"shops": {
"count": 76,
"version": "5c06097f7d"
},
"store": {
"count": 261,
"version": "df5acd26a4"
},
"titles": {
"count": 20,
"version": "e643b3b863"
}
},
"status": "ok"
}
Get data versions
A short hash for every data file, keyed by name (mice, items, environments, and so on). A hash changes only when its file does. Responses are cached for five minutes.
Properties
- Name
[name]TypestringDescriptionKeyed by data file name, such asmice. The hash of that file's current contents.
Request
GET
https://api.mouse.rip/versionsconst response = await fetch('https://api.mouse.rip/versions')
Response
{
"community-map-data": "53e9b926e0",
"cre-mice-groups": "6ed57968d1",
"environments-events": "2e062aba5f",
...
}
Get the OpenAPI spec
The API contract as an OpenAPI 3.1 document: every endpoint, its parameters and response shapes, and every data file. Also available at /openapi.json.
Request
GET
https://api.mouse.rip/openapiconst response = await fetch('https://api.mouse.rip/openapi')
Response
{
"openapi": "3.1.0",
"info": {
"title": "MouseHunt API",
"version": "1.0.0",
"description": "Unofficial, read-only API for public MouseHunt data."
},
"servers": [
{
"url": "https://api.mouse.rip"
}
],
"tags": [
{
"name": "Search & Querying",
"x-page": "search",
"x-summary": "Cross-type search, filtering, sorting, pagination, and facet counts for items and mice.",
"description": "Every collection accepts query parameters for filtering, searching, sorting, pagination, and field selection. [`/search`](#search) returns compact, relevance...",
"x-sections": [
{...}
]
},
{
"name": "Mice",
"x-page": "mice",
"x-summary": "Mouse data including stats, weaknesses, minlucks, wisdom, attraction rates, and images.",
"description": "`/mouse` is an alias for `/mice`. Any `:id` accepts a numeric ID or a mouse type (slug)."
},
...
],
"x-tagGroups": [
{
"name": "Search & Querying",
"tags": [
"Search & Querying"
]
},
{
"name": "Mice",
"tags": [
"Mice",
"Burroughs Rift Mice",
...
]
},
...
],
"paths": {
"/attraction": {
"get": {
"summary": "Get attraction populations",
"description": "One record per population, queryable like the other collections. Filter on `location`, `stage`, `cheese`, `charm` or `source`; `q` searches the location, sta...",
"parameters": [...],
"responses": {...},
"tags": [...],
"x-example": "/attraction?mouse=burglar&sort=-rate&limit=1",
"x-nav": "Populations"
}
},
"/attraction/location": {
"get": {
"summary": "Get attraction rates by location",
"description": "The same rates nested as `location → stage → cheese → charm → mouse → percentage`. Filters keep the hierarchy and percentages, and remove empty branches; no ...",
"parameters": [...],
"responses": {...},
"tags": [...],
"x-example": "/attraction/location?location=bazaar&cheese=super_brie_cheese&charm=-",
"x-nav": "Rates by location"
}
},
"/attraction/location/{location}": {
"get": {
"summary": "Get attraction rates for a location",
"description": "Just that location's stages, with the same filters as `/attraction/location`. Unknown locations return `404`.",
"parameters": [...],
"responses": {...},
"tags": [...],
"x-example": "/attraction/location/bazaar?cheese=super_brie_cheese&charm=-",
"x-nav": "Rates for a location"
}
},
...
},
"components": {
"pathItems": {
"AttractionMeta": {
"get": {...}
},
"Attraction": {
"get": {...}
},
"Items": {
"get": {...}
},
"Item": {
"get": {...}
},
"Mice": {
"get": {...}
},
"Mouse": {
"get": {...}
}
},
"parameters": {
"Id": {
"name": "id",
"in": "path",
"required": true,
"schema": {...},
"description": "Numeric ID or type slug."
},
"CollectionQuery": {
"name": "q",
"in": "query",
"schema": {...},
"description": "Case-insensitive partial text search."
},
"SearchQuery": {
"name": "q",
"in": "query",
"required": true,
"schema": {...},
"description": "Case-insensitive partial search term."
},
"SearchTypes": {
"name": "types",
"in": "query",
"schema": {...},
"description": "Comma-separated: `item`, `location`, `mouse`. Defaults to all three."
},
"SearchLimit": {
"name": "limit",
"in": "query",
"schema": {...},
"description": "Maximum number of results, 0 to 50. Defaults to 10."
}
},
"responses": {
"ItemCollection": {
"description": "Item collection. Use `meta=true` for the paginated envelope.",
"headers": {...},
"content": {...}
},
"MouseCollection": {
"description": "Mouse collection. Use `meta=true` for the paginated envelope.",
"headers": {...},
"content": {...}
},
"Item": {
"type": "object",
"required": [...],
"properties": {...},
"additionalProperties": true,
"content": {...}
},
"Mouse": {
"type": "object",
"required": [...],
"properties": {...},
"additionalProperties": true,
"content": {...}
},
"Facets": {
"type": "object",
"required": [...],
"properties": {...},
"content": {...}
},
"InvalidQuery": {
"description": "Invalid query parameter",
"content": {...}
}
},
"schemas": {
"Item": {
"type": "object",
"required": [...],
"properties": {...},
"additionalProperties": true
},
"Mouse": {
"type": "object",
"required": [...],
"properties": {...},
"additionalProperties": true
},
"SearchResponse": {
"type": "object",
"required": [...],
"properties": {...}
},
"Facets": {
"type": "object",
"required": [...],
"properties": {...}
},
"Status": {
"type": "object",
"required": [...],
"properties": {...}
},
"MouseLoot": {
"type": "object",
"required": [...],
"properties": {...}
},
"ItemDropper": {
"type": "object",
"required": [...],
"properties": {...}
},
"Title": {
"type": "object",
"required": [...],
"properties": {...}
},
"PowerType": {
"type": "object",
"required": [...],
"properties": {...}
},
"Scoreboard": {
"type": "object",
"required": [...],
"properties": {...}
},
"ItemRef": {
"type": "object",
"required": [...],
"properties": {...}
},
"Recipe": {
"type": "object",
"required": [...],
"properties": {...}
},
"StorePack": {
"type": "object",
"required": [...],
"properties": {...}
},
"AttractionPopulation": {
"type": "object",
"required": [...],
"properties": {...}
},
"Shop": {
"type": "object",
"required": [...],
"properties": {...}
},
"Error": {
"type": "object",
"required": [...],
"properties": {...}
}
}
}
}