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

# List curated topics

`GET /api/v1/topics`

## Request

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

2,184 curated topics with aliases and counts.

## Query parameters

- `lang` 'en' | 'pl': Display language for category names + slug labels (subcategories/tags)
- `q` string
- `kind` 'tag' | 'subcategory'
- `cursor` string
- `limit` integer

## Response `200`

Curated topics.

- TopicsListResponse
  - `data` TopicEntry[], required
    - `slug` string, required
    - `kind` 'tag' | 'subcategory', required
    - `label` string, required
    - `aliases` string[], required
    - `count` integer, required
  - `meta` MetaTopicsList, required
    - `count` integer, required
    - `total` integer, required
    - `language` string, required: Language of the response content.
    - `requestId` string, uuid, required: Unique request identifier (also in `X-Request-Id` response header).
  - `_links` Links
    - `next` string: URL to the next page.
    - `prev` string: URL to the previous page.

## 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)
