BoringBooks API reference

create_draft_journal

POST /api/v1/commands/create_draft_journal

Base URL: https://boringbooks.io.

Request body

FieldTypeRequiredDescription
ledger_idstring (uuid)yes
linesarray of objectyesMin items: 1. Max items: 100.
lines[].account_idstring (uuid)yes
lines[].amountAmountInputyes
lines[].sidestringyesOne of: debit, credit.
lines[].dimensionsobject, nullableno
lines[].memostring, nullablenoMax length: 4000.
posting_datestring (date)yes
currencyCurrencyInputno
descriptionstring, nullablenoMax length: 4000.
proposal_kindstringnoWhere 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.
rationalestring, nullablenoMax 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)

FieldTypeRequiredDescription
idstring (uuid)yes
statusstringyes

Shared types

Fields typed with one of these names refer to it.

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.