References
References are the core resource in your library. They represent citable sources like journal articles, books, conference papers, websites, datasets, and more.
Each reference has a type field (e.g., article, book, website) that determines its available fields. Common
fields like title, author, and doi appear across most types, while others are type-specific (e.g., journal for
articles, isbn for books).
Beyond bibliographic data, references include organizational metadata folders, labels, starred, and trashed
flags—as well as associated files (PDFs).
To create a reference, only type and title are required. Updates accept any mutable field but must include at least
one; the type of an existing reference cannot be changed.
To add several references at once, POST /references/save accepts any combination of dois (resolved against
Paperpile's metadata service), a bibtex document, and complete references objects — up to 50 per source. Results are
grouped by source and reported per entry: dois keyed by DOI, bibtex by citation key, and references in the same
order as the entries you sent, each created, duplicate, or failed. labels, folders, and note given on the
request apply to everything saved, in addition to anything already set on an individual entry. An entry already in your
library is reported as duplicate rather than inserted; pass skipDuplicates=false to always insert. A request must
carry at least one of dois, bibtex, or references.
A request-level note is appended to whatever note the entry already carries — a BibTeX note field or a note on a
supplied reference object is never overwritten.
References created through POST /references and POST /references/save are marked for a PDF crawl: the next time your
Paperpile browser extension syncs, it looks for each new reference's full-text PDF and attaches it. Pass
findPdfs=false to skip that. The crawl runs after the response is sent and its result is not reported here — it needs
a signed-in extension to be running, and not every reference has a reachable PDF. Poll GET /references/{id}/files to
see whether one arrived.
A DOI the metadata service has no record for fails with doi_not_resolved, while a DOI whose lookup could not be
completed — the service was unreachable or returned an error — fails with reference_lookup_failed, so a transient
outage is distinguishable from a DOI that genuinely has no match and is worth retrying.
Identifier and date fields are validated on both create and update, matching the Paperpile app. Identifiers must be
well-formed — for example, doi like 10.1000/xyz123, pmid as 6 to 8 digits, pmc like PMC1234567, and isbn a
valid ISBN-10 or ISBN-13; other identifiers (arxivid, ismn, zbl, mr, lccn) must match their standard formats.
Date fields (published, accessed, originally_published, conference_date, filed) accept a partial date YYYY,
YYYY-MM, or YYYY-MM-DD, with month 01 to 12, day 01 to 31, and year 2030 or earlier. Invalid values are rejected
with a 400 validation_error rather than being silently dropped; each field's description states its specific rule.
Fields are also checked against the reference's type: a field that doesn't apply to the type (for example booktitle on
an article) is rejected with a 400 rather than silently ignored. Each type's valid fields are those shown in its
schema below.
The reference lists — GET /references and the folder- and label-scoped variants (/folders/{folder_id}/references,
/labels/{label_id}/references) — are the only cursor-paginated lists in this API. Use limit (1–100, default 50)
together with the cursor from the previous response to page through results; cursor is null on the final page. Use
expand (folders, labels) to inflate ID arrays into full objects, and fields to limit the returned columns.
Bulk operations (PATCH /references/bulk, DELETE /references/bulk) return 200 with { "succeeded": <count> }.
To work in a shared library instead of your personal library, see Resource and endpoint conventions.
See the Reference object for the full schema.