API reference
Resolve a title
POST /v1/match
Ranked candidates for a messy title.
Turn a messy title (and optional author or ISBN) into ranked edition candidates.
MCP: resolve_book { "title": "Project Hail Mary", "author": "Andy Weir" }
When to use
- The user named a book
- You have a title string from another system and need a stable
fds_ed_…
If you already have an ISBN, call ISBN lookup (or pass isbn here — it short-circuits). Do not use search as the first choice for a single known title.
Request
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Project Hail Mary","author":"Andy Weir","limit":5}' \
https://api.fulldatasets.com/v1/match
| Body | Required | Notes |
|---|---|---|
isbn |
one of isbn or title |
If valid and found, returns one exact_isbn candidate (score 1) |
title |
one of isbn or title |
Required when isbn is absent |
author |
no | Rank filter only. Not AND’d into title FTS |
kind |
no | primary | graphic | any. Default prefers the novel over comics / guides |
limit |
no | Default 10, max 25 |
Response `200`
{
"candidates": [
{
"entity_id": "fds_ed_37306635333664393039",
"entity_type": "edition",
"score": 1,
"match_method": "exact_isbn",
"book": {
"id": "fds_ed_37306635333664393039",
"title": "Project Hail Mary",
"authors": ["Andy Weir"]
}
}
]
}
match_method is exact_isbn or fuzzy_title_author. Prefer candidates[0].
Two-phase resolve: equality on folded title_key / title_normalized variants, then title-only websearch_to_tsquery. Author is a filter, not an FTS AND (so a missing author name cannot empty the result).
Same collapse as search: prefer primary, drop study guides and companions when a real title exists, one canonical edition per work. Pass kind=graphic (or put “graphic novel” in the title) when you want the comic.
Match hits Postgres (not the 24h point-lookup cache).
Errors
| Status | code |
When |
|---|---|---|
400 |
bad_request |
Invalid JSON, or neither title nor isbn |
See also
- Search — browse / filters
- Recommend — similar works from seeds
- Choose an endpoint