Series and Hardcover
Series let the Series tab group a saga in reading order. Calibre provides them when it can; for everything else, PandaReader can ask three public catalogues, using your own credentials where one is needed.
Where series come from
- Calibre. If the book's source is a Calibre library, its series and index come from
metadata.dband nothing else is consulted. - Online lookup. For books without Calibre series data, the app searches by title and author on the sources below, in the order you set, and stops at the first that answers.
| Source | Needs a key | How it is used |
|---|---|---|
| Hardcover | Yes, your own | GraphQL search for the book, returning its series name and position. Best coverage for current fiction. |
| Open Library | No | Search API; series data where Open Library has it. Also provides the "View on Open Library" link. |
| Google Books | No | Volumes API has no series field, so the app parses patterns like "(Series, #3)" out of Google's title. Last resort. |
Hardcover API key
Hardcover keys created since August 2026 are scoped. PandaReader needs read:catalog to search books and series, and optionally read:me:content so Save & test can show your username. Each user creates their own key on their own Hardcover account; the app never ships a shared key.
- Open App settings in PandaReader and find Hardcover API.
- Tap "Create an API key on Hardcover". It opens Hardcover's new-key form in your browser with both scopes already ticked. Sign in to Hardcover if asked and create the key.
- Copy the key and paste it into the Hardcover API token field.
- Tap Save & test. The app runs a real query and reports the result.
If you prefer to make the key by hand, go to hardcover.app/account/api and tick read:catalog and read:me:content.
Save & test results
| Message | Meaning |
|---|---|
| Connected as name | Both scopes work. |
| Connected (catalog only) | The key can search but lacks read:me:content. Series lookups work fine. |
| Key is missing the scope read:catalog | Create a new key with that scope; lookups cannot run without it. |
| Invalid or expired key | Hardcover rejected it (HTTP 401). Create a new key. |
| Rate limited, wait N seconds | Hardcover's limit was hit. The app pauses all Hardcover calls until it clears. |
Lookup order
In App settings, Series Lookup Order lists the three sources with arrows to reorder them. A source that is unavailable, such as Hardcover with no key saved, is skipped. Lookups run in the background while the shelf is open and only for books that still have no series.
Caching and rate limits
- A found series is cached on the device permanently, as is a definite "this source has no series for this book". Those books are never asked about again.
- Failures are never cached. An expired key, a missing scope, a rate limit or a network error leaves the book unresolved so it is retried on a later run.
- Hardcover requests are spaced at least 1.1 seconds apart. If Hardcover answers with a
Retry-Afteror an exhaustedRateLimitbucket, every Hardcover call app-wide pauses until the window resets. Free accounts allow 60 requests a minute and 5,000 a day, which is plenty for a one-time pass over a large library.
Links on the detail page
When a book has been found on Hardcover or Open Library, its detail page gains a View on Hardcover or View on Open Library button that opens the book's page in your browser. These links are looked up on demand and remembered.