POST /vault/:vaultId/assemblies builds new PDF volumes from pages of PDFs that
are already in a vault. You send a manifest that says which pages go where;
Case.dev assembles them exactly as written. There is no AI in this step: the
same sources and manifest always produce byte-identical volumes.
Use it to turn a large record set into a production:
- reorder and combine pages from many source PDFs
- split the result into volumes
- add a bookmark outline to each volume
- stamp continuous Bates numbers across every volume
PDF assembly is in early access. Requests from organizations that are not enabled return
403.
Contact support to enable it.Create an assembly
cURL
202 Response
ingestionStatus: "processing". Use
the returned objectIds to track the volumes.
The manifest
Sources
sources lists the vault PDFs to draw pages from. Page ranges refer to a source by its
index in this list, starting at 0. Each object may appear once.
A
searchable_pdf source must have finished ingestion. If its searchable copy does not exist
yet, the request fails with 409 and code SEARCHABLE_RENDITION_MISSING. Ingest the source
first, or request original.
Volumes
Each volume becomes one output PDF.
Page ranges are
{ "source", "start", "end" }. Pages are 1-based and inclusive, so
{ "source": 0, "start": 1, "end": 3 } is the first three pages of the first source. Ranges can
come from any source in any order, and a page can appear more than once; each copy gets its own
Bates number.
Outline
outline is a tree of bookmarks. Each entry has a title, a page, and optional children.
page is 1-based within that volume, not within a source. Outlines can nest up to 8 levels.
Top-level entries open expanded and deeper entries start collapsed.
Internal links between pages that are both in the same volume keep working and point at the new
page. Links to pages that were left out, or that landed in another volume, are removed. Web links
are kept.
Bates numbering
bates numbers every output page once, continuing from one volume to the next.
Bates text must be printable ASCII. Labels are drawn on the page’s visible area along the edge a
reader sees as the bottom, including rotated and cropped pages.
Other options
Limits
Each assembly has 30 minutes to finish.
Track completion
Subscribe tovault.assembly.completed and vault.assembly.failed (see
Vault Webhooks). Event payloads carry IDs and counts only, never titles or
filenames.
vault.assembly.completed data
cURL
200 Response
status is queued, processing, completed or failed. Volumes are published together: either
every volume is available or none is.
After completion
Completed volumes haveingestionStatus: "uploaded". They can be downloaded, but they are not
indexed for search automatically. To make a volume searchable, call
POST /vault/:vaultId/ingest/:objectId.
If an assembly fails, its reserved volumes are marked failed.
Errors
A failed assembly reportserror:
sourceIndex and volumeIndex point into your manifest’s sources and volumes.
Retry a failed assembly with a new Idempotency-Key. Sending the same key and body again returns
the original assembly; the same key with a different body returns 409.
