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, a food name / GTIN into ranked food candidates, or a film / show title (+ year) into ranked title candidates. Same route for all three datasets.
MCP: resolve_book { "title": "Project Hail Mary", "author": "Andy Weir" } · resolve_food { "name": "Tillamook cheddar", "gtin": "00072830007115" }
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 |
|---|---|---|
dataset |
no | books, food, or movies_tv. Inferred from isbn/title vs gtin/name vs imdb_id/film-TV kind when omitted |
isbn |
books: one of isbn or title |
If valid and found, returns one exact_isbn candidate (score 1) |
title |
books: 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 |
gtin |
food: one of gtin or name |
Short-circuits to exact_gtin |
name |
food: one of gtin or name |
Required when gtin is absent |
brand |
no | Food rank filter |
imdb_id |
movies_tv: one of imdb_id or title |
Short-circuits to exact_imdb |
year |
no | movies_tv: ±1 tolerance, boosts exact year |
limit |
no | Default 10, max 25 |
POST /v1/foods/match is an alias for the food body. POST /v1/titles/match is an alias for the movies_tv body (films and series only). Pass kind: "film" or kind: "series" with dataset: "movies_tv" to narrow.
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].
Resolve: popular-prefix and folded title_normalized equality first, then title-only websearch_to_tsquery only when two content words remain. 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 none of title / isbn / name / gtin |
See also
- Search — browse / filters
- Recommend — similar works from seeds
- Choose an endpoint