---
title: "All live books, with optional series and audience filters"
method: GET
path: "/books"
---

# All live books, with optional series and audience filters

`GET /books`

## Request

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

Every live book as structured JSON, in curated series order and reading order within each series. Small enough (fewer than 100 records) that there is no pagination. Optional series and audience parameters filter the list in the same call.

## Query parameters

- `series` 'the-operators-ai-library' | 'the-ai-native-builder-canon' | 'understand-and-trust-ai' | 'build-agents-you-can-trust' | 'lead-govern-and-apply-ai' | 'ai-and-agentic-engineering' | 'the-claude-code-ladder' | 'the-agent-builders-workshop' | 'the-two-doors' | 'forward-deployed-engineering-handbooks' | 'the-complete-grok-bot-guide' | 'the-omarchy-books' | 'the-personal-ai-computer'
- `audience` 'beginner' | 'operator' | 'engineer' | 'leader'

## Response `200`

The book list, filtered when parameters are given

- object
  - `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
  - `query` object
    - `series` string, nullable
    - `audience` string, nullable
  - `count` integer
  - `books` Book[]
    - `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.

## Other responses

- `400`: Unknown series or audience value

---

[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)
