API
Создайте токен на странице «Настройки». Передавайте его как Authorization: Bearer pf1_….
GET /api/v1/version
GET /api/v1/months/current
GET /api/v1/problems/<slug>/<YYYY-MM>
GET /api/v1/leaderboards?month=YYYY-MM
GET /api/v1/leaderboards/<YYYY-MM>/<slug|global>
GET /api/v1/leaderboards/alltime
GET /api/v1/leaderboards/firsts?month=
GET /api/v1/month
GET /api/v1/month/board?edition=<edition>
GET /api/v1/bounty
GET /api/v1/me
GET /api/v1/me/<YYYY-MM>
GET /api/v1/me/<YYYY-MM>/<slug>
GET /api/v1/me/<YYYY-MM>/<slug>/<NN>/instance (первое скачивание через API или скачивание на сайте запускает ваш таймер: они считаются одинаково)
POST /api/v1/me/<YYYY-MM>/<slug>/<NN>/answer Idempotency-Key: <uuid> {"answer": "123", "solver": "optional"}
GET /api/v1/me/<YYYY-MM>/<slug>/released
GET /api/v1/me/month/<YYYY-MM|edition>
GET /api/v1/me/month/<YYYY-MM>/<NN>/instance
POST /api/v1/me/month/<YYYY-MM>/<NN>/answer
GET /api/v1/me/answers?month=YYYY-MM
Для каждой ступени можно отправлять один ответ в минуту; если раньше — ответ 429 с числом оставшихся секунд. Ответ сервера: accepted, not_accepted или malformed. Ступень 00 — тренировочная. Она не идёт в ваш счёт.
/api/v1/leaderboards/firsts?month=YYYY-MM выдаёт для каждой задачи месяца по одной строке на каждую ступень с 01 по 12, которую кто-то открыл: first (первый принятый ответ к ступени: ник, публичный id, received_at), quickest (кратчайшее время от первого скачивания до принятого ответа: ник, публичный id, solve_seconds; при равенстве — более ранний ответ), average_seconds, median_seconds (при чётном количестве — среднее двух центральных значений, с точностью до миллисекунды), opened (участники, которые в этом месяце нажали «Показать задачу», скачали ступень или решили её), solved и percent (целый процент тех из них, кто её решил). Начиная с месяца 2026-11, сотрудники во всём этом не учитываются. Список potm в этом ответе даёт то же самое для задачи месяца, ступени с 01 по 12: по одной записи на каждый выпуск, который идёт в зачёт этого месяца.