{"name":"tibia.data","description":"Read-only mirror of Tibia game data.","docs":"/docs","groups":[{"key":"discovery","label":"Discovery","description":"Find your way around the API."},{"key":"listings","label":"Listings","description":"Paginated lists, one per entity category."},{"key":"detail","label":"Detail","description":"Single-record lookups by id."},{"key":"sprites","label":"Sprites","description":"PNG renderings — raw sheets, frame groups, fully composed outfits."},{"key":"audio","label":"Audio","description":"Sound file streaming."}],"endpoints":[{"group":"discovery","path":"/api","description":"This index. Lists every public endpoint as JSON."},{"group":"discovery","path":"/api/categories","description":"List the 10 entity categories with their canonical key, label, glyph, accent colour, and live count.","example":"/api/categories","responseShape":"array of { key, label, glyph, accent, count }"},{"group":"discovery","path":"/api/search","description":"Live full-text search across every category. Substring + token-prefix scoring with category-diversity ranking; numeric queries match entity IDs.","params":[{"name":"q","required":true,"type":"query","description":"search term — name fragment or numeric id"},{"name":"limit","type":"query","description":"max results (default 12, cap 50)"}],"example":"/api/search?q=dragon&limit=12","responseShape":"array of { id, name, category, subtype }"},{"group":"listings","path":"/api/items","description":"List all items. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/items?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/monsters","description":"List all monsters. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/monsters?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/bosses","description":"List all bosses. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/bosses?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/houses","description":"List all houses. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/houses?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/achievements","description":"List all achievements. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/achievements?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/quests","description":"List all quests. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/quests?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/outfits","description":"List all outfits. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/outfits?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/effects","description":"List all effects. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/effects?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/missiles","description":"List all missiles. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/missiles?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"listings","path":"/api/sounds","description":"List all sounds. Paginated via offset/limit; total count returned in the X-Total-Count response header.","params":[{"name":"offset","type":"query","description":"starting index (default 0)"},{"name":"limit","type":"query","description":"page size (default returns the full array)"}],"example":"/api/sounds?offset=0&limit=100","responseShape":"array of { id, name }"},{"group":"detail","path":"/api/items/{id}","description":"Full record for a single item. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/items/1"},{"group":"detail","path":"/api/monsters/{id}","description":"Full record for a single monster. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/monsters/1"},{"group":"detail","path":"/api/bosses/{id}","description":"Full record for a single bosse. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/bosses/1"},{"group":"detail","path":"/api/houses/{id}","description":"Full record for a single house. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/houses/1"},{"group":"detail","path":"/api/achievements/{id}","description":"Full record for a single achievement. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/achievements/1"},{"group":"detail","path":"/api/quests/{id}","description":"Full record for a single quest. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/quests/1"},{"group":"detail","path":"/api/outfits/{id}","description":"Full record for a single outfit. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/outfits/1"},{"group":"detail","path":"/api/effects/{id}","description":"Full record for a single effect. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/effects/1"},{"group":"detail","path":"/api/missiles/{id}","description":"Full record for a single missile. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/missiles/1"},{"group":"detail","path":"/api/sounds/{id}","description":"Full record for a single sound. Field names match the recovered protobuf schema; for monster/boss/house/etc records, synthetic field_N keys are remapped to semantic names where known.","params":[{"name":"id","required":true,"type":"path","description":"numeric entity id"}],"example":"/api/sounds/1"},{"group":"sprites","path":"/api/sprite/{spriteId}","description":"Raw sprite by global sprite-sheet ID, extracted from the appropriate Sprites N-M.png with correct grid params.","params":[{"name":"spriteId","required":true,"type":"path","description":"numeric sprite id"}],"example":"/api/sprite/3031","responseShape":"image/png"},{"group":"sprites","path":"/api/item/{id}/sprite/{spriteIndex}","description":"Nth sprite from an item's first frame group. Combine with frameGroup metadata from the item detail to build animations or pattern variants.","params":[{"name":"id","required":true,"type":"path","description":"item id"},{"name":"spriteIndex","required":true,"type":"path","description":"index into the frame group's sprite array"}],"example":"/api/item/3031/sprite/0","responseShape":"image/png"},{"group":"sprites","path":"/api/item/{id}/frame_group/{frameGroupIndex}/sprite/{spriteIndex}","description":"As above, with explicit frame-group selection (some items have separate idle/moving groups).","params":[{"name":"id","required":true,"type":"path","description":"item id"},{"name":"frameGroupIndex","required":true,"type":"path","description":"index into frameGroup[]"},{"name":"spriteIndex","required":true,"type":"path","description":"index into the chosen group's sprite array"}],"example":"/api/item/3031/frame_group/0/sprite/0","responseShape":"image/png"},{"group":"sprites","path":"/api/effect/{id}/sprite/{spriteIndex}","description":"Effect sprite. Same shape as item sprites.","example":"/api/effect/2/sprite/0","responseShape":"image/png"},{"group":"sprites","path":"/api/missile/{id}/sprite/{spriteIndex}","description":"Missile sprite. Same shape as item sprites.","example":"/api/missile/1/sprite/0","responseShape":"image/png"},{"group":"sprites","path":"/api/outfit-render/{looktype}","description":"Fully composed outfit sprite — base + colorized template + addons + optional mount, single layer for monsters and two-layer for humanoids. Returns a 64×64 PNG.","params":[{"name":"looktype","required":true,"type":"path","description":"outfit looktype id"},{"name":"dir","type":"query","description":"direction 0=N 1=E 2=S 3=W (default 2)"},{"name":"frame","type":"query","description":"animation frame (default 0)"},{"name":"fg","type":"query","description":"frame group: 0=idle 1=moving (default 0)"},{"name":"head","type":"query","description":"head colour palette index 0..132"},{"name":"body","type":"query","description":"body colour palette index 0..132"},{"name":"legs","type":"query","description":"legs colour palette index 0..132"},{"name":"feet","type":"query","description":"feet colour palette index 0..132"},{"name":"addons","type":"query","description":"bitmask: 1=addon1, 2=addon2, 3=both"},{"name":"mount","type":"query","description":"0=no, 1=yes"}],"example":"/api/outfit-render/128?dir=2&head=80&body=2&legs=4&feet=99&addons=3","responseShape":"image/png"},{"group":"audio","path":"/api/sound/{id}/file","description":"Stream the sound file (typically OGG) referenced by a sounds entity.","params":[{"name":"id","required":true,"type":"path","description":"sound id"}],"example":"/api/sound/1/file","responseShape":"audio/ogg"}]}