# Public API Base URL `https://wp.spboucher.ai/api/v1` — read-only, no authentication, CORS `*`, 120 requests/min/IP (60 for `/search`). OpenAPI: `/api/v1/openapi.json`; human page: `/api/docs`. | Endpoint | Notes | |---|---| | `GET /papers` | filters `q, year, domain, topic, author, keyword, method, dataset, series, pub, pdf=1`, `sort=recent|revised|number|title|year|views|downloads`, `page`, `per_page` (≤100) | | `GET /papers/{id}` | id = `wp38`, `WP38`, `firc2`… full record incl. versions and related papers with explanations and `inferred` flags | | `GET /papers/{id}/citation.{bib|ris|json}` | citation exports | | `GET /search?q=&mode=hybrid|lexical|semantic&limit=` | fused retrieval with matched signals and highlighted passages | | `GET /stats` · `/topics` · `/methods` · `/datasets` · `/authors` · `/series` · `/timeline` · `/graph?kinds=` | discovery data | Other machine endpoints: `/api/oai` (OAI-PMH 2.0, `oai_dc`, sets = series), `/feed.xml` (RSS 2.0), `/sitemap.xml`, `/api/files/{fileId}/{name}.pdf` (Range, ETag = SHA-256, `X-Checksum-SHA256`), `/api/preview/{slug}.png`, `/api/health`. Every paper page embeds Highwire Press (`citation_*`), Dublin Core (`DC.*`) meta tags and JSON-LD `ScholarlyArticle`.