---
title: "Append PDF vault objects onto an existing PDF vault object"
method: POST
path: "/vault/{id}/objects/{objectId}/append"
tags: ["Vault Objects"]
---

# Append PDF vault objects onto an existing PDF vault object

`POST /vault/{id}/objects/{objectId}/append`

## Request

- Base URL: `https://api.case.dev`
- URL: `https://api.case.dev/vault/{id}/objects/{objectId}/append`
- Auth: HTTP bearer

Merges one or more PDF vault objects onto the end of an existing PDF vault object. Sync mode is the default and overwrites the target in place before returning. Async mode returns 202 immediately and reports completion through vault.object.append webhooks. Optionally rewrites citation links in the original target into internal PDF jumps and adds back links on appended pages. The target object’s ingestion state is not affected; appended pages are not searchable.

## Path parameters

- `id` string, required
- `objectId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `mode` 'sync' | 'async': Use async to return immediately and receive completion through vault.object.append webhooks.
  - `appendObjectIds` string[], required: Vault object IDs whose pages will be appended onto the target object, in order. Must not include the target object itself. Sync mode accepts at most 20; async mode accepts at most 1000.
  - `rewriteLinks` boolean: When true, rewrites links in the target object to internal PDF jumps when the URL contains exactly one appended object ID as a standalone query parameter value or decoded path segment.
  - `backLinks` boolean: Adds back links on appended pages
  - `backLinksText` string: Label text for the back link. Used only when backLinks is true and rendered centered at the bottom of each appended page.
  - `clientReference` string: Caller-provided correlation value returned in async responses and webhooks.
  - `bates` object: Optional Bates stamping for appended source PDFs. Numbering is deterministic across appendObjectIds order and does not stamp the target report pages.
    - `enabled` boolean
    - `prefix` string
    - `suffix` string
    - `start` integer
    - `padTo` integer

## Response `200`

Target object updated successfully

- object
  - `id` string
  - `vaultId` string
  - `filename` string
  - `contentType` string
  - `sizeBytes` integer
  - `checksum` string
  - `ingestionStatus` string
  - `pageCount` integer
  - `appendedPageStart` integer: First 1-indexed page added by this append operation.
  - `appendedPageEnd` integer: Last 1-indexed page added by this append operation.
  - `objectId` string
  - `bates` object
  - `metadata` object
  - `downloadUrl` string
  - `expiresIn` integer
  - `createdAt` string, date-time

## Other responses

- `202`: Asynchronous append accepted
- `400`: Invalid request body, more than 20 append objects in sync mode, or unsupported source object format
- `401`: Authentication failed - invalid API key
- `403`: Access denied - API key lacks vault service permissions
- `404`: Vault, target object, or one or more append objects were not found
- `409`: Target object is busy or the idempotency key conflicts with another request

## Changes

- **2026-10-16** `a21d188f4b21`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/casemark/apis/case-dev-api/changes/vault/:id/objects/:objectId/append/post.md)

---

[API](https://skmtc.dev/casemark/apis/case-dev-api.md) - [All operations](https://skmtc.dev/casemark/apis/case-dev-api/llms.txt) - [OpenAPI document](https://skmtc.dev/casemark/apis/case-dev-api/revisions/9a3245c00044?raw)
