---
title: "Save the structured engagement-letter draft"
method: PUT
path: "/client-onboarding/engagement-letter/draft"
tags: ["Client Onboarding"]
---

# Save the structured engagement-letter draft

`PUT /client-onboarding/engagement-letter/draft`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/client-onboarding/engagement-letter/draft`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Saves the allowlisted structured document without publishing or sending it. Requires Firm Owner or Admin access.

## Request body

- ClientOnboardingLoeDraftRequest
  - `document` ClientOnboardingLoeDocument, required
    - `type` 'doc', required
    - `content` ClientOnboardingLoeNode[], required
      - union
        - object
          - `type` 'text', required
          - `text` string, required
          - `marks` ClientOnboardingLoeMark[]
            - union
              - …
        - object
          - `type` 'mergeField', required
          - `attrs` object, required
            - `key` 'firm.name' | 'firm.email' | 'firm.phone' | 'firm.website' | 'client.name' | 'client.title' | 'client.email' | 'business.legalName' | 'package.name' | 'package.services' | 'package.monthlyPrice' | 'package.setupFee' | 'agreement.signingDate' | 'contact.name' | 'contact.title' | 'contact.email' | 'contact.phone', required
            - `label` string
        - object
          - `type` 'hardBreak', required
        - object
          - `type` 'paragraph', required
          - `content` ClientOnboardingLoeNode[]
        - object
          - `type` 'heading', required
          - `attrs` object, required
            - `level` 2 | 3, required
          - `content` ClientOnboardingLoeNode[]
        - object
          - `type` 'bulletList' | 'orderedList' | 'listItem', required
          - `content` ClientOnboardingLoeNode[], required

## Response `200`

Updated firm client-onboarding configuration

- ClientOnboardingConfigurationResponse
  - `configuration` object, required
    - `firmOrganizationId` string, uuid, required
    - `firmSlug` string, required
    - `defaultOnboardingMemberId` string, uuid, nullable, required
    - `stripeIntegrationId` string, uuid, nullable, required
    - `publicContactTitle` string, nullable
    - `publicContactPhone` string, nullable
    - `packages` object[], required
    - `standardQuestions` object[], required
    - `customQuestions` ClientOnboardingCustomQuestion[], required
      - `id` string, uuid, required
      - `prompt` string, required
      - `type` 'short_text' | 'long_text' | 'yes_no' | 'single_select', required
      - `required` boolean, required
      - `options` string[], required
      - `order` integer, required
    - `loeDraft` object, required
      - `document` ClientOnboardingLoeDocument
        - `type` 'doc', required
        - `content` ClientOnboardingLoeNode[], required
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
      - `contentHash` string
      - `updatedAt` string, date-time, nullable
    - `publishedLoe` object, nullable, required
    - `availableOnboardingContacts` object[], required
    - `stripeReadiness` object, required
    - `branding` object, required
    - `readiness` object, required
    - `capabilities` object, required
      - `canManageConfiguration` boolean, required
      - `canManagePackages` boolean, required
      - `canPublishEngagementLetter` boolean, required
      - `canManageBranding` boolean, required

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
