---
title: "Prepare cap table lines"
method: POST
path: "/captable/prepare"
tags: ["captable"]
---

# Prepare cap table lines

`POST /captable/prepare`

## Request

- Base URL: `https://localhost:4410/api/v1`
- URL: `https://localhost:4410/api/v1/captable/prepare`
- Auth: HTTP bearer

Drafts cap table lines in one call, each Unconfirmed until an officer confirms it: setup lines (a share class, an option plan, a pool change or a 409A), stock issuances, option grants, cancellations and documents linked to lines, or an import of a spreadsheet, a Pulley or Carta file or an OCF package, from upload_id (document_upload_start with purpose "captable_import") or an archived file. Holders are found by email or name, or added. Quote the document each value came from in quotes; the line is marked "Entered by agent" and the officer sees the quotes. Returns each line with the facts that need a reason, the import's differences from the file, and the next step. A retry with the same input drafts nothing twice.

## Request body

- object
  - `setup` union[]
    - union
      - object
        - `type` 'share_class', required
        - `name` string, required
        - `kind` 'common' | 'preferred'
        - `authorized` integer
        - `par_value` string
        - `conversion_ratio` string
        - `liquidation` string
        - `effective_on` string, date, required
        - `document_id` string
        - `quotes` object[]
          - `field` string, required
          - `quote` string, required
      - object
        - `type` 'option_plan', required
        - `name` string, required
        - `reserved` integer, required
        - `class_entry_id` string
        - `effective_on` string, date, required
        - `document_id` string
        - `quotes` object[]
          - `field` string, required
          - `quote` string, required
      - object
        - `type` 'pool_change', required
        - `plan_entry_id` string, required
        - `shares` integer, required
        - `effective_on` string, date, required
        - `document_id` string
        - `quotes` object[]
          - `field` string, required
          - `quote` string, required
      - object
        - `type` 'valuation', required
        - `price_per_share` string, required
        - `provider` string
        - `effective_on` string, date, required
        - `document_id` string
        - `quotes` object[]
          - `field` string, required
          - `quote` string, required
  - `issuances` object[]
    - `holder` union, required
      - object
        - `party_id` string, required
      - object
        - `name` string, required
        - `email` string, email
        - `kind` 'individual' | 'entity'
        - `address` object
          - `lines` string[], required
          - `country` string, required: ISO 3166-1 alpha-2
          - `region` string
    - `class_entry_id` string
    - `shares` integer, required
    - `issue_date` string, date, required
    - `price_per_share` string
    - `consideration` 'cash' | 'services' | 'assignment_of_assets'
    - `vesting` object
      - `start` string, date
      - `months` integer
      - `cliff_months` integer
    - `security_id` string
    - `document_id` string
    - `quotes` object[]
      - `field` string, required
      - `quote` string, required
  - `grants` object[]
    - `holder` union, required
      - object
        - `party_id` string, required
      - object
        - `name` string, required
        - `email` string, email
        - `kind` 'individual' | 'entity'
        - `address` object
          - `lines` string[], required
          - `country` string, required: ISO 3166-1 alpha-2
          - `region` string
    - `plan_entry_id` string
    - `options` integer, required
    - `exercise_price` string, required
    - `vesting_start` string, date, required
    - `option_type` 'iso' | 'nso'
    - `grant_date` string, date
    - `months` integer
    - `cliff_months` integer
    - `expires_on` string, date
    - `post_termination_months` integer
    - `acceleration` object
      - `text` string, required
      - `page` integer
    - `document_id` string
    - `quotes` object[]
      - `field` string, required
      - `quote` string, required
  - `cancellations` object[]
    - `grant_id` string, required
    - `on` string, date, required
    - `options` integer
    - `kind` 'termination' | 'expiry' | 'other'
    - `reason` string, required
  - `attachments` object[]
    - `entry_id` string, required
    - `document_id` string, required
    - `role` 'authorization' | 'instrument' | 'other' | 'purchase_agreement' | 'technology_assignment' | 'payment' | 'notice_of_issuance' | 'election_83b', required
  - `import` object
    - `source` 'spreadsheet' | 'pulley' | 'carta' | 'ocf', required
    - `upload_id` string
    - `archive_file_id` string
    - `mapping` object

## Response `200`

The result.

- object
  - `entries` object[], required
    - `id` string, required
    - `version` integer, required
    - `summary` string, required
    - `needs_reason` object[], required
      - `key` string, required
      - `text` string, required
    - `entered_by_agent` boolean, required
  - `import` object, nullable, required
    - `batch_id` string, required
    - `lines` integer, required
    - `kept` integer, required
    - `differences` object[], required
      - `kind` 'holder' | 'class', required
      - `label` string, required
      - `source` integer, required
      - `imported` integer, required
  - `next_step` string, required

## Other responses

- `default`: An RFC 9457 problem.

---

[API](https://skmtc.dev/binderwork/apis/binderwork-api.md) · [All operations](https://skmtc.dev/binderwork/apis/binderwork-api/llms.txt) · [OpenAPI document](https://skmtc.dev/binderwork/apis/binderwork-api/revisions/f8fab0ebee53?raw)
