---
title: "Add to the reading queue"
method: POST
path: "/api/books/to-read"
tags: ["books"]
---

# Add to the reading queue

`POST /api/books/to-read`

## Request

- Base URL: `https://leafle.org` (the document declares no server; this is the origin it was published from)
- URL: `https://leafle.org/api/books/to-read`
- Auth: HTTP bearer

**Access: write token.**

Append a book to the queue, optionally with its recommendation rationale in `why`. An already-queued book keeps its position. Returns 409 if the book is already read.

## Request body

- ToReadIn
  - `title` string, required
  - `author` string, nullable
  - `why` string, nullable
  - `source` 'picks' | 'daily-find'
  - `reader_id` integer, nullable

## Response `200`

Successful Response

- QueueChanged: POST /api/books/to-read and /api/books/{id}/queue-position: where the book now sits in the to-read queue.
  - `ok` boolean, required
  - `id` integer, required
  - `position` integer, required

## Other responses

- `401`: Missing or unusable credential.
- `403`: Insufficient token scope or the reader is outside your account.
- `409`: Conflicting state: a turn is running, the book is already read, or the library offer has been settled.
- `422`: Validation Error

---

[API](https://skmtc.dev/leafle/apis/leafle-api.md) · [All operations](https://skmtc.dev/leafle/apis/leafle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/leafle/apis/leafle-api/revisions/f2e56cb74495?raw)
