Skip to content
arXivv
Esc
↑↓navigate↵open⌘Jpreview
On this page

Errors and limits

Problem Details errors with stable codes, the per-IP rate limit, and the headers that come with them.

Errors

Errors use Problem Details (RFC 9457) with Content-Type: application/problem+json. The type URL ends in a stable code, which is repeated in code.

{
  "type": "https://arxivv.org/errors/not-found",
  "title": "Not found",
  "status": 404,
  "detail": "Unknown paper 1706.99999",
  "instance": "/1706.99999.md",
  "code": "not-found"
}
Code Status Meaning
invalid-id 400 The path looks like a paper route but does not contain a valid paper ID
not-found 404 No such paper, version, section, figure or asset (assets: not mirrored yet)
no-html 422 arXiv has no HTML for this version, so no tree can be built
rate-limited 429 Rate limit exceeded; see Retry-After
build-failed 500 The tree could not be built, or another internal error
upstream 502 arXiv returned an error or rate-limited us during a build, or was unreachable
  • Match on code (or the code in type), not on title or detail. Codes are stable within a schema major.
  • Error responses carry X-Arxivv-Schema, Vary: Prefer and Cache-Control: no-store.
  • Drop-in routes return arXiv’s own error responses unchanged. Only an unreachable arXiv becomes 502 upstream.

Rate limit

Limit Key Applies to
60 requests per minute Client IP Every request the Worker handles: our formats, drop-in proxy, /mcp

When you exceed it:

HTTP/2 429
Content-Type: application/problem+json
Retry-After: 60
Cache-Control: no-store

{
  "type": "https://arxivv.org/errors/rate-limited",
  "title": "Rate limit exceeded",
  "status": 429,
  "detail": "Too many requests; retry in a minute",
  "instance": "/1706.03762.md",
  "code": "rate-limited"
}
  • No sign-up or API key is needed.
  • The limit is counted per Cloudflare location and is approximate.
  • Responses served from Cloudflare’s cache never reach the Worker, so they do not count.
  • Requests to https://arxivv.org/mcp count like any other request.
  • Need more? Get in touch; limits are configuration, not code.

Headers

Header On Meaning
Retry-After 429 (60), 202 (5), pending inferred fields (10) Seconds to wait before retrying
X-Arxivv-Schema Every paper response and error Major schema version
X-Arxivv-Version Every paper response arXiv version served
X-Arxivv-Quality Paper responses with a built tree Quality score
X-Arxivv-Source Paper responses with a built tree Tree source
Vary Paper responses and errors Always Prefer
Link Unversioned paper responses rel="canonical" versioned URL
Cache-Tag Unversioned paper responses paper:<id>, purged when a new version appears
Preference-Applied Responses that honoured Prefer The applied preference
Location 202 The requested URL, to poll

Was this page helpful?