create_draft_journal
POST /api/v1/commands/create_draft_journal
Base URL: https://boringbooks.io.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
ledger_id | string (uuid) | yes | |
lines | array of object | yes | Min items: 1. Max items: 100. |
lines[].account_id | string (uuid) | yes | |
lines[].amount | AmountInput | yes | |
lines[].side | string | yes | One of: debit, credit. |
lines[].dimensions | object, nullable | no | |
lines[].memo | string, nullable | no | Max length: 4000. |
posting_date | string (date) | yes | |
currency | CurrencyInput | no | |
description | string, nullable | no | Max length: 4000. |
proposal_kind | string | no | Where the proposal came from, as a short lowercase label: manual (the default), or your own, such as import or bank_feed. system is reserved for the journals the ledger writes itself, closing entries and reversals. Default: "manual". Max length: 64. |
rationale | string, nullable | no | Max length: 4000. |
Example:
{
"description": "Owner's initial investment",
"ledger_id": "11111111-1111-4111-8111-111111111111",
"lines": [
{
"account_id": "22222222-2222-4222-8222-222222222222",
"amount": "1000.00",
"side": "debit"
},
{
"account_id": "33333333-3333-4333-8333-333333333333",
"amount": "1000.00",
"side": "credit"
}
],
"posting_date": "2026-01-15"
}
Response (200)
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | yes | |
status | string | yes |
Shared types
Fields typed with one of these names refer to it.
AmountInput(string): An unsigned decimal magnitude as a string, greater than zero, in plain notation: digits with an optional fractional part, and no sign, exponent, or separators. "100" and "100.0" are accepted and normalized to the currency's scale ("100.00" for most currencies, "100" for JPY); more precision than the currency admits ("100.005" for USD, "100.5" for JPY) is rejected, never rounded.CurrencyInput(string): An ISO 4217 alphabetic currency code from the supported set. It must be the target ledger's functional currency: a different supported currency is refused withforeign_currency_not_supported, and a currency outside the supported set is rejected outright. The supported set is additive and may grow. One of:AUD,CAD,CHF,EUR,GBP,JPY,USD.
Errors
Every error response is a single error object with a closed type and a refining code. The codes, and the conventions every operation shares, are in llms-full.txt.