Base URL
Authentication
No authentication is required. The API is free and open.Rate limiting
Requests are rate limited to 200 requests per minute per IP address. Rate limit headers are included in every response:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window (200) |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | Unix timestamp (seconds) when the window resets |
429 response.
Error responses
All errors follow RFC 9457 Problem Details withContent-Type: application/problem+json:
| Field | Description |
|---|---|
type | URI identifying the error type |
title | Short human-readable summary |
status | HTTP status code |
detail | Specific explanation for this occurrence |
Caching
All responses includeCache-Control headers. Cloudflare’s CDN caches responses at the edge using s-maxage, so repeated requests are served from the nearest edge node without hitting the origin.
| Route | CDN cache | Browser cache |
|---|---|---|
/toc, /papers/*, /paragraphs/:ref, /audio/*, /cite, /entities/*, /embeddings/* | 24 hours | 1 hour |
/og/:ref | Permanent (immutable) | Permanent |
/search | 1 hour | 5 minutes |
/paragraphs/random | None | None |
/, /docs, /openapi.json | 1 hour | 5 minutes |
Paragraph ID formats
Many endpoints accept paragraph references in three auto-detected formats:| Format | Example | Structure |
|---|---|---|
| globalId | 1:2.0.1 | partId:paperId.sectionId.paragraphId |
| standardReferenceId | 2:0.1 | paperId:sectionId.paragraphId |
| paperSectionParagraphId | 2.0.1 | paperId.sectionId.paragraphId |
RAG-optimized format
Paragraph endpoints support?format=rag to return a streamlined shape for AI/RAG pipelines:
GET /paragraphs/:ref?format=rag and GET /paragraphs/random?format=rag.