Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.launchboard.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Transactions are the append-only ledger mutations that change ownership state on your cap table. Every equity event — issuing stock to a founder, granting options to an employee, transferring shares to a new investor, exercising vested options, or cancelling a forfeited grant — is recorded as a transaction. Once written, transaction records are immutable; corrections are made by recording a subsequent offsetting transaction. Use the specialized sub-routes (/issue-shares, /issue-options, /transfer, /exercise, /cancel) for typed operations with focused validation. The generic POST /transactions endpoint accepts any type value but performs less validation — prefer the specialized routes when the operation fits their shape.

List transactions

Returns a cursor-paginated log of all transactions for your organization, ordered most-recent first. You can filter by type to narrow results to a specific event kind. GET /api/v1/transactions
Query paramTypeDescription
typestringFilter by transaction type (e.g. STOCK_ISSUANCE, STOCK_OPTION_EXERCISE).
limitintegerPage size. Defaults to 25, maximum 100.
cursorstringOpaque cursor returned as nextCursor from the previous page.
curl https://launchboard.xyz/api/v1/transactions \
  -H "Authorization: Bearer pg_live_your_key"
Response
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "orgId": "550e8400-e29b-41d4-a716-446655440000",
      "type": "STOCK_ISSUANCE",
      "securityId": "550e8400-e29b-41d4-a716-446655440010",
      "stakeholderId": "550e8400-e29b-41d4-a716-446655440020",
      "quantity": "1000000",
      "effectiveDate": "2024-01-15",
      "metadata": { "boardApprovalDate": "2024-01-10" },
      "createdAt": "2024-01-15T14:30:00.000Z"
    }
  ],
  "nextCursor": "eyJpZCI6IjU1MGU4NDAwIiwiY3JlYXRlZEF0IjoiMjAyNC0wMS0xNVQxNDozMDowMC4wMDBaIn0"
}
data
Transaction[]
Array of transaction log entries.
data[].id
string (uuid)
Unique transaction ID.
data[].type
string
Transaction type. One of: STOCK_ISSUANCE, STOCK_OPTION_ISSUANCE, WARRANT_ISSUANCE, CONVERTIBLE_ISSUANCE, STOCK_TRANSFER, STOCK_OPTION_TRANSFER, WARRANT_TRANSFER, CONVERTIBLE_TRANSFER, STOCK_OPTION_EXERCISE, WARRANT_EXERCISE, CONVERTIBLE_CONVERSION, STOCK_CANCELLATION, STOCK_OPTION_CANCELLATION, WARRANT_CANCELLATION, CONVERTIBLE_CANCELLATION, STOCK_REPURCHASE, VESTING_START, VESTING_ACCELERATION, VESTING_EVENT, STOCK_CLASS_ADJUSTMENT, STOCK_PLAN_ADJUSTMENT, STOCK_SPLIT, STOCK_RETRACTION, STAKEHOLDER_UPDATE, VALUATION_UPDATE.
data[].securityId
string (uuid) | null
The security this transaction applies to, when applicable.
data[].stakeholderId
string (uuid) | null
Primary stakeholder involved in the transaction.
data[].quantity
string | null
Number of shares or units, serialized as a string to preserve precision.
data[].effectiveDate
string
Date the transaction took effect (YYYY-MM-DD).
data[].metadata
object | null
Type-specific supplementary data (approval dates, transfer reasons, exercise prices, etc.).
nextCursor
string | null
Pass as cursor to retrieve the next page. null when there are no more results.

Issue shares

Creates a stock issuance transaction and records the resulting security. If the target share class has tokenization enabled, tokens are minted on-chain immediately — no separate approval gate is required. POST /api/v1/transactions/issue-shares Requires role: EDITOR. Idempotent with an Idempotency-Key header.
stakeholderId
string (uuid)
required
ID of the stakeholder receiving the shares.
stockClassId
string (uuid)
required
ID of the share class to issue from.
quantity
string
required
Number of shares to issue. Pass as a string to preserve precision (e.g. "1000000").
certificateId
string
required
Human-readable certificate identifier (e.g. "CS-001"). Maximum 50 characters.
effectiveDate
string
required
Date the issuance takes effect (YYYY-MM-DD).
pricePerShare
string
Price per share at issuance. Pass as a string (e.g. "1.50"). Defaults to null.
vestingTermsId
string (uuid)
ID of the vesting schedule to attach. Omit for immediately vested grants.
vestingStartDate
string
Date vesting begins (YYYY-MM-DD). Defaults to effectiveDate when omitted.
valuationId
string (uuid)
ID of the valuation used to price this issuance.
boardApprovalDate
string
Date the board approved this issuance (YYYY-MM-DD).
stockholderApprovalDate
string
Date stockholder approval was obtained (YYYY-MM-DD).
description
string
Optional notes. Maximum 2000 characters.
curl -X POST https://launchboard.xyz/api/v1/transactions/issue-shares \
  -H "Authorization: Bearer pg_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: issuance-alice-series-a-2024" \
  -d '{
    "stakeholderId": "550e8400-e29b-41d4-a716-446655440020",
    "stockClassId": "550e8400-e29b-41d4-a716-446655440030",
    "quantity": "5000000",
    "certificateId": "CS-001",
    "effectiveDate": "2024-03-01",
    "pricePerShare": "2.00",
    "boardApprovalDate": "2024-02-28"
  }'
Response — 201 Created
{
  "data": {
    "transactionId": "550e8400-e29b-41d4-a716-446655440001",
    "securityId": "550e8400-e29b-41d4-a716-446655440010"
  }
}
data.transactionId
string (uuid)
ID of the ledger transaction record.
data.securityId
string (uuid)
ID of the newly created security. Use this to fetch full security details via GET /api/v1/securities/{id}.
If the share class is tokenized (tokenizationStatus: "DEPLOYED"), Launchboard mints the corresponding SPL tokens to the stakeholder’s wallet immediately after the transaction commits. Token minting happens asynchronously in the background — the 201 response is returned before minting completes.

Issue options

Creates a stock option grant transaction and records the resulting security. POST /api/v1/transactions/issue-options Requires role: EDITOR. Idempotent with an Idempotency-Key header.
stakeholderId
string (uuid)
required
ID of the stakeholder receiving the option grant.
stockPlanId
string (uuid)
required
ID of the equity plan (option pool) to draw from.
quantity
string
required
Number of options to grant (e.g. "100000").
exercisePrice
string
required
Per-share strike price (e.g. "0.10").
optionType
string
required
ISO or NSO.
certificateId
string
required
Human-readable grant identifier (e.g. "OPT-042"). Maximum 50 characters.
effectiveDate
string
required
Grant date (YYYY-MM-DD).
stockClassId
string (uuid)
Share class the options convert into upon exercise. Typically inferred from the equity plan.
expirationDate
string
Date the options expire unexercised (YYYY-MM-DD). Defaults to 10 years from grant date when omitted.
vestingTermsId
string (uuid)
Vesting schedule to attach to this grant.
vestingStartDate
string
Date vesting begins (YYYY-MM-DD).
boardApprovalDate
string
Board approval date (YYYY-MM-DD).
valuationId
string (uuid)
Valuation used to set the 409A-compliant exercise price.
description
string
Optional notes. Maximum 2000 characters.
curl -X POST https://launchboard.xyz/api/v1/transactions/issue-options \
  -H "Authorization: Bearer pg_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: grant-bob-2024-q1" \
  -d '{
    "stakeholderId": "550e8400-e29b-41d4-a716-446655440021",
    "stockPlanId": "550e8400-e29b-41d4-a716-446655440031",
    "quantity": "100000",
    "exercisePrice": "0.10",
    "optionType": "ISO",
    "certificateId": "OPT-042",
    "effectiveDate": "2024-03-15",
    "vestingTermsId": "550e8400-e29b-41d4-a716-446655440040",
    "boardApprovalDate": "2024-03-14"
  }'
Response — 201 Created
{
  "data": {
    "transactionId": "550e8400-e29b-41d4-a716-446655440002",
    "securityId": "550e8400-e29b-41d4-a716-446655440011"
  }
}

Transfer a security

Moves a security (or part of a security) from one stakeholder to another. The original security is partially or fully cancelled and a new security is created for the recipient. POST /api/v1/transactions/transfer Requires role: EDITOR. Idempotent with an Idempotency-Key header.
securityId
string (uuid)
required
ID of the security to transfer.
fromStakeholderId
string (uuid)
required
ID of the current holder transferring the security.
toStakeholderId
string (uuid)
required
ID of the stakeholder receiving the security.
quantity
string
required
Number of shares to transfer. Must be less than or equal to the security’s current quantity.
effectiveDate
string
required
Date the transfer takes effect (YYYY-MM-DD).
pricePerShare
string
Transfer price per share, if applicable (e.g. secondary sale).
transferReason
string
Free-text reason for the transfer (e.g. "Secondary sale — Series B").
boardApprovalDate
string
Board approval date (YYYY-MM-DD).
description
string
Optional notes. Maximum 2000 characters.
curl -X POST https://launchboard.xyz/api/v1/transactions/transfer \
  -H "Authorization: Bearer pg_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: transfer-alice-to-carol-2024" \
  -d '{
    "securityId": "550e8400-e29b-41d4-a716-446655440010",
    "fromStakeholderId": "550e8400-e29b-41d4-a716-446655440020",
    "toStakeholderId": "550e8400-e29b-41d4-a716-446655440022",
    "quantity": "250000",
    "effectiveDate": "2024-04-01",
    "pricePerShare": "3.50",
    "transferReason": "Secondary sale"
  }'
Response — 201 Created
{
  "data": {
    "transactionId": "550e8400-e29b-41d4-a716-446655440003",
    "newSecurityId": "550e8400-e29b-41d4-a716-446655440012"
  }
}
data.newSecurityId
string (uuid)
ID of the new security created for the recipient. The Location response header also points to GET /api/v1/securities/{newSecurityId}.

Exercise options

Converts vested options into stock. The source option security is partially or fully cancelled and a new STOCK security is created for the exercising stakeholder. POST /api/v1/transactions/exercise Requires role: EDITOR. Idempotent with an Idempotency-Key header.
securityId
string (uuid)
required
ID of the option security to exercise.
quantity
string
required
Number of options to exercise.
exercisePrice
string
required
Per-share exercise price at the time of exercise (e.g. "0.10").
effectiveDate
string
required
Exercise date (YYYY-MM-DD).
paymentMethod
string
CASH, CASHLESS, or NET_EXERCISE. Defaults to CASH when omitted.
boardApprovalDate
string
Board approval date (YYYY-MM-DD).
description
string
Optional notes. Maximum 2000 characters.
curl -X POST https://launchboard.xyz/api/v1/transactions/exercise \
  -H "Authorization: Bearer pg_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: exercise-bob-opt042-2024" \
  -d '{
    "securityId": "550e8400-e29b-41d4-a716-446655440011",
    "quantity": "25000",
    "exercisePrice": "0.10",
    "paymentMethod": "CASH",
    "effectiveDate": "2024-06-01"
  }'
Response — 201 Created
{
  "data": {
    "transactionId": "550e8400-e29b-41d4-a716-446655440004",
    "newSecurityId": "550e8400-e29b-41d4-a716-446655440013"
  }
}
data.newSecurityId
string (uuid)
ID of the new STOCK security created for the exercised shares.

Cancel a security

Records a cancellation, forfeiture, expiration, or repurchase of a security. The security’s status transitions to CANCELLED. If returnToPool is true and the security is an option, the cancelled quantity is returned to the equity plan pool. POST /api/v1/transactions/cancel Requires role: EDITOR. Idempotent with an Idempotency-Key header.
securityId
string (uuid)
required
ID of the security to cancel.
quantity
string
required
Number of shares or options to cancel. For a full cancellation, pass the security’s full quantity.
cancellationReason
string
required
FORFEITURE, EXPIRATION, REPURCHASE, or TERMINATION.
effectiveDate
string
required
Date the cancellation takes effect (YYYY-MM-DD).
returnToPool
boolean
When true, the cancelled option quantity is returned to the equity plan pool. Defaults to false.
boardApprovalDate
string
Board approval date (YYYY-MM-DD).
description
string
Optional notes. Maximum 2000 characters.
curl -X POST https://launchboard.xyz/api/v1/transactions/cancel \
  -H "Authorization: Bearer pg_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: cancel-bob-opt042-forfeiture" \
  -d '{
    "securityId": "550e8400-e29b-41d4-a716-446655440011",
    "quantity": "75000",
    "cancellationReason": "FORFEITURE",
    "returnToPool": true,
    "effectiveDate": "2024-05-15"
  }'
Response — 200 OK
{
  "data": {
    "transactionId": "550e8400-e29b-41d4-a716-446655440005"
  }
}

Error codes

StatusWhen it occurs
401Missing or invalid API key.
403Key role is below the required level (EDITOR).
404Referenced security, stakeholder, or share class not found.
422Request body failed validation — check the errors field in the response for field-level details.