Skip to main content
POST
Create a retainer pack

Authorizations

Authorization
string
header
required

Authenticate with a Bearer token: API key, OAuth token, or session token.

Body

application/json
organization_company_id
string<uuid>
required

Client company the pack is sold to. The company must be marked as a client.

name
string
required

Pack name shown on the company page, 1 to 200 characters (e.g. "Q4 2026 GTM pack").

Required string length: 1 - 200
currency_code
string
required

ISO 4217 currency code of every retainer in the pack (e.g. USD). Can't change once a retainer is claimed.

Required string length: 3
fee_status_id
string<uuid>
required

Status of the pack invoice, shared by every retainer in the pack. Get IDs from GET /v1/fee-statuses. Only admins can move a paid pack back to an unpaid status.

retainer_count
integer
required

Number of retainers in the pack, 1 to 100. To top up an existing pack, send add_retainers instead. Lowering it removes open retainers from the end and can't go below the claimed retainers.

Required range: 1 <= x <= 100
amount_each
number
required

Amount of each retainer, 0 or more. A change applies to open retainers; claimed retainers keep their amount.

invoice_number
string | null

Invoice number for the whole pack (one invoice per pack), at most 100 characters. Send null on update to clear it.

expected_date
string<date> | null

Invoice date (YYYY-MM-DD), shared by every retainer in the pack. Send null on update to clear it.

When every paid retainer is claimed, new hires at this client still link to the pack with a 0 retainer and are billed the full fee. Defaults to true.

firm_commission_percent
number

Percent of each open retainer the firm keeps before team credit is split, 0 to 100. Defaults to 0.

default_split
object[]

Who gets credit for each retainer. Send an empty list for no split, otherwise the percentages must total 100. Credit per retainer is the retainer amount minus the firm commission, times each person's percentage. Applies to open retainers; a claimed retainer keeps the split it was claimed with. Only admins can change the split of a paid pack. Defaults to an empty list.

Response

Retainer pack created

success
enum<boolean>
required
Available options:
true
data
object
required