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 (처음 가져올 때든 웹사이트에서 다운로드할 때든 똑같이 타이머가 시작돼요)
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
단마다 1분에 답 하나를 제출할 수 있어요. 그보다 빨리 보내면 응답은 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단까지 같은 내용을 돌려줘요. 그 달에 들어가는 회차마다 항목이 하나예요.