API

JSON endpoints for the catalog. No authentication required. Responses are UTF-8 JSON.

Endpoints

Search parameters

All parameters are optional query string values on /api/search.

q
Full-text query. Terms are prefix-matched across title, series, number, branch, collection, year, and path.
branch
Filter by branch: army, usmc, navy, af, joint, editions.
series
Filter by series code, e.g. fm, atp, adp, mcwp.
collection
Filter by collection, e.g. legacy, atp, editions.
year
Filter by four-digit year, e.g. 2024.
ymin / ymax
Inclusive year range bounds, e.g. ymin=1980&ymax=2000.
num
Substring match on the publication number, e.g. num=10-286.
sort
newest, oldest, or title. Default is relevance for text queries, title otherwise.
page
Page number, 1-based. Default 1.
pageSize
Results per page, max 200. Default 50.

Examples

Search

curl "https://milpubs.quad4.io/api/search?q=radio+communications&branch=army&pageSize=5"

Publication

curl "https://milpubs.quad4.io/api/pubs/fm-10-286-1987-01"

Facets and stats

curl "https://milpubs.quad4.io/api/facets"
curl "https://milpubs.quad4.io/api/stats"

Specification

Machine-readable spec: openapi.yaml. MCP (Model Context Protocol) endpoint for AI agents: /mcp. Health checks: /healthz and /readyz.

Rate limit: 240 requests per minute per IP on API and page routes. Static assets and health endpoints are unthrottled.