docs / books
Books & Authors
Book details, search, authors and free ebooks.
base /books/v14 endpoints
post
/books/v1/book_detail1 creditmerged book record by ISBN-10/13 or OLID (work OL..W / edition OL..M): title/authors/covers/subjects/description/pages/publishers/languages/editions/identifiers/ratings+distribution/reading-log; queried ISBN always injected
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| id | required | — | ISBN-10/13, OR OpenLibrary work id (OL..W), OR edition id (OL..M). |
post
/books/v1/search1 creditsearch books: q OR fielded (title/author/subject/publisher/place/person/isbn/language); rich cards (ratings/reading-log/ebook_access/IA); sort=new|old|rating|want_to_read|editions; pagination
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| q | optional | — | Free-text search. Supply `q` OR at least one fielded param (title/author/subject/publisher/place/person/isbn/language). |
| title | optional | — | Fielded search filter — match on title (OpenLibrary search). Combinable with other fielded params. |
| author | optional | — | Fielded search filter — match on author (OpenLibrary search). Combinable with other fielded params. |
| subject | optional | — | Fielded search filter — match on subject (OpenLibrary search). Combinable with other fielded params. |
| publisher | optional | — | Fielded search filter — match on publisher (OpenLibrary search). Combinable with other fielded params. |
| place | optional | — | Fielded search filter — match on place (OpenLibrary search). Combinable with other fielded params. |
| person | optional | — | Fielded search filter — match on person (OpenLibrary search). Combinable with other fielded params. |
| isbn | optional | — | Fielded search filter — match on isbn (OpenLibrary search). Combinable with other fielded params. |
| language | optional | — | Fielded search filter — match on language (OpenLibrary search). Combinable with other fielded params. |
| sort | optional | new · old · rating · want_to_read · editions | Result ordering (OpenLibrary sort). Common keys shown; other OpenLibrary sort keys also pass through. |
| limit = 20 | optional | 1–100 | Results per page (1-100, default 20); out-of-range values are clamped. |
| page = 1 | optional | 1–1000 | 1-based page number (clamped to 1-1000). |
post
/books/v1/ebook1 creditpublic-domain full-text (Project Gutenberg): query OR id=Gutenberg-id OR ids=batch; filters languages/topic/sort; returns formats{epub/txt/html/kindle/cover}+download_url+read_url; gutenberg.org OPDS fallback when gutendex is down
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Full-text search of Project Gutenberg. Supply `query` OR `id` (Gutenberg id) OR `ids` (batch) OR a filter. |
| id | optional | — | A single Project Gutenberg ebook id (digits). |
| ids | optional | — | Batch of Gutenberg ids (list or comma-separated string). |
| languages | optional | — | Gutendex language filter — comma-separated ISO 639-1 codes (e.g. en, fr). |
| topic | optional | — | Gutendex topic filter (matches bookshelf or subject). |
| sort | optional | popular · ascending · descending | Gutendex ordering. Known keys shown; passed through if Gutendex adds more. |
| mime_type | optional | — | Gutendex mime_type filter (e.g. application/epub+zip, text/plain). |
| author_year_start | optional | — | Gutendex filter: author alive on/after this year. |
| author_year_end | optional | — | Gutendex filter: author alive on/before this year. |
| copyright | optional | — | Gutendex copyright filter: true|false|null (comma-separated to combine). |
| limit = 32 | optional | 1–32 | Results per page (1-32, default 32); out-of-range values are clamped. |
| page = 1 | optional | 1–1000 | 1-based page number (clamped to 1-1000). |
Example request · book_detail
curl -X POST https://api.reefapi.com/books/v1/book_detail \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"id":"9780439023528"}'Response shape
{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}