Skip to main content
POST
Create a package

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-workspace-id
string

The workspace the key was issued for, as returned by GET /api/v1/workspaces. Optional: omitting it acts in the key's workspace, and any other id is rejected with 401.

Body

application/json
title
string
required

The package's title, shown to recipients.

Minimum string length: 1
Example:

"Employment agreement for Jane Ahu"

recipients
object[]
required

The people the package goes to, in signing order. At least one and at most 100.

Required array length: 1 - 100 elements
description
string

A description of the package. Defaults to "Package with N documents" when omitted.

Example:

"Jane's signed agreement ahead of her 12 October start."

signingMode
enum<string>

PARALLEL (the default) invites everyone at once; SEQUENTIAL invites one recipient at a time in the order given. WORKFLOW is refused here, since a workflow is drawn in the app or comes from a template.

Available options:
PARALLEL,
SEQUENTIAL,
WORKFLOW
Example:

"SEQUENTIAL"

accessCode
string

A password every signing recipient must enter before signing, 4 to 64 characters. Stored only as a hash.

Required string length: 4 - 64
Example:

"harbour-4821"

externalId
string

Your own identifier for the package, unique within the organisation. Find the package by it with GET /api/v1/packages/by-external-id/:externalId. A second package with the same value is a 409.

Required string length: 1 - 255
Example:

"crm-deal-48213"

emailSubject
string

The subject line of the invitation email. Omit for the default subject.

Example:

"Please sign your employment agreement"

emailMessage
string

A message from the sender included in the invitation email.

Example:

"Kia ora Jane, please review and sign before your start date. Tom"

reminderIntervalDays
integer

Days between automatic reminders to each recipient who hasn't finished, counted from their invitation. Null or absent sends none.

Required range: x >= 1
Example:

3

scheduledAt
string<date-time>

An ISO 8601 time to send the package automatically. Creates it as SCHEDULED rather than DRAFT, and needs at least one document.

Example:

"2026-10-01T20:00:00.000Z"

expirationDays
integer

Days the package stays open for signing, counted from when it is sent. Null or absent means it never expires.

Required range: x >= 1
Example:

30

expiryWarningDays
integer

Days before expiry at which recipients who haven't finished are warned. MUST be fewer than expirationDays.

Required range: x >= 1
Example:

5

tags
string[]

Tag names to attach to the package.

A tag name. Tags the organisation does not have yet are created.

Example:
metadata
object

Custom field values keyed by custom field key. Every key must be a live custom field that applies to this package. An empty string clears a value. Unknown keys are rejected with 422, and so are missing required values when scheduledAt is set.

Example:
documents
object[]

The PDFs to attach. Each comes back with an upload URL for its bytes. May be empty for a draft that takes its documents from the library through POST /api/v1/packages/:packageId/library-documents; a scheduled package needs at least one.

Response

Success

data
object
required