{"openapi":"3.1.0","info":{"title":"BoardGameBase API","version":"1.0.0","termsOfService":"https://boardgamebase.com/en/api-terms","description":"Read-only access to the board game catalog. Authenticate every request with an API key (`Authorization: Bearer bgb_live_…`). Responses are cursor-paginated; there is no bulk export. Free tier: 5,000 requests/month at 10 req/s."},"servers":[{"url":"https://boardgamebase.com/api/v1","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Games"},{"name":"Expansions"},{"name":"Taxonomy"},{"name":"Publishers"},{"name":"People"}],"paths":{"/games":{"get":{"tags":["Games"],"summary":"List games","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text name search."},{"name":"year","in":"query","schema":{"type":"integer"},"description":"Exact year published."},{"name":"language","in":"query","schema":{"type":"string"},"description":"ISO 639-1 language code the game was published in."},{"name":"mechanic","in":"query","schema":{"type":"string"},"description":"Mechanic slug."},{"name":"category","in":"query","schema":{"type":"string"},"description":"Category slug."},{"name":"publisher","in":"query","schema":{"type":"string"},"description":"Publisher slug."},{"name":"players","in":"query","schema":{"type":"integer"},"description":"Games playable with this exact player count."}],"responses":{"200":{"description":"A page of games.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Game"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/games/{slug}":{"get":{"tags":["Games"],"summary":"Get a game by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The game.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Game"}},"required":["data"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No game matches the slug.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/games/{slug}/expansions":{"get":{"tags":["Games","Expansions"],"summary":"List a game's expansions","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The game's expansions.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Expansion"}}},"required":["data"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No game matches the slug.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/expansions":{"get":{"tags":["Expansions"],"summary":"List expansions","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"year","in":"query","schema":{"type":"integer"}},{"name":"language","in":"query","schema":{"type":"string"}},{"name":"baseGame","in":"query","schema":{"type":"string"},"description":"Base game slug."}],"responses":{"200":{"description":"A page of expansions.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Expansion"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/mechanics":{"get":{"tags":["Taxonomy"],"summary":"List mechanics","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"A page of mechanics.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Term"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/categories":{"get":{"tags":["Taxonomy"],"summary":"List categories","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"A page of categories.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Term"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/publishers":{"get":{"tags":["Publishers"],"summary":"List publishers","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Name search."}],"responses":{"200":{"description":"A page of publishers.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Publisher"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/people":{"get":{"tags":["People"],"summary":"List designers & illustrators","parameters":[{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `pagination.nextCursor`. Omit for the first page.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (1–50).","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Name search."},{"name":"role","in":"query","schema":{"type":"string","enum":["designer","illustrator"]}}],"responses":{"200":{"description":"A page of people.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"400":{"description":"Invalid query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, malformed, or revoked API key.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit or monthly quota exceeded.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","description":"Your API key: `Authorization: Bearer bgb_live_…`. The `X-API-Key` header is also accepted."}},"schemas":{"Pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"],"description":"Pass as `cursor` to fetch the next page; null on the last page."},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"]},"Localized":{"type":"object","description":"Localized text keyed by ISO 639-1 code (en, fr, de, es, it, …). English is always present.","additionalProperties":{"type":"string"},"example":{"en":"Catan","fr":"Catane"}},"Game":{"type":"object","properties":{"id":{"type":"string","description":"Stable slug identifier."},"name":{"$ref":"#/components/schemas/Localized"},"description":{"$ref":"#/components/schemas/Localized"},"yearPublished":{"type":"integer"},"editions":{"type":"integer"},"players":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"}}},"playtime":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"}},"description":"Minutes."},"minAge":{"type":"integer"},"languages":{"type":"array","items":{"type":"string"}},"publisher":{"type":["string","null"]},"designers":{"type":"array","items":{"type":"string"}},"illustrators":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"},"description":"Category slugs."},"mechanics":{"type":"array","items":{"type":"string"},"description":"Mechanic slugs."},"expansions":{"type":"array","items":{"$ref":"#/components/schemas/Expansion"}}}},"Expansion":{"type":"object","properties":{"id":{"type":"string"},"name":{"$ref":"#/components/schemas/Localized"},"yearPublished":{"type":"integer"},"languages":{"type":"array","items":{"type":"string"}},"baseGame":{"type":"string","description":"Base game slug (present on standalone expansion payloads)."}}},"Term":{"type":"object","properties":{"id":{"type":"string","description":"Slug."},"label":{"$ref":"#/components/schemas/Localized"}}},"Publisher":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"Person":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"Problem":{"type":"object","description":"RFC 9457 problem detail.","properties":{"type":{"type":"string","format":"uri"},"code":{"type":"string","description":"Stable machine-readable error code."},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"}},"required":["type","code","title","status"]}}}}