Developers
API reference

Alternatives

get/v1/alternatives

List alternative investments

alternatives.listread tokenidempotent

Every alternative investment in the ledger, live, exited or written off, with its gain and multiple.

Parameters

limit
integer · query
Page size, 1–200.
cursor
string | null · query
The next_cursor of the previous page.
X-Organization-Id
string | null · header

Returns 200 · InvestmentList

data
array of Investment · required
has_more
boolean · required
next_cursor
string | null · required
Example
curl -X GET "https://api.lumaledger.app/v1/alternatives" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN"
post/v1/alternatives

Record an alternative investment

alternatives.createwrite tokenidempotent

Record a position and post its value to the ledger's Alternative Investments account. Send an Idempotency-Key so a retry cannot record it twice.

Parameters

Idempotency-Key
string | null · header
Any unique string (a UUID is ideal). A retry with the same key returns the first attempt's response instead of doing the work twice. Keys are kept for 24 hours.
X-Organization-Id
string | null · header

Body · InvestmentCreate

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
currency
string | null
ISO 4217 code of the amounts, when not the ledger's base currency. Pattern: ^[A-Z]{3}$.
current_value
string | null
What it is worth now. Defaults to invested_amount. Posted to the ledger. Pattern: ^\d{1,12}(\.\d{1,2})?$.
invested_amount
string · required
What went in, as a decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$.
invested_date
date | null
issuer
string | null
name
string · required
notes
string | null
terms
object | null
Free-form deal terms.
vehicle
string
One of safe, convertible_note, priced_round, lp_interest, note, direct, other. Default: "other".

Returns 201 · Investment

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
current_value
Money · required
What it is worth now. Zero once exited or written off.
documents
array of InvestmentDocumentRef · required
excluded_from_totals
boolean · required
Left out of net worth: its value is not posted to the ledger.
exit_date
date | null · required
exit_proceeds
Money | null · required
What came back on exit, when recorded.
gain
Money · required
current_value minus invested_amount.
hidden
boolean · required
Hidden from the app's list; still counted.
id
integer · required
invested_amount
Money · required
What went in.
invested_date
date | null · required
issuer
string | null · required
The company, fund or counterparty.
multiple
string | null · required
current_value ÷ invested_amount as a decimal string ("1.25"). Null when nothing was invested.
name
string · required
notes
string | null · required
status
string · required
One of active, exited, written_off.
terms
object | null · required
Free-form deal terms (valuation cap, discount, carry, …), as recorded.
valued_at
date | null · required
The date current_value was last set.
vehicle
string · required
The instrument held: one of safe, convertible_note, priced_round, lp_interest, note, direct, other.
Example
curl -X POST "https://api.lumaledger.app/v1/alternatives" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "…",
    "invested_amount": "…",
    "name": "…"
  }'
delete/v1/alternatives/{investment_id}

Delete an alternative investment

alternatives.deletewrite tokendestructiveidempotent

Delete a position and take its value off the ledger, with its documents and their files. To keep its history, set status to exited or written_off instead.

Parameters

investment_id
integer · path · required
X-Organization-Id
string | null · header

Returns 204 with no body.

Example
curl -X DELETE "https://api.lumaledger.app/v1/alternatives/{investment_id}" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN"
get/v1/alternatives/{investment_id}

Get an alternative investment

alternatives.getread tokenidempotent

One alternative investment with the documents filed against it.

Parameters

investment_id
integer · path · required
X-Organization-Id
string | null · header

Returns 200 · Investment

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
current_value
Money · required
What it is worth now. Zero once exited or written off.
documents
array of InvestmentDocumentRef · required
excluded_from_totals
boolean · required
Left out of net worth: its value is not posted to the ledger.
exit_date
date | null · required
exit_proceeds
Money | null · required
What came back on exit, when recorded.
gain
Money · required
current_value minus invested_amount.
hidden
boolean · required
Hidden from the app's list; still counted.
id
integer · required
invested_amount
Money · required
What went in.
invested_date
date | null · required
issuer
string | null · required
The company, fund or counterparty.
multiple
string | null · required
current_value ÷ invested_amount as a decimal string ("1.25"). Null when nothing was invested.
name
string · required
notes
string | null · required
status
string · required
One of active, exited, written_off.
terms
object | null · required
Free-form deal terms (valuation cap, discount, carry, …), as recorded.
valued_at
date | null · required
The date current_value was last set.
vehicle
string · required
The instrument held: one of safe, convertible_note, priced_round, lp_interest, note, direct, other.
Example
curl -X GET "https://api.lumaledger.app/v1/alternatives/{investment_id}" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN"
patch/v1/alternatives/{investment_id}

Update an alternative investment

alternatives.updatewrite tokenidempotent

Revalue a position, record its exit or write-off, correct its details, or hide it or leave it out of the totals. Only the fields sent change, and any change in what the position is worth is posted to the ledger.

Parameters

investment_id
integer · path · required
X-Organization-Id
string | null · header

Body · InvestmentUpdate

current_value
string
Revalue a live position; the change is posted to the ledger. Pattern: ^\d{1,12}(\.\d{1,2})?$.
excluded_from_totals
boolean
Leave it out of net worth: its value is taken off the ledger.
exit_date
date
Sent with an exit. Defaults to today.
exit_proceeds
string
What came back, sent with an exit. Pattern: ^\d{1,12}(\.\d{1,2})?$.
hidden
boolean
issuer
string
name
string
notes
string
status
string
One of active, exited, written_off. Exiting or writing off takes the position's value off the ledger; reactivating restores it.
terms
object

Returns 200 · Investment

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
current_value
Money · required
What it is worth now. Zero once exited or written off.
documents
array of InvestmentDocumentRef · required
excluded_from_totals
boolean · required
Left out of net worth: its value is not posted to the ledger.
exit_date
date | null · required
exit_proceeds
Money | null · required
What came back on exit, when recorded.
gain
Money · required
current_value minus invested_amount.
hidden
boolean · required
Hidden from the app's list; still counted.
id
integer · required
invested_amount
Money · required
What went in.
invested_date
date | null · required
issuer
string | null · required
The company, fund or counterparty.
multiple
string | null · required
current_value ÷ invested_amount as a decimal string ("1.25"). Null when nothing was invested.
name
string · required
notes
string | null · required
status
string · required
One of active, exited, written_off.
terms
object | null · required
Free-form deal terms (valuation cap, discount, carry, …), as recorded.
valued_at
date | null · required
The date current_value was last set.
vehicle
string · required
The instrument held: one of safe, convertible_note, priced_round, lp_interest, note, direct, other.
Example
curl -X PATCH "https://api.lumaledger.app/v1/alternatives/{investment_id}" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
post/v1/alternatives/{investment_id}/documents

Attach a document to an alternative investment

alternatives.add_documentwrite tokenidempotent

File a document (the SAFE, the subscription agreement, a K-1) against a position. Upload it first with files.create and send its file_id; the document is kept with the position, after the upload itself expires, and shows in the app. Send an Idempotency-Key so a retry cannot file it twice.

Parameters

investment_id
integer · path · required
Idempotency-Key
string | null · header
Any unique string (a UUID is ideal). A retry with the same key returns the first attempt's response instead of doing the work twice. Keys are kept for 24 hours.
X-Organization-Id
string | null · header

Body · InvestmentDocumentAdd

file_id
integer · required
The document, uploaded with files.create.
name
string | null
What to call it. Defaults to the uploaded file's name.

Returns 201 · InvestmentDocumentRef

content_type
string | null · required
created_at
datetime · required
id
integer · required
name
string · required
size_bytes
integer | null · required
Example
curl -X POST "https://api.lumaledger.app/v1/alternatives/{investment_id}/documents" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": 1
  }'
delete/v1/alternatives/{investment_id}/documents/{investment_document_id}

Remove a document from an alternative investment

alternatives.delete_documentwrite tokendestructiveidempotent

Remove a document from a position, and delete its file. investment_document_id is a document's id from the position's documents.

Parameters

investment_id
integer · path · required
investment_document_id
integer · path · required
X-Organization-Id
string | null · header

Returns 204 with no body.

Example
curl -X DELETE "https://api.lumaledger.app/v1/alternatives/{investment_id}/documents/{investment_document_id}" \
  -H "Authorization: Bearer $LUMALEDGER_TOKEN"

Objects

Investment

An alternative investment: a position valued by hand.

Fields

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
current_value
Money · required
What it is worth now. Zero once exited or written off.
documents
array of InvestmentDocumentRef · required
excluded_from_totals
boolean · required
Left out of net worth: its value is not posted to the ledger.
exit_date
date | null · required
exit_proceeds
Money | null · required
What came back on exit, when recorded.
gain
Money · required
current_value minus invested_amount.
hidden
boolean · required
Hidden from the app's list; still counted.
id
integer · required
invested_amount
Money · required
What went in.
invested_date
date | null · required
issuer
string | null · required
The company, fund or counterparty.
multiple
string | null · required
current_value ÷ invested_amount as a decimal string ("1.25"). Null when nothing was invested.
name
string · required
notes
string | null · required
status
string · required
One of active, exited, written_off.
terms
object | null · required
Free-form deal terms (valuation cap, discount, carry, …), as recorded.
valued_at
date | null · required
The date current_value was last set.
vehicle
string · required
The instrument held: one of safe, convertible_note, priced_round, lp_interest, note, direct, other.

InvestmentCreate

Fields

category
string · required
One of angel, fund, private_credit, collectible, crypto, other.
currency
string | null
ISO 4217 code of the amounts, when not the ledger's base currency. Pattern: ^[A-Z]{3}$.
current_value
string | null
What it is worth now. Defaults to invested_amount. Posted to the ledger. Pattern: ^\d{1,12}(\.\d{1,2})?$.
invested_amount
string · required
What went in, as a decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$.
invested_date
date | null
issuer
string | null
name
string · required
notes
string | null
terms
object | null
Free-form deal terms.
vehicle
string
One of safe, convertible_note, priced_round, lp_interest, note, direct, other. Default: "other".

InvestmentDocumentAdd

Fields

file_id
integer · required
The document, uploaded with files.create.
name
string | null
What to call it. Defaults to the uploaded file's name.

InvestmentDocumentRef

A document filed against the position.

Fields

content_type
string | null · required
created_at
datetime · required
id
integer · required
name
string · required
size_bytes
integer | null · required

InvestmentList

A page of alternative investments, in id order.

Fields

data
array of Investment · required
has_more
boolean · required
next_cursor
string | null · required

InvestmentUpdate

Only the fields sent change. None of them can be cleared.

Fields

current_value
string
Revalue a live position; the change is posted to the ledger. Pattern: ^\d{1,12}(\.\d{1,2})?$.
excluded_from_totals
boolean
Leave it out of net worth: its value is taken off the ledger.
exit_date
date
Sent with an exit. Defaults to today.
exit_proceeds
string
What came back, sent with an exit. Pattern: ^\d{1,12}(\.\d{1,2})?$.
hidden
boolean
issuer
string
name
string
notes
string
status
string
One of active, exited, written_off. Exiting or writing off takes the position's value off the ledger; reactivating restores it.
terms
object

Money

An amount and its currency. `amount` is a base-10 string with two decimal places and an optional leading minus sign. Parse it with a decimal type, not a float.

Fields

amount
string · required
Pattern: ^-?\d+\.\d{2}$.
currency
string · required
ISO 4217 code. Pattern: ^[A-Z]{3}$.