---
title: "List categories"
method: GET
path: "/api/v1/categories"
tags: ["Discovery"]
---

# List categories

`GET /api/v1/categories`

## Request

- Base URL: `https://quizbase.runriva.com`
- URL: `https://quizbase.runriva.com/api/v1/categories`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

24 top-level categories with localized names.

## Query parameters

- `lang` 'en' | 'pl': Display language for category names + slug labels (subcategories/tags)

## Response `200`

Categories list.

- CategoriesResponse
  - `data` CategoryEntry[], required
    - `id` integer, required
    - `slug` string, required
    - `name` string, required
    - `opentdbId` integer, nullable, required
    - `parentId` integer, nullable, required
  - `meta` MetaCategories, required
    - `count` integer, required
    - `language` string, required: Language of the response content.
    - `requestId` string, uuid, required: Unique request identifier (also in `X-Request-Id` response header).

## Other responses

- `401`: Missing, malformed, invalid, or revoked API key.
- `403`: IP not allowed (per-key allowlist).
- `429`: Rate limit exceeded. See `Retry-After` header.
- `500`: Server error.

---

[API](https://skmtc.dev/runriva/apis/quizbase-api.md) · [All operations](https://skmtc.dev/runriva/apis/quizbase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/runriva/apis/quizbase-api/revisions/4c2f9be78ec9?raw)
