docs/features/audiobookshelf.md
Libation can optionally upload each book to your Audiobookshelf server right after liberation. Local files are never deleted - upload only copies them to Audiobookshelf.
Available in Classic (WinForms), Chardonnay (Avalonia), and the CLI liberate command.
Only libraries with media type book are listed (podcast libraries are excluded).
Use the base address of your Audiobookshelf server - the same host (and optional subpath) you use to open the web UI, without a library, book, or other page path.
Examples:
| Setup | Server URL |
|---|---|
| Local default install | http://localhost:13378 |
| Hosted / reverse proxy at root | https://abs.example.com |
| Served under a subpath | https://example.com/audiobookshelf |
Do not paste a browser address for a specific library or book, such as:
http://localhost:13378/library/<id>https://example.com/audiobookshelf/library/<id>/bookshelfLibation calls the Audiobookshelf API at {Server URL}/api/.... If the Server URL already includes /library/..., that request path will be wrong.
Libation will try to strip common browser paths (and a trailing /api) automatically when you connect or save. If connection still fails with 404, double-check that the URL is only the server base (plus subpath, if any).
The API token is stored in Libation's settings. When Libation's token storage is set to encrypted (and the OS secret store is available), the Audiobookshelf token is encrypted the same way as Audible auth tokens. If encryption is not in effect, Settings shows a plaintext warning.
Create an API token in Audiobookshelf under your user account settings (see Audiobookshelf's docs for the current location).
localhost only works when Audiobookshelf is on the same computer as Libation.When auto-upload is enabled and configured:
Upload runs for GUI download/decrypt and for CLI liberate. It does not run on the separate Convert to MP3 queue or libationcli convert - those paths only convert local files.
Auto-upload only ever fires at the moment a book is liberated. To send books you liberated earlier, see Uploading books you already liberated.
Books liberated before Audiobookshelf was set up - or while it was turned off - are never sent by auto-upload. The abs upload command backfills them from the copies already on disk. Nothing is re-downloaded from Audible, and local files are never deleted.
Upload every liberated book:
libationcli abs upload
Upload specific titles:
libationcli abs upload B017V4IM1G
libationcli abs upload --id B017V4IM1G
The command:
skipped counts books you named by ASIN that were not eligible - most often because they are not marked as liberated.Libation does not record which books it has already uploaded, so every run re-checks each candidate against the server. That costs a couple of search requests per book, which is noticeable on a large library but makes repeat runs safe to retry.
Before uploading, Libation searches the target Audiobookshelf library for an existing item with a matching title (and author when available). If a match is found, or Audiobookshelf reports that the destination already exists, Libation skips the upload and continues.
If the Audiobookshelf server is unreachable, the token is wrong, or upload fails for another reason:
This applies to libationcli abs upload too: a failed upload never marks a book as a bad liberate. Because uploading is that command's only job, it also reports each failure on stderr and counts it in the end-of-run summary. It still exits 0, matching Libation's other commands - read the summary and stderr together to see whether a backfill actually succeeded.