jackwener/OpenCLI · warning · EmptyResultError
No forum found with id "${forum}". Confirm the forum id from
Error message
No forum found with id "${forum}". Confirm the forum id from openreview.net. What it means
The reviews command first fetches the root note of the forum (/notes?id=<forum>) to anchor the reply thread. If that query returns no notes, the forum id does not correspond to any public note, and EmptyResultError is thrown before fetching replies.
Source
Thrown at clis/openreview/reviews.js:108
strategy: Strategy.PUBLIC,
browser: false,
args: [
{ name: 'forum', positional: true, required: true, help: 'OpenReview forum id (same as paper id)' },
{ name: 'max-length', type: 'int', default: 4000, help: 'Per-row text truncation (min 200)' },
],
columns: ['type', 'author', 'rating', 'confidence', 'text'],
func: async (args) => {
const forum = requireForumId(args.forum, 'forum');
const rawMax = args['max-length'] ?? args.maxLength ?? 4000;
const maxLength = coerceInt(rawMax);
if (!Number.isInteger(maxLength) || maxLength < 200) {
throw new ArgumentError('openreview reviews max-length must be an integer >= 200');
}
const rootJson = await openreviewFetch(`/notes?id=${encodeURIComponent(forum)}`, `openreview paper ${forum}`);
const rootNotes = Array.isArray(rootJson?.notes) ? rootJson.notes : [];
const root = rootNotes[0];
if (!root) {
throw new EmptyResultError('openreview', `No forum found with id "${forum}". Confirm the forum id from openreview.net.`);
}
const repliesJson = await openreviewFetch(`/notes?forum=${encodeURIComponent(forum)}&details=replies&limit=1000`, `openreview reviews ${forum}`);
const replies = Array.isArray(repliesJson?.notes) ? repliesJson.notes.filter(note => note?.id !== forum) : [];
// Sort by cdate (creation time) so ordering is deterministic regardless of API order.
const sorted = [...replies].sort((a, b) => (a?.cdate ?? 0) - (b?.cdate ?? 0));
const ordered = [root, ...sorted];
return ordered.map((note) => {
const isRoot = note?.id === forum;
const type = classifyNote(note, isRoot);
const author = authorFromSignatures(note?.signatures);
const rating = readContent(note?.content, 'rating');
const confidence = readContent(note?.content, 'confidence');
const text = truncate(joinSections(note?.content), maxLength);
return {
type,
author,
rating: rating === undefined || rating === null ? '' : String(rating),
confidence: confidence === undefined || confidence === null ? '' : String(confidence),View on GitHub (pinned to 49907e53dc)
Solutions
- Re-copy the forum id from the openreview.net paper URL (?id= parameter)
- Confirm the paper loads publicly in a browser on openreview.net
- Use the openreview search command to find the paper and get its correct id
- Try the review-thread id only if it is the root forum id — replies are not valid forum ids
Example fix
// before openreview reviews --forum WRONGID // after (resolve id via search first) openreview search "paper title" # take the id column openreview reviews --forum <id-from-search>
Defensive patterns
Strategy: try-catch
Validate before calling
if (typeof forum !== 'string' || forum.trim().length < 10) {
throw new Error(`Forum id looks invalid: ${forum}`);
} Type guard
function isLikelyForumId(v) {
return typeof v === 'string' && v.trim().length >= 10 && /^[A-Za-z0-9_-]+$/.test(v.trim());
} Try / catch
try {
const reviews = await reviewsCommand({ forum });
} catch (err) {
if (err instanceof EmptyResultError) {
console.error('Forum not found; verify the root paper id on openreview.net.');
} else {
throw err;
}
} Prevention
- Use the root paper's forum id, not a review/reply id
- Copy the id from the paper URL's ?id= parameter
- Confirm public visibility in a browser first
- Resolve via openreview search when the id is uncertain
When it happens
Trigger: openreviewFetch('/notes?id=<forum>') succeeds but json.notes is empty — the given forum id matches no public OpenReview note.
Common situations: Mistyped or truncated forum id from a paper URL; paper withdrawn or restricted (not publicly visible); using a review/reply id instead of the forum (root paper) id; venue moved to OpenReview API v2 where ids differ.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- No paper found with id "${id}". Confirm the forum/note id fr
- No OpenReview submissions found for profile "${profile}". Co
- No papers found for "${term}". Try a different keyword.
- Chess.com returned no stats for ${username}
- coingecko returned no market data for currency "${currency}"
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/0bfaec7fe6a4fd1e.
Report an issue: GitHub.