Hudson Street Library implements RFC 9727 for API discovery. You can discover the available APIs in two ways:
GET https://hudsonstreetlibrary.com/.well-known/api-catalog
Each HTML page includes this link element:
<link rel="api-catalog" type="application/linkset+json" href="/.well-known/api-catalog">
Note: HTTP Link headers are not available because GitHub Pages does not support custom response headers. The well-known URI and the HTML link element work.
https://hudsonstreetlibrary.com/data/books.json
This endpoint returns the complete catalog of 2028 book records.
Format: application/json (~1.6MB)
Schema: /schemas/book-collection/
curl https://hudsonstreetlibrary.com/data/books.json | jq '.[0]'
https://hudsonstreetlibrary.com/cms/data/books.csv
This endpoint returns the full catalog as CSV. Each record has 36 columns.
Format: text/csv
Schema: /schemas/book-csv/
curl https://hudsonstreetlibrary.com/cms/data/books.csv | head -5
https://hudsonstreetlibrary.com/cms/data/libraryCollections.json
This endpoint returns the thematic collection groupings.
Format: application/json
Schema: /schemas/collections/
curl https://hudsonstreetlibrary.com/cms/data/libraryCollections.json | jq '.'
GitHub Pages serves all endpoints as static files. No rate limits apply beyond the standard GitHub CDN throttling. When the library adds new books, the next deployment updates the data.
CORS: All endpoints support cross-origin requests.
Caching: GitHub Pages serves the files with standard HTTP cache headers. The catalog usually updates weekly.
To ask a question about the API or to report a problem, open an issue on the project repository.