Add documents to a bundle
Adds draft documents to the bundle, up to 50 in total. A document’s parties join the bundle’s parties: a party whose email address the bundle already has is matched to it, and a new address becomes a new bundle party. A document without parties gets every bundle party. The bundle’s settings are written onto the added documents. A document is refused with 409 when one email address has a different signing method, verification, role or personal number than in the bundle, or when its signing mode or party order differs from the bundle’s.
Works only while the bundle is a DRAFT. On a sent bundle it returns 409 INVALID_STATE; withdraw it first with POST /api/v1/bundles/{id}/withdraw.
Permission required: EDIT_DOCUMENT on the workspace, and access to every document in the bundle. Requires a Team plan.
Authorizations
API key, e.g. Authorization: Bearer sajn_svc_.... Not scope-limited: acts with its owner's workspace role.
Headers
API version for this request. Without it, the request uses the organization's default version; an organization without a default is pinned to the latest version by its first request.
2026-09, 2026-10 ID of the workspace this request acts in, from GET /api/v1/workspaces. Without it, an API key acts in its default workspace. The token's user must be a member of the workspace; an OAuth token only accepts the workspace it was granted for. A workspace that doesn't exist or can't be reached returns 403 WORKSPACE_ACCESS_DENIED.
Makes retries safe. A retry with the same key and the same request replays the stored response for 24 hours (header Idempotent-Replayed: true); the same key with a different request returns 400.
255Path Parameters
The bundle ID.
Body
Body
Draft documents to add. Each one must be a DRAFT in the workspace that isn't in another bundle, and each of its parties needs an email address.
1 - 50 elements1Response
200
The document ID.
The bundle name, shown as the heading of the bundle page and in the invitation.
DRAFT while you build it, and again after a withdraw. OPEN from the send until every document is resolved, then COMPLETED. CANCELED after a cancel.
DRAFT, OPEN, COMPLETED, CANCELED The subject line of the invitation email.
A message included in every invitation.
The expiry date of the bundle. Every document in it gets the same one.
How the parties sign: PARALLEL, all at once, or SEQUENTIAL, one at a time in the order of each party's signingOrder. The order runs across every document in the bundle.
PARALLEL, SEQUENTIAL Language of the bundle page and the emails to the parties, an ISO 639-1 code such as sv.
sv, en, no, da, fi, de, is, es, fr, it Days between automatic reminders. 0 turns them off, and null uses the default of 3.
-9007199254740991 <= x <= 9007199254740991Whether the documents can still be signed after expiresAt.
Email addresses that receive a copy of each sealed PDF once its document is completed.
How national identity numbers are displayed to signers: FULL, PARTIAL, or NONE. null keeps each document's own setting.
FULL, PARTIAL, NONE, null Verification every party passes before the document opens: PIN, SMS, EMAIL, or an eID such as SE_BANKID. null means none. A party's own openVerification overrides it.
PIN, SMS, EMAIL, SE_BANKID, NO_BANKID_BIOMETRIC, NO_BANKID_HIGH, DK_MITID, DK_MITID_ERHVERV, FI_FTN, NL_IDIN, null Send plain text invitations only, without HTML. null inherits the workspace default.
URL to send a party to once they have signed.
Whether redirectUrl is used.
The number of documents in documents.
-9007199254740991 <= x <= 9007199254740991When the document was created.
When the document was last updated.
The documents in the bundle, oldest first.
The bundle's parties, in signing order.

