flarum/framework · error · BadRequestException
page[number] must be at least 1
Error message
page[number] must be at least 1
What it means
Guard in RequestUtil::extractOffsetFromNumber: when the client paginates with page[number], the page must be >= 1 (pages are 1-indexed). A page[number] of 0 or negative cannot be converted to an offset, so a 400 BadRequestException is thrown.
Solutions
- Use page[number] >= 1 (the first page is 1, not 0)
- Or paginate by page[offset] >= 0 instead
- Fix off-by-one client pagination logic that starts at page 0
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at framework/core/src/Http/RequestUtil.php:182 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of flarum/framework@4b939f6853 (2026-09-15).
Data as JSON: /api/errors/68a072ebe7f28d2c.
Report an issue: GitHub.
Appendix: source
Thrown at framework/core/src/Http/RequestUtil.php:182
}
if ($max !== null) {
$limit = min($limit, $max);
}
if ($limit < 1) {
throw new BadRequestException('page[limit] must be at least 1');
}
return $limit;
}
public static function extractOffsetFromNumber(Request $request, int $limit): int
{
$page = (int) ($request->getQueryParams()['page']['number'] ?? 1);
if ($page < 1) {
throw new BadRequestException('page[number] must be at least 1');
}
return ($page - 1) * $limit;
}
public static function extractOffset(Request $request, ?int $limit = 0): int
{
if ($request->getQueryParams()['page']['number'] ?? false) {
return self::extractOffsetFromNumber($request, $limit);
}
$offset = (int) ($request->getQueryParams()['page']['offset'] ?? 0);
if ($offset < 0) {
throw new BadRequestException('page[offset] must be at least 0');
}
return $offset;View on GitHub (pinned to 4b939f6853)