---
title: "One book in full"
method: GET
path: "/books/{slug}"
---

# One book in full

`GET /books/{slug}`

## Request

- Base URL: `https://greenlitbooks.com/api/v1`
- URL: `https://greenlitbooks.com/api/v1/books/{slug}`
- Auth: none required

The full record for one book: metadata, chapter list, total word count, free-excerpt availability, and related reading (guide hub, field notes, compare pages, series neighbors).

## Path parameters

- `slug` string, required

## Response `200`

The book

- BookDetail: The /books/{slug} response body.
  - `meta` Meta: Envelope on every response.
    - `version` 'v1'
    - `generatedAt` string, date-time: When this snapshot was produced. Static endpoints stamp it at deploy; search stamps it per request.
    - `source` string, uri
    - `docs` string, uri
    - `openapi` string, uri
  - `book` Book: One book. No publication date, page count, or ISBN: the catalog carries no verified source for them and nothing is invented. Amazon URLs are clean /dp/ links; every listed book is buyable there and free to read with Kindle Unlimited when kindleUnlimited is true.
    - `slug` string
    - `title` string
    - `subtitle` string, nullable
    - `author` string, nullable
    - `series` object, nullable
      - `name` string
      - `slug` string
      - `position` integer: 1-based reading order within the series.
    - `imprint` string, nullable
    - `readerLevel` 'beginner' | 'operator' | 'engineer' | 'leader'
    - `flagship` boolean
    - `descriptions` object
      - `hook` string, nullable: A quotable opening line.
      - `oneLiner` string, nullable: Short description.
      - `targetReader` string, nullable: Who the book is for.
      - `namedConcept` string, nullable: The named idea the book teaches.
    - `concept` object, nullable: The question-shaped concept page for this book.
      - `name` string
      - `slug` string
      - `question` string
      - `url` string, uri
    - `amazon` object
      - `kindleAsin` string, nullable
      - `paperbackAsin` string, nullable
      - `kindleUrl` string, uri, nullable
      - `paperbackUrl` string, uri, nullable
    - `prices` object
      - `ebook` Price, nullable: Price for one format. amount is parsed from the display string.
        - `display` string
        - `amount` number, nullable
        - `currency` string, nullable
      - `paperback` Price, nullable: Price for one format. amount is parsed from the display string.
        - `display` string
        - `amount` number, nullable
        - `currency` string, nullable
    - `kindleUnlimited` boolean
    - `coverImage` string, uri, nullable
    - `url` string, uri: Canonical book page.
    - `apiUrl` string, uri
    - `markdownUrl` string, uri: Plain-markdown twin of the book page.
    - `readUrl` string, uri, nullable: Free chapter one, when available.
    - `categories` string[]
    - `companionRepo` string, uri, nullable: Public companion code repository, when the book ships code.
  - `chapters` object[]
    - `number` integer
    - `title` string
  - `totalWords` integer, nullable
  - `claims` object, nullable: Quotable claims from the book with the sources behind them, or null for a book with no ledger yet. Each item's `url` is an anchor on the book page that resolves to that exact claim: quote `claim`, cite `url`.
    - `lastReviewed` string, date
    - `items` object[]
      - `id` string
      - `chapter` integer
      - `claim` string
      - `verbatim` boolean: True when `claim` is the book's own sentence, word for word.
      - `basis` 'external' | 'argument' | 'method' | 'author-experience': What kind of statement this is. A published result, a position the book argues, a method you run yourself, or something the author reports happening on his own system. They are not interchangeable and should not be quoted as if they were.
      - `basisLabel` string
      - `howToQuote` string
      - `basisNote` string, nullable
      - `anchor` string
      - `url` string, uri
      - `sources` object[]
        - `title` string
        - `authors` string, nullable
        - `publisher` string, nullable
        - `date` string, nullable
        - `url` string, uri
        - `establishes` string
        - `doesNotEstablish` string: What the claim would be overreaching to draw from this source. Read it before leaning on the citation.
        - `lastChecked` string, date
        - `checkNote` string, nullable
  - `excerpt` object: The free chapter-one excerpt, when published.
    - `available` boolean
    - `chapterTitle` string, nullable
    - `words` integer, nullable
    - `minutes` integer, nullable
    - `url` string, uri, nullable
    - `markdownUrl` string, uri, nullable
  - `related` object
    - `guide` object, nullable
      - `title` string
      - `slug` string
      - `url` string, uri
    - `fieldNotes` object[]
      - `title` string
      - `slug` string
      - `description` string
      - `url` string, uri
    - `compares` object[]
      - `title` string
      - `slug` string
      - `url` string, uri
    - `seriesNeighbors` object
      - `previous` BookLink: Compact pointer to a book, with its reading-order position in its series.
        - `slug` string
        - `title` string
        - `position` integer: 1-based reading order within the series.
        - `url` string, uri
        - `apiUrl` string, uri
      - `next` BookLink: Compact pointer to a book, with its reading-order position in its series.
        - `slug` string
        - `title` string
        - `position` integer: 1-based reading order within the series.
        - `url` string, uri
        - `apiUrl` string, uri

## Other responses

- `404`: Unknown slug

---

[API](https://skmtc.dev/greenlitbooks/apis/greenlit-books-api.md) · [All operations](https://skmtc.dev/greenlitbooks/apis/greenlit-books-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greenlitbooks/apis/greenlit-books-api/revisions/7c8b9f94ca1e?raw)
