---
title: "Create an audiobook"
method: POST
path: "/v1/reader/audiobooks"
tags: ["reader"]
---

# Create an audiobook

`POST /v1/reader/audiobooks`

## Request

- Base URL: `https://api.ditto.audio` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ditto.audio/v1/reader/audiobooks`
- Auth: HTTP bearer

Send an `id` to choose your own (an ISBN, your primary key); omit it and one is generated. Creating with an id that already exists updates it — identical to `PUT /v1/reader/audiobooks/{id}`.

## Request body

- UpsertAudiobookDto
  - `id` string: Your own stable id for this audiobook (an ISBN, a uuid, your primary key). Ignored on PUT — the path wins. Omit on POST and one is generated.
  - `title` string, required
  - `author` string
  - `format` string: Source document type.
  - `chapterCount` number: How many chapters the source has.
  - `contentHash` string: sha-256 of the source file, lowercase hex. Enables upload dedup.
  - `coverImageUrl` string: https:// or data:image/ URL.

## Other responses

- `400`: Invalid title/cover/hash.

---

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