jackwener/OpenCLI · warning · EmptyResultError
No paper found with id "${id}". Confirm the forum/note id fr
Error message
No paper found with id "${id}". Confirm the forum/note id from openreview.net. What it means
The openreview paper command looks up a single note by its forum/note id. When the OpenReview API returns no notes for /notes?id=<id>, the command throws EmptyResultError because no paper corresponds to that id. OpenReview returns 200 with an empty notes array for unknown ids rather than a 404, so this check is required.
Source
Thrown at clis/openreview/paper.js:26
cli({
site: 'openreview',
name: 'paper',
access: 'read',
description: 'Show full metadata for a single OpenReview paper',
domain: 'openreview.net',
strategy: Strategy.PUBLIC,
browser: false,
args: [
{ name: 'id', positional: true, required: true, help: 'OpenReview note id (e.g. "5sRnsubyAK")' },
],
columns: ['id', 'title', 'authors', 'keywords', 'venue', 'venueid', 'primary_area', 'abstract', 'pdate', 'pdf', 'url'],
func: async (args) => {
const id = requireForumId(args.id);
const path = `/notes?id=${encodeURIComponent(id)}`;
const json = await openreviewFetch(path, `openreview paper ${id}`);
const notes = Array.isArray(json?.notes) ? json.notes : [];
if (!notes.length) {
throw new EmptyResultError('openreview', `No paper found with id "${id}". Confirm the forum/note id from openreview.net.`);
}
const row = noteToRow(notes[0]);
return [{
id: row.id,
title: row.title,
authors: row.authors,
keywords: row.keywords,
venue: row.venue,
venueid: row.venueid,
primary_area: row.primary_area,
abstract: row.abstract,
pdate: row.pdate,
pdf: row.pdf,
url: row.url,
}];
},
});
View on GitHub (pinned to 49907e53dc)
Solutions
- Re-copy the full forum id from the openreview.net URL (the 26-char string after /forum?id=)
- Confirm the paper is publicly visible on openreview.net (not withdrawn/deleted)
- Check whether the id belongs to API v2 notes (some venues require the v2 endpoint)
- Fetch /notes?id=<id> directly in a browser/curl to inspect the raw response
- If you only have the paper title, use the openreview search command to resolve the correct id
Defensive patterns
Strategy: try-catch
Validate before calling
if (typeof id !== 'string' || !/^[A-Za-z0-9_-]{10,}$/.test(id.trim())) {
throw new Error(`Expected an OpenReview note id (long opaque token), got: ${id}`);
} Type guard
function isLikelyNoteId(v) {
return typeof v === 'string' && v.trim().length >= 10 && /^[A-Za-z0-9_-]+$/.test(v.trim());
} Try / catch
try {
const paper = await paperCommand({ id });
} catch (err) {
if (err instanceof EmptyResultError) {
console.error('Unknown forum id; re-copy from openreview.net or resolve via search.');
} else {
throw err;
}
} Prevention
- Copy the full 26-char id from the /forum?id= URL parameter
- Confirm the paper loads publicly on openreview.net
- Resolve unknown titles via the search command to get valid ids
- Watch for v1 vs v2 API id mismatches for newer venues
When it happens
Trigger: openreviewFetch('/notes?id=<id>') succeeds but json.notes is missing or empty — the id does not match any public note on openreview.net.
Common situations: Truncated or mistyped forum id (copied partially from a URL); id from OpenReview API v1 used against a v2-only note (or vice versa); note withdrawn/deleted; passing an email or title instead of the hex note id.
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 forum found with id "${forum}". Confirm the forum id from
- 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/55c376df5a0e5e40.
Report an issue: GitHub.