paperclipai/paperclip · error · HttpError
rate_limited
rate_limited
Error message
Too many file preview requests
What it means
Rate-limit rejection from the file-preview limiter's acquire: the per-key sliding window (default 60s) already recorded more than maxRequests preview requests for this key. Thrown as HttpError 429 with code 'rate_limited' to protect file-resource endpoints from excessive preview traffic; the message is overridable via requestLimitMessage.
Source
Thrown at server/src/routes/file-resources.ts:93
const windowMs = opts.windowMs ?? 60_000;
const requestLimitMessage = opts.requestLimitMessage ?? "Too many file preview requests";
const concurrencyLimitMessage = opts.concurrencyLimitMessage ?? "Too many concurrent file preview requests";
const activeByKey = new Map<string, number>();
const windowsByKey = new Map<string, { startedAt: number; count: number }>();
return {
acquire(key: string) {
const now = Date.now();
for (const [windowKey, existing] of windowsByKey) {
if (now - existing.startedAt >= windowMs) windowsByKey.delete(windowKey);
}
const window = windowsByKey.get(key);
if (!window || now - window.startedAt >= windowMs) {
windowsByKey.set(key, { startedAt: now, count: 1 });
} else {
window.count += 1;
if (window.count > maxRequests) {
throw new HttpError(429, requestLimitMessage, { code: "rate_limited" });
}
}
const active = activeByKey.get(key) ?? 0;
if (active >= maxConcurrent) {
throw new HttpError(429, concurrencyLimitMessage, { code: "concurrency_limited" });
}
activeByKey.set(key, active + 1);
return () => {
const current = activeByKey.get(key) ?? 0;
if (current <= 1) activeByKey.delete(key);
else activeByKey.set(key, current - 1);
};
},
};
}
export function createFileResourceListLimiter(opts: {View on GitHub (pinned to a7e689b3c3)
Solutions
- Reduce the rate of file preview requests and retry after the rate limit window passes.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/file-resources.ts:93 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/a44c76141e988fbc.
Report an issue: GitHub.