Documentation

Everything you need to publish, gate, and sell your audiobooks and audio courses on Storia.

Getting started

Storia is passwordless. Open the publisher console, enter your email, and click the magic link we send you — that signs you in and creates your account in one step. Sessions last 60 days per device. The first time, you'll accept the Terms of Service before you can publish.

Creating & publishing a title

  1. Create a title from the dashboard (audiobook or audio course).
  2. Upload files — audio up to 10 GB each. Large files upload in parts straight to storage, so nothing stalls. We extract duration, chapters, cover art, and tags (author, narrator, description, year, genre, series) and use them to fill any details you left blank. You can also attach an ebook (EPUB/PDF/MOBI).
  3. Or import a package — have a W3C Audiobooks .lpf file (the standard audiobook distribution format)? Import it and Storia unpacks the manifest to create every chapter, in order, plus the cover, title, author, narrator, and language in one step.
  4. Activate hosting — a flat $25 for 10 years per title (this is the only fee Storia charges you).
  5. Publish. Your title goes live at /p/your-slug with its own installable, offline player and a social-friendly link preview.
Streaming needs a "faststart" layout (the MP4 moov atom at the front). Storia relocates it for you in the background; until then the file is download-only.
Everything stays editable. Publishing doesn't lock anything: you can add, replace, remove, reorder and re-time chapters on a live title, and edit details, cover, sample and the accompanying ebook, whenever you like. Changes take effect immediately for listeners, and the canonical publication.json (the W3C Audiobooks / LPF manifest) is rewritten to match. It's your book — fix a typo, swap a bad take, add a bonus chapter.
Certifying your rights. Before a title goes live you'll be asked to confirm, for that title, that you hold the rights to publish and distribute it — the audio, the cover, and any accompanying ebook. We record when you did and what you agreed to.

Preview before you publish. While you're signed in, you can open your own title's player at /p/<slug> and play everything — even an unpublished draft or a gated title — without a device token or purchase. Only you (the owner) see it; everyone else still needs it published and, for gated titles, an access link.

Free sample (optional). Each title can carry a short audio sample that plays on its paywall before purchase. We try to extract one automatically from your first file during upload; you can also upload or replace it from the console, or remove it. The sample is served openly (even for a gated title), so listeners can try before they buy.

Get discovered (optional). Tick "List in the public catalogue" on a published title and it appears on Discover, where listeners who like the Storia experience can find more content. It's off by default — your title stays unlisted until you opt in.

Public vs. gated access

Each title is either public (anyone with the link can listen) or gated (a listener needs an access link). Gated titles show a paywall page — deliberately not a PWA, so a browser never offers to install an app behind a paywall — with your cover, description, a buy option, and a contact email for lost-access recovery.

Selling access with your own processor

Connect your own payment account so buyers pay you directly — no funds pass through Storia, and there's no revenue share. On a confirmed payment we mint a single-use access link and deliver it to the buyer.

Link mode (recommended — no API key)

  1. Create a hosted payment link/product in your processor (Polar, Stripe, Square, Lemon Squeezy, or Paddle).
  2. Add the webhook URL shown in the console to your processor and paste its signing secret back into Storia.
  3. Paste your payment link and set a price. That's it — buyers go to your checkout and get their access link by email after paying.

Instant unlock (optional). Set your payment link's success / redirect URL to the claim URL shown in the console. Most processors (Polar, Stripe, Lemon Squeezy, Paddle, Square) append their order/checkout id when they send the buyer back, and Storia uses it to unlock the device immediately — no need to open the email. If a processor doesn't redirect, the emailed link still works.

API mode (seamless redirect)

Provide your processor's API key and Storia creates each checkout itself, so buyers are redirected straight back into the player after paying. PayPal uses this mode.

ProcessorLink modeYou provide
Polar, Stripe, Square, Lemon Squeezy, PaddleYes (default)Payment link + webhook secret
PayPalNo (API mode)Client ID, secret, webhook ID
Your credentials are stored per title and never shown again after you save them. Storia only listens for the payment — it never holds your money.

Combined "choose your edition" pages (optional)

From the console you can group several of your titles into a collection — one shareable page at /c/your-slug that lets a buyer choose between them. Each title shows its own free sample and links to its own separate checkout, so this is ideal for variants (different narrators, languages, or editions) without merging them into one publication. Your titles stay completely independent; only published ones appear on the page.

Sharing & device tokens

Access to a gated title is a device token (stored on the listener's device). You can mint single-use share links yourself, and optionally give a recipient a re-share budget so they can pass access on — the budget shrinks as it's delegated, so it can't run away. If a listener runs out of devices they can transfer one to free a slot. Revoke any token anytime from the console.

Where a title can be heard

Audio rights are usually territorial, so each title can be limited to the countries you hold rights in — or made available everywhere except a few. Set it under Where it can be heard in the console: choose the restriction, pick the countries, save.

Listeners outside the allowed set get a short page explaining that the publisher hasn't made the title available in their region (with your contact email, if you've set one) rather than a dead end or a "not found". The restriction covers the player, the audio itself, the ebook and the paywall — there's no point selling access we won't deliver. You, as the owner, can always reach your own title from anywhere, so you can check it while travelling.

Location comes from the network edge, and listeners whose country can't be determined are let through rather than locked out. Treat it as a good-faith boundary that satisfies a rights obligation, not as a lock: anyone using a VPN can route around it.

What listeners get

  • An installable, offline player — download once, listen anywhere, no account.
  • Resume across devices — optional cloud progress sync within their access tree.
  • A built-in ebook reader — add the companion EPUB and listeners can read it in-app (table of contents, font size, saved position). If the EPUB includes Media Overlays (EPUB 3 read-along, the format Apple Books uses — a SMIL track that syncs text to embedded audio), the reader highlights each line as it's narrated.
  • Switch between listening and reading — the reader remembers which mode they were last in and reopens there. Read-along stays exactly in sync; for plain listening↔reading, switching offers an estimated, opt-in jump to the matching chapter in whichever direction they switched (matched by chapter name, proportional fallback).
  • A free sample — for gated titles, hear a short preview on the paywall before buying.
  • Extras & reviews — download the accompanying ebook and leave a rating.

Read-along sync file

Read-along ("word sync") lines your ebook's text up with the narration, so the reader highlights each phrase as it's spoken. Storia gets that alignment in one of three ways, depending on what you upload:

  • EPUB with Media Overlays — we generate the sync file for you from the book's SMIL overlays. Nothing to do.
  • LPF package — the sync file travels inside the package as a resource.
  • M4B (or plain audio files) — an M4B carries chapter marks but no word-level timing, so there's nothing to derive. Upload a sync file yourself if you have one.

The format is plain JSON. Times are in seconds, relative to the start of the track they reference — not to the whole book — and track is a 1-based position in the reading order:

{
  "type": "storia-sync",
  "version": 1,
  "sections": [
    {
      "href": "OEBPS/ch01.xhtml",
      "track": 1,
      "cues": [
        { "id": "w1", "start": 0,    "end": 0.42 },
        { "id": "w2", "start": 0.42, "end": 0.98 }
      ]
    }
  ]
}
  • href — the spine document inside your EPUB. Matched on the full path, falling back to the filename, so either works.
  • track — which chapter's audio these cues belong to (1 = first chapter in the reading order).
  • id — the id attribute of the element to highlight in that document.
  • start / end — seconds into that chapter's audio. Cues must be in order and must not overlap; touching (end equal to the next start) is fine.
  • text — optional, ignored by the player. Handy when authoring by hand.

Granularity is up to you: one cue per word gives a karaoke effect, one per sentence or paragraph is calmer and makes a much smaller file. Anything malformed is rejected on upload with the specific problem, so you can fix it and try again.

FAQ

Does Storia take a cut of my sales?

No. You only pay the flat hosting fee. Sales go to your own processor (you pay only its fees).

Do my buyers need an account?

No. Access is a device token delivered by link or email — no sign-up.

Can I move my files later?

Yes — you upload your own files and can download or delete them anytime.

Open the console →