RESTful API · JSON responses · Compatible with packages/core Rust types
Paginated problem list with filtering.
| Param | Type | Default | Description |
|---|---|---|---|
page | number | 1 | Page number |
limit | number | 20 | Items per page (1–100) |
platform | string | — | Filter by platform |
search | string | — | Fuzzy search |
{ "total": 35114, "page": 1, "limit": 20, "total_pages": 1756, "items": [...] }
Problem detail in core-compatible format. Returns suggestions on 404.
{ "problem": {...}, "statements": [...], "meta": { "iden", "tags", "sample_group" } }
Raw segmented data (paragraphs, samples, translations, formalizations).
Database statistics and platform listing.
Fetch from Codeforces via browser proxy (Cloudflare bypass).
{ "url": "CF1A" } // or { "urls": ["CF1A","CF2B"] }
Fetch from AtCoder.
{ "url": "abc300_a" } // or { "urls": [...] }
Batch fetch by contest ID.
{ "contest_id": 566 } // CF: number, AT: string e.g. "abc300"
interface Problem {
name: string;
description: { content: string; description_type: "Markdown" | "Html" | "Typst" };
platform: string;
limit: { time_limit: number; memory_limit: number }; // ms / KB
difficulty: { NumberStyle: number } | { LuoguStyle: string } | "None";
is_remote: boolean; is_sync: boolean; sync_url: string | null; sign: string | null;
}
interface ProblemStatement {
statement_type: "Markdown" | "Html" | "Pdf" | "Typst";
content: string;
is_translate: boolean;
language: "Chinese" | "English" | "Japanese" | "Russian";
}