Endpoint
List fields
GET /api/{game}/fields.json
The field registry: what every field name means, its unit, and the bounds a value must fall inside to be accepted. A parsed value that fails either check is quarantined rather than published.
Path parameters
| game | string | A game slug from the index. |
Response
The registry for one game.
| game | string | The slug this registry governs. |
| note | string | A reminder that names are game-scoped. |
| fields | Field[] | Every declared field. |
| fields[].field | string | The name a fact uses. |
| fields[].type | string | Always number today. |
| fields[].unit? | string | null | What the number is in. Never inferred from magnitude. |
| fields[].min? | number | null | Lowest accepted value. |
| fields[].max? | number | null | Highest accepted value. |
| fields[].facts | integer | How many facts use it. Zero means declared but unused. |
| fields[].appliesTo | string | The entity type it belongs to. |
Bounds are measured, not guessed. They come from the real range across the corpus and are then widened. They are a plausibility gate on the parser, not a claim about the game.
Request
curl -s -H "x-api-key: $KB_API_KEY" https://kb.play-ascend.com/api/valorant/fields.json
Response example
{
"schemaVersion": 3,
"game": "valorant",
"note": "Field names are scoped to this game: the same name in another game i…",
"fields": [
{
"field": "ability.equip_time_s",
"type": "number",
"unit": "s",
"min": 0.05,
"max": 5,
"facts": 92,
"appliesTo": "ability"
},
{
"field": "ability.unequip_time_s",
"type": "number",
"unit": "s",
"min": 0,
"max": 5,
"facts": 106,
"appliesTo": "ability"
},
"… 55 more"
]
} Field registry
Field names are scoped to their game: the same name in two games is two quantities.