Docs

Get started

Choose an endpoint

ISBN vs match vs search vs ids.

Markdown Full spec OpenAPI

Pick one call. Do not search when you already have an ISBN or an id.

You have REST MCP Why
ISBN-10 or ISBN-13 GET /v1/isbn/:isbn lookup_isbn Exact, cached, cheapest
Edition id fds_ed_… GET /v1/books/:id get_book Point lookup
Work id fds_wk_… GET /v1/works/:id get_work Synopsis lives on the work
Author id fds_au_… GET /v1/authors/:id Contributor record
A title to identify the book POST /v1/match resolve_book Ranked candidates; take the first
An author name only GET /v1/authors/search search_authors Not search_books
Genre browse GET /v1/books/search?genre= search_books + genre= Closed facet, not q=epic fantasy
Books like these POST /v1/recommend recommend_books Content similarity, not social taste
Exploratory / filtered browse GET /v1/books/search search_books Not the first choice for a known title
Sync since a cursor GET /v1/changes get_changes Empty on this first release
Parquet dump GET /v1/datasets/books/releases/latest Same Bearer key

Decision rules

  1. ISBN presentlookup_isbn / GET /v1/isbn/:isbn. Never pass an ISBN as q on search.
  2. Stable id present → the matching GET /v1/{books|works|authors}/:id.
  3. User named a book (“the Andy Weir Hail Mary”) → resolve_book / POST /v1/match. Read candidates[0].
  4. Author onlysearch_authors / GET /v1/authors/search.
  5. Genre browsesearch_books with genre=fantasy (not q= as a genre name).
  6. Books like theserecommend_books / POST /v1/recommend. Content similarity.
  7. User is browsing titlessearch_books with filters.
  8. You are syncing a cacheget_changes. On release 2026-09.2 the list is empty.

Ranking note

Search and match fold articles/apostrophes/subtitles, drop study guides and companions when a real title exists, prefer primary over graphic novels unless the query looks graphic, then collapse to one canonical edition for that work.

Check record

9780593135204 / Project Hail Mary / Andy Weir. Expect a description and a non-empty authors array.