@lunch-money/developer-docs 2.11.0-preview.9 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/beta-introduction.md +9 -0
- package/docs/introduction.md +0 -4
- package/package.json +1 -1
- package/v2/docs/AGENTS.md +48 -0
- package/v2/docs/version-history.md +20 -19
- package/v2/spec/AGENTS.md +75 -0
- package/v2/spec/lunch-money-api-v2.yaml +465 -350
|
@@ -4,13 +4,23 @@ info:
|
|
|
4
4
|
description: |-
|
|
5
5
|
### Introduction
|
|
6
6
|
|
|
7
|
+
Welcome to the Lunch Money v2 API reference. This is the **v2.11.0** spec.
|
|
8
|
+
|
|
7
9
|
The API is available at `https://api.lunchmoney.dev/v2`. Get your access token from the [Lunch Money developers page](https://my.lunchmoney.app/developers).
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
**Try it from these docs**
|
|
10
13
|
|
|
11
|
-
**
|
|
14
|
+
These docs are interactive — use **Test request** on any endpoint to call the API from this page.
|
|
15
|
+
Choose a LIVE or MOCK service from the Server dropdown.
|
|
16
|
+
Requests sent to `https://api.lunchmoney.dev/v2` can <span class="red-text"><strong>change or delete</strong></span> your data and are <span class="red-text"><strong>permanent</strong></span>.
|
|
17
|
+
See the [Getting Started Guide](https://lunchmoney.dev/v2/getting-started) before using the live API.
|
|
18
|
+
|
|
19
|
+
**Static mock server**
|
|
12
20
|
|
|
13
|
-
Explore
|
|
21
|
+
Explore without risk to real data. Select `http://mock.lunchmoney.dev/v2` in the Server dropdown to work with static mock data.
|
|
22
|
+
POST, PUT, and DELETE requests will return realistic responses, but do not change the mock data.
|
|
23
|
+
|
|
14
24
|
|
|
15
25
|
**Client Libraries & SDKs**
|
|
16
26
|
|
|
@@ -18,15 +28,14 @@ info:
|
|
|
18
28
|
|
|
19
29
|
**Migrating from v1**
|
|
20
30
|
|
|
21
|
-
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://
|
|
31
|
+
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
|
|
22
32
|
|
|
23
33
|
**Useful links**
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [Rate Limits](https://alpha.lunchmoney.dev/v2/rate-limits)
|
|
34
|
+
- [Getting Started Guide](https://lunchmoney.dev/v2/getting-started)
|
|
35
|
+
- [v2 API Overview](https://lunchmoney.dev/v2/overview)
|
|
36
|
+
- [Version History](https://lunchmoney.dev/v2/version-history)
|
|
37
|
+
- [Migration Guide](https://lunchmoney.dev/v2/migration-guide)
|
|
38
|
+
- [Rate Limits](https://lunchmoney.dev/v2/rate-limits)
|
|
30
39
|
termsOfService: https://lunchmoney.dev/#current-status
|
|
31
40
|
contact:
|
|
32
41
|
email: devsupport@lunchmoney.app
|
|
@@ -37,10 +46,9 @@ info:
|
|
|
37
46
|
|
|
38
47
|
servers:
|
|
39
48
|
- url: https://api.lunchmoney.dev/v2
|
|
40
|
-
description:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
description: Static mock version of the v2 Lunch Money API Server
|
|
49
|
+
description: ⚠ LIVE — changes real Lunch Money data
|
|
50
|
+
- url: http://mock.lunchmoney.dev/v2
|
|
51
|
+
description: MOCK — static demo data, no API key required
|
|
44
52
|
|
|
45
53
|
tags:
|
|
46
54
|
- name: me
|
|
@@ -71,7 +79,11 @@ tags:
|
|
|
71
79
|
description: Learn more about crypto assets
|
|
72
80
|
url: https://support.lunchmoney.app/setup/crypto
|
|
73
81
|
- name: balance_history
|
|
74
|
-
description:
|
|
82
|
+
description: >-
|
|
83
|
+
View and update monthly account balances used by the
|
|
84
|
+
[Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
|
|
85
|
+
History is monthly. The current month may be calculated on demand when
|
|
86
|
+
requested.
|
|
75
87
|
- name: recurring_items
|
|
76
88
|
description: Work with recurring items
|
|
77
89
|
externalDocs:
|
|
@@ -979,16 +991,19 @@ components:
|
|
|
979
991
|
example: Cold Wallet BTC
|
|
980
992
|
display_name:
|
|
981
993
|
type: string
|
|
994
|
+
nullable: true
|
|
982
995
|
minLength: 1
|
|
983
996
|
maxLength: 45
|
|
984
|
-
description:
|
|
985
|
-
|
|
997
|
+
description: Display name for the manual crypto asset. If omitted or
|
|
998
|
+
`null`, clients may derive one from `institution_name` + `name`.
|
|
986
999
|
example: Cold Storage
|
|
987
1000
|
institution_name:
|
|
988
1001
|
type: string
|
|
1002
|
+
nullable: true
|
|
989
1003
|
minLength: 1
|
|
990
1004
|
maxLength: 50
|
|
991
|
-
description:
|
|
1005
|
+
description: Institution or wallet provider display name. If omitted
|
|
1006
|
+
or `null`, no institution name is set.
|
|
992
1007
|
example: Ledger
|
|
993
1008
|
balance:
|
|
994
1009
|
oneOf:
|
|
@@ -1244,15 +1259,19 @@ components:
|
|
|
1244
1259
|
example: My Savings Account
|
|
1245
1260
|
institution_name:
|
|
1246
1261
|
type: string
|
|
1262
|
+
nullable: true
|
|
1247
1263
|
example: Bank of the West
|
|
1248
|
-
description: Name of institution holding the manual account
|
|
1264
|
+
description: Name of the institution holding the manual account. If
|
|
1265
|
+
omitted or `null`, no institution name is set.
|
|
1249
1266
|
minLength: 1
|
|
1250
1267
|
maxLength: 50
|
|
1251
1268
|
display_name:
|
|
1252
1269
|
type: string
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1270
|
+
nullable: true
|
|
1271
|
+
description: Display name of the manual account. If omitted or
|
|
1272
|
+
`null`, it is derived from `institution_name` and `name`. An
|
|
1273
|
+
explicitly set display name must be unique for the budgeting
|
|
1274
|
+
account.
|
|
1256
1275
|
example: Savings
|
|
1257
1276
|
type:
|
|
1258
1277
|
description: The type of manual account
|
|
@@ -1260,8 +1279,10 @@ components:
|
|
|
1260
1279
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1261
1280
|
subtype:
|
|
1262
1281
|
type: string
|
|
1263
|
-
|
|
1264
|
-
|
|
1282
|
+
nullable: true
|
|
1283
|
+
description: Manual account subtype. If omitted or `null`, no subtype
|
|
1284
|
+
is set. Examples include retirement, checking, savings, and prepaid
|
|
1285
|
+
credit card.
|
|
1265
1286
|
minLength: 1
|
|
1266
1287
|
maxLength: 100
|
|
1267
1288
|
example: prepaid credit card
|
|
@@ -1635,7 +1656,7 @@ components:
|
|
|
1635
1656
|
type:
|
|
1636
1657
|
type: string
|
|
1637
1658
|
enum: [manual]
|
|
1638
|
-
description: Identifies this entry as belonging to a
|
|
1659
|
+
description: Identifies this entry as belonging to a manual account.
|
|
1639
1660
|
manual_account_id:
|
|
1640
1661
|
type: integer
|
|
1641
1662
|
format: int32
|
|
@@ -1664,14 +1685,14 @@ components:
|
|
|
1664
1685
|
|
|
1665
1686
|
balanceHistorySourceCryptoManual:
|
|
1666
1687
|
type: object
|
|
1667
|
-
description: Source information for a
|
|
1688
|
+
description: Source information for a manual cryptocurrency balance history entry.
|
|
1668
1689
|
additionalProperties: false
|
|
1669
1690
|
x-internal: true
|
|
1670
1691
|
properties:
|
|
1671
1692
|
type:
|
|
1672
1693
|
type: string
|
|
1673
1694
|
enum: [crypto_manual]
|
|
1674
|
-
description: Identifies this entry as belonging to a
|
|
1695
|
+
description: Identifies this entry as belonging to a manual crypto account.
|
|
1675
1696
|
crypto_manual_id:
|
|
1676
1697
|
type: integer
|
|
1677
1698
|
format: int32
|
|
@@ -1714,10 +1735,11 @@ components:
|
|
|
1714
1735
|
type: object
|
|
1715
1736
|
x-internal: true
|
|
1716
1737
|
description: >
|
|
1717
|
-
Source information for
|
|
1738
|
+
Source information for balance history whose account has since been deleted.
|
|
1718
1739
|
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1719
1740
|
This object contains details that can be used to display the deleted account in the UI.
|
|
1720
|
-
The `deleted_account_id` can be passed to
|
|
1741
|
+
The `deleted_account_id` can be passed to
|
|
1742
|
+
[PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
|
|
1721
1743
|
to update the archived source metadata.
|
|
1722
1744
|
additionalProperties: false
|
|
1723
1745
|
properties:
|
|
@@ -1748,11 +1770,11 @@ components:
|
|
|
1748
1770
|
subtype:
|
|
1749
1771
|
type: string
|
|
1750
1772
|
nullable: true
|
|
1751
|
-
description: Archived `subtype
|
|
1773
|
+
description: Archived `subtype` of the deleted account source
|
|
1752
1774
|
mask:
|
|
1753
1775
|
type: string
|
|
1754
1776
|
nullable: true
|
|
1755
|
-
description: Archived account `mask` for a deleted
|
|
1777
|
+
description: Archived account `mask` for a deleted Plaid account source
|
|
1756
1778
|
symbol:
|
|
1757
1779
|
type: string
|
|
1758
1780
|
nullable: true
|
|
@@ -1774,12 +1796,14 @@ components:
|
|
|
1774
1796
|
type: object
|
|
1775
1797
|
title: balance history for an account object
|
|
1776
1798
|
additionalProperties: false
|
|
1777
|
-
description:
|
|
1799
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1778
1800
|
properties:
|
|
1779
1801
|
source:
|
|
1780
1802
|
description: >
|
|
1781
|
-
Identifies the account
|
|
1782
|
-
`source.type`.
|
|
1803
|
+
Identifies the account these balance entries belong to. The shape varies by
|
|
1804
|
+
`source.type`. Each source type exposes a type-specific account id field
|
|
1805
|
+
(`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
|
|
1806
|
+
`crypto_synced_id`, or `deleted_account_id`).
|
|
1783
1807
|
oneOf:
|
|
1784
1808
|
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1785
1809
|
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
@@ -1797,38 +1821,48 @@ components:
|
|
|
1797
1821
|
balances:
|
|
1798
1822
|
type: array
|
|
1799
1823
|
description: >
|
|
1800
|
-
Monthly balance
|
|
1801
|
-
|
|
1802
|
-
|
|
1824
|
+
Monthly balance entries for this account source. A `historical` entry is
|
|
1825
|
+
a stored snapshot of a past month and includes an `id`. A `current` entry
|
|
1826
|
+
is an ephemeral snapshot based on the account's current balances and has
|
|
1827
|
+
no balance-entry `id`. On PUT upsert responses, this array includes only
|
|
1828
|
+
the `type: historical` entries modified by that request.
|
|
1803
1829
|
items:
|
|
1804
|
-
$ref: "#/components/schemas/
|
|
1830
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1805
1831
|
required:
|
|
1806
1832
|
- source
|
|
1807
1833
|
- balances
|
|
1808
1834
|
|
|
1809
|
-
|
|
1835
|
+
historicalBalanceHistoryEntry:
|
|
1810
1836
|
type: object
|
|
1811
|
-
title: balance history entry
|
|
1837
|
+
title: historical balance history entry
|
|
1812
1838
|
additionalProperties: false
|
|
1813
1839
|
x-internal: true
|
|
1814
|
-
description:
|
|
1840
|
+
description: >
|
|
1841
|
+
A stored monthly balance for a past month. The `id` may be used with
|
|
1842
|
+
balance history entry endpoints. The balance represents the account
|
|
1843
|
+
balance at or around the end of `month`.
|
|
1815
1844
|
properties:
|
|
1845
|
+
type:
|
|
1846
|
+
type: string
|
|
1847
|
+
enum: [historical]
|
|
1848
|
+
description: Identifies this entry as a stored snapshot of a past month.
|
|
1816
1849
|
id:
|
|
1817
1850
|
type: integer
|
|
1818
1851
|
format: int32
|
|
1819
|
-
description: Unique identifier
|
|
1820
|
-
|
|
1852
|
+
description: Unique identifier for this historical balance entry.
|
|
1853
|
+
month:
|
|
1821
1854
|
type: string
|
|
1822
|
-
|
|
1823
|
-
description:
|
|
1855
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1856
|
+
description: Calendar month for this entry in YYYY-MM format.
|
|
1857
|
+
example: "2026-06"
|
|
1824
1858
|
balance:
|
|
1825
1859
|
type: string
|
|
1826
1860
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1827
|
-
description: Historical balance
|
|
1861
|
+
description: Historical balance for this entry, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
|
|
1828
1862
|
currency:
|
|
1829
1863
|
allOf:
|
|
1830
1864
|
- $ref: "#/components/schemas/currencyEnum"
|
|
1831
|
-
description: Currency of
|
|
1865
|
+
description: Currency of `balance`. For crypto entries this is the user's primary currency.
|
|
1832
1866
|
to_base:
|
|
1833
1867
|
type: number
|
|
1834
1868
|
format: double
|
|
@@ -1837,19 +1871,82 @@ components:
|
|
|
1837
1871
|
type: string
|
|
1838
1872
|
nullable: true
|
|
1839
1873
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1840
|
-
description: Crypto quantity
|
|
1874
|
+
description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1841
1875
|
required:
|
|
1876
|
+
- type
|
|
1842
1877
|
- id
|
|
1843
|
-
-
|
|
1878
|
+
- month
|
|
1844
1879
|
- balance
|
|
1845
1880
|
- currency
|
|
1846
1881
|
- to_base
|
|
1847
1882
|
- crypto_balance
|
|
1848
1883
|
|
|
1884
|
+
currentBalanceHistoryEntry:
|
|
1885
|
+
type: object
|
|
1886
|
+
title: current balance history entry
|
|
1887
|
+
additionalProperties: false
|
|
1888
|
+
x-internal: true
|
|
1889
|
+
description: >
|
|
1890
|
+
An ephemeral snapshot based on the account's current balances. It may
|
|
1891
|
+
change between requests.
|
|
1892
|
+
properties:
|
|
1893
|
+
type:
|
|
1894
|
+
type: string
|
|
1895
|
+
enum: [current]
|
|
1896
|
+
description: Identifies this entry as an ephemeral current-month snapshot.
|
|
1897
|
+
month:
|
|
1898
|
+
type: string
|
|
1899
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1900
|
+
description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
|
|
1901
|
+
example: "2026-07"
|
|
1902
|
+
balance:
|
|
1903
|
+
type: string
|
|
1904
|
+
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1905
|
+
description: Calculated balance for the current month, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
|
|
1906
|
+
currency:
|
|
1907
|
+
allOf:
|
|
1908
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
1909
|
+
description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
|
|
1910
|
+
to_base:
|
|
1911
|
+
type: number
|
|
1912
|
+
format: double
|
|
1913
|
+
description: Calculated balance converted to the user's primary currency. When the entry currency is the user's primary currency, this is the numeric value of `balance`.
|
|
1914
|
+
crypto_balance:
|
|
1915
|
+
type: string
|
|
1916
|
+
nullable: true
|
|
1917
|
+
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1918
|
+
description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
|
|
1919
|
+
required:
|
|
1920
|
+
- type
|
|
1921
|
+
- month
|
|
1922
|
+
- balance
|
|
1923
|
+
- currency
|
|
1924
|
+
- to_base
|
|
1925
|
+
- crypto_balance
|
|
1926
|
+
|
|
1927
|
+
balanceHistoryEntry:
|
|
1928
|
+
title: balance history entry
|
|
1929
|
+
x-internal: true
|
|
1930
|
+
description: >
|
|
1931
|
+
A monthly balance history entry. Discriminated by `type`. `historical`
|
|
1932
|
+
entries are stored snapshots of past months with an `id`. `current`
|
|
1933
|
+
entries are ephemeral snapshots with no balance-entry `id`.
|
|
1934
|
+
oneOf:
|
|
1935
|
+
- $ref: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1936
|
+
- $ref: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1937
|
+
discriminator:
|
|
1938
|
+
propertyName: type
|
|
1939
|
+
mapping:
|
|
1940
|
+
historical: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1941
|
+
current: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1942
|
+
|
|
1849
1943
|
balanceHistoryListResponseObject:
|
|
1850
1944
|
type: object
|
|
1851
1945
|
additionalProperties: false
|
|
1852
1946
|
x-internal: true
|
|
1947
|
+
description: >
|
|
1948
|
+
List response for balance history GET endpoints. Entries are grouped by
|
|
1949
|
+
account source under `balance_history`.
|
|
1853
1950
|
properties:
|
|
1854
1951
|
balance_history:
|
|
1855
1952
|
type: array
|
|
@@ -1862,31 +1959,39 @@ components:
|
|
|
1862
1959
|
type: object
|
|
1863
1960
|
x-internal: true
|
|
1864
1961
|
additionalProperties: false
|
|
1962
|
+
description: >
|
|
1963
|
+
A single monthly balance entry to upsert. Request bodies use this shape.
|
|
1964
|
+
Responses return `type: historical` entries instead.
|
|
1865
1965
|
properties:
|
|
1866
1966
|
id:
|
|
1867
1967
|
type: integer
|
|
1868
1968
|
format: int32
|
|
1869
1969
|
description: System-defined balance history entry id. Ignored if set.
|
|
1870
1970
|
x-updatable: false
|
|
1871
|
-
|
|
1971
|
+
month:
|
|
1872
1972
|
type: string
|
|
1873
|
-
|
|
1874
|
-
description:
|
|
1973
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1974
|
+
description: >
|
|
1975
|
+
Calendar month to upsert, in YYYY-MM format. Must be a past month.
|
|
1976
|
+
The current month cannot be written through PUT endpoints.
|
|
1977
|
+
example: "2026-06"
|
|
1875
1978
|
balance:
|
|
1876
1979
|
oneOf:
|
|
1877
1980
|
- type: number
|
|
1878
1981
|
format: double
|
|
1879
1982
|
- type: string
|
|
1880
1983
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1881
|
-
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is
|
|
1984
|
+
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is in the account currency. For crypto and deleted accounts this is in the user's primary currency. Do not include any special characters aside from a decimal point.
|
|
1882
1985
|
symbol:
|
|
1883
1986
|
type: string
|
|
1884
1987
|
nullable: true
|
|
1885
1988
|
minLength: 1
|
|
1886
1989
|
maxLength: 25
|
|
1887
|
-
description:
|
|
1888
|
-
|
|
1889
|
-
|
|
1990
|
+
description: >
|
|
1991
|
+
Optional for crypto balances. If set, it must match the account's
|
|
1992
|
+
symbol. Tolerated for deleted-account balances. Do not provide this
|
|
1993
|
+
for manual or Plaid balances. On the synced crypto path endpoint, if
|
|
1994
|
+
provided it must match the `symbol` path parameter.
|
|
1890
1995
|
x-updatable: true
|
|
1891
1996
|
crypto_balance:
|
|
1892
1997
|
type: string
|
|
@@ -1902,10 +2007,10 @@ components:
|
|
|
1902
2007
|
to_base:
|
|
1903
2008
|
type: number
|
|
1904
2009
|
format: double
|
|
1905
|
-
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the
|
|
2010
|
+
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
|
|
1906
2011
|
x-updatable: false
|
|
1907
2012
|
required:
|
|
1908
|
-
-
|
|
2013
|
+
- month
|
|
1909
2014
|
- balance
|
|
1910
2015
|
|
|
1911
2016
|
upsertBalanceHistoryRequestObject:
|
|
@@ -1916,7 +2021,11 @@ components:
|
|
|
1916
2021
|
balances:
|
|
1917
2022
|
type: array
|
|
1918
2023
|
minItems: 1
|
|
1919
|
-
description:
|
|
2024
|
+
description: >
|
|
2025
|
+
One or more monthly balance history entries to upsert. Each entry uses
|
|
2026
|
+
`month` (YYYY-MM) and `balance`. Do not include response-only fields such
|
|
2027
|
+
as `type`. PUT responses return only the `type: historical` entries
|
|
2028
|
+
modified by the request.
|
|
1920
2029
|
items:
|
|
1921
2030
|
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1922
2031
|
required:
|
|
@@ -1931,51 +2040,58 @@ components:
|
|
|
1931
2040
|
name:
|
|
1932
2041
|
type: string
|
|
1933
2042
|
nullable: true
|
|
1934
|
-
description: New archived account name for the deleted account source
|
|
2043
|
+
description: New archived account name for the deleted account source
|
|
1935
2044
|
institution_name:
|
|
1936
2045
|
type: string
|
|
1937
2046
|
nullable: true
|
|
1938
|
-
description: New archived institution name for the deleted account source
|
|
2047
|
+
description: New archived institution name for the deleted account source
|
|
1939
2048
|
display_name:
|
|
1940
2049
|
type: string
|
|
1941
2050
|
nullable: true
|
|
1942
|
-
description: New display name for the deleted account source
|
|
2051
|
+
description: New display name for the deleted account source
|
|
1943
2052
|
account_type:
|
|
1944
2053
|
type: string
|
|
1945
2054
|
nullable: true
|
|
1946
|
-
description: New archived account type for the deleted account source
|
|
2055
|
+
description: New archived account type for the deleted account source
|
|
1947
2056
|
subtype:
|
|
1948
2057
|
type: string
|
|
1949
2058
|
nullable: true
|
|
1950
|
-
description: New archived subtype for the deleted account source
|
|
2059
|
+
description: New archived subtype for the deleted account source
|
|
1951
2060
|
mask:
|
|
1952
2061
|
type: string
|
|
1953
2062
|
nullable: true
|
|
1954
|
-
description: New archived account mask for the deleted account source
|
|
2063
|
+
description: New archived account mask for the deleted account source
|
|
1955
2064
|
|
|
1956
2065
|
updateBalanceHistoryDetailsResponseObject:
|
|
1957
2066
|
type: object
|
|
1958
2067
|
x-internal: true
|
|
1959
2068
|
additionalProperties: false
|
|
2069
|
+
description: Updated archived metadata for a deleted balance history source
|
|
1960
2070
|
properties:
|
|
1961
2071
|
name:
|
|
1962
2072
|
type: string
|
|
1963
2073
|
nullable: true
|
|
2074
|
+
description: Archived account name for the deleted account source
|
|
1964
2075
|
institution_name:
|
|
1965
2076
|
type: string
|
|
1966
2077
|
nullable: true
|
|
2078
|
+
description: Archived institution name for the deleted account source
|
|
1967
2079
|
display_name:
|
|
1968
2080
|
type: string
|
|
1969
2081
|
nullable: true
|
|
2082
|
+
description: Archived display name for the deleted account source
|
|
1970
2083
|
account_type:
|
|
1971
2084
|
type: string
|
|
1972
2085
|
nullable: true
|
|
2086
|
+
description: Archived account type for the deleted account source
|
|
1973
2087
|
subtype:
|
|
1974
2088
|
type: string
|
|
1975
2089
|
nullable: true
|
|
2090
|
+
description: Archived subtype for the deleted account source
|
|
1976
2091
|
mask:
|
|
1977
2092
|
type: string
|
|
1978
2093
|
nullable: true
|
|
2094
|
+
description: Archived account mask for the deleted account source
|
|
1979
2095
|
required:
|
|
1980
2096
|
- name
|
|
1981
2097
|
- institution_name
|
|
@@ -2931,7 +3047,7 @@ components:
|
|
|
2931
3047
|
currency:
|
|
2932
3048
|
description: Three-letter lowercase currency code of the transaction
|
|
2933
3049
|
in ISO 4217 format. Must match one of the [supported
|
|
2934
|
-
currencies](https://
|
|
3050
|
+
currencies](https://lunchmoney.dev/v2/currencies). If not set
|
|
2935
3051
|
defaults to the user account's primary currency.
|
|
2936
3052
|
allOf:
|
|
2937
3053
|
- $ref: "#/components/schemas/currencyEnum"
|
|
@@ -3076,6 +3192,7 @@ components:
|
|
|
3076
3192
|
description: |
|
|
3077
3193
|
The new payee for the transaction.
|
|
3078
3194
|
minLength: 0
|
|
3195
|
+
x-updatable: true
|
|
3079
3196
|
original_name:
|
|
3080
3197
|
type: string
|
|
3081
3198
|
nullable: true
|
|
@@ -3287,9 +3404,10 @@ components:
|
|
|
3287
3404
|
category_id:
|
|
3288
3405
|
type: integer
|
|
3289
3406
|
format: int32
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3407
|
+
nullable: true
|
|
3408
|
+
description: Category ID for the child transaction. The category must
|
|
3409
|
+
already exist for the account. If omitted, the child inherits the
|
|
3410
|
+
parent category. If `null`, the child has no category.
|
|
3293
3411
|
tag_ids:
|
|
3294
3412
|
type: array
|
|
3295
3413
|
description: The IDs of any tags to apply to this split child
|
|
@@ -3299,7 +3417,10 @@ components:
|
|
|
3299
3417
|
format: int32
|
|
3300
3418
|
notes:
|
|
3301
3419
|
type: string
|
|
3302
|
-
|
|
3420
|
+
nullable: true
|
|
3421
|
+
description: Notes for the child transaction. If omitted, the child
|
|
3422
|
+
inherits the parent notes. If `null` or an empty string, the child
|
|
3423
|
+
has no notes.
|
|
3303
3424
|
required:
|
|
3304
3425
|
- amount
|
|
3305
3426
|
|
|
@@ -4442,22 +4563,10 @@ components:
|
|
|
4442
4563
|
securitySchemes:
|
|
4443
4564
|
bearerSecurity:
|
|
4444
4565
|
type: http
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
# the v1 API you can view and manage your API keys on the [developers page
|
|
4448
|
-
# in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
|
|
4449
|
-
# interact with the Static Mock Server simply enter an API key of 11
|
|
4450
|
-
# characters or more. <p> To interact with the v2 service implemented on
|
|
4451
|
-
# top of the v1 API paste in a real API token associated with a Lunch
|
|
4452
|
-
# Money Budget.
|
|
4453
|
-
description: To interact with the Static Mock Server simply enter an API
|
|
4454
|
-
key of 11 characters or more.
|
|
4566
|
+
description: >-
|
|
4567
|
+
Required for the LIVE server. Optional for MOCK.
|
|
4455
4568
|
scheme: bearer
|
|
4456
4569
|
bearerFormat: JWT
|
|
4457
|
-
cookieAuth:
|
|
4458
|
-
type: apiKey
|
|
4459
|
-
in: cookie
|
|
4460
|
-
name: _lm_access_token
|
|
4461
4570
|
|
|
4462
4571
|
paths:
|
|
4463
4572
|
/me:
|
|
@@ -5737,12 +5846,9 @@ paths:
|
|
|
5737
5846
|
tags:
|
|
5738
5847
|
- crypto-manual
|
|
5739
5848
|
summary: Get all supported cryptocurrencies
|
|
5740
|
-
description:
|
|
5849
|
+
description: |-
|
|
5741
5850
|
Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
|
|
5742
|
-
|
|
5743
|
-
When creating a new manual crypto balance via `POST /crypto/manual`, the
|
|
5744
|
-
`symbol` you specify must match the `symbol` of one of the entries
|
|
5745
|
-
returned by this endpoint.
|
|
5851
|
+
When creating a new manual crypto balance via `POST /crypto/manual`, the `symbol` you specify must match the `symbol` of one of the entries returned by this endpoint.
|
|
5746
5852
|
operationId: getAllCryptocurrencies
|
|
5747
5853
|
responses:
|
|
5748
5854
|
"200":
|
|
@@ -5780,16 +5886,9 @@ paths:
|
|
|
5780
5886
|
- crypto-manual
|
|
5781
5887
|
summary: Add a new supported cryptocurrency
|
|
5782
5888
|
operationId: createCryptocurrency
|
|
5783
|
-
description:
|
|
5889
|
+
description: |-
|
|
5784
5890
|
Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
|
|
5785
|
-
|
|
5786
|
-
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
|
|
5787
|
-
to convert crypto balances to the user's primary currency. Users add a
|
|
5788
|
-
new supported cryptocurrency by submitting a CoinGecko coin-page URL.
|
|
5789
|
-
The server validates the URL, extracts the id from `/coins/{id}`,
|
|
5790
|
-
checks for an existing supported `coingecko_id`, validates the id
|
|
5791
|
-
against CoinGecko, then confirms the resolved symbol is not already
|
|
5792
|
-
supported before creating the new entry.
|
|
5891
|
+
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum) to convert crypto balances to the user's primary currency. Users add a new supported cryptocurrency by submitting a CoinGecko coin-page URL. The server validates the URL, extracts the id from `/coins/{id}`, checks for an existing supported `coingecko_id`, validates the id against CoinGecko, then confirms the resolved symbol is not already supported before creating the new entry.
|
|
5793
5892
|
requestBody:
|
|
5794
5893
|
required: true
|
|
5795
5894
|
content:
|
|
@@ -5868,8 +5967,8 @@ paths:
|
|
|
5868
5967
|
tags:
|
|
5869
5968
|
- crypto-manual
|
|
5870
5969
|
summary: Get all manual crypto balances
|
|
5871
|
-
description:
|
|
5872
|
-
the user's account.
|
|
5970
|
+
description: |-
|
|
5971
|
+
Retrieve all manually managed crypto balances associated with the user's account.
|
|
5873
5972
|
operationId: getAllCryptoManual
|
|
5874
5973
|
responses:
|
|
5875
5974
|
"200":
|
|
@@ -5903,11 +6002,9 @@ paths:
|
|
|
5903
6002
|
tags:
|
|
5904
6003
|
- crypto-manual
|
|
5905
6004
|
summary: Create a manual crypto balance
|
|
5906
|
-
description:
|
|
6005
|
+
description: |-
|
|
5907
6006
|
Create a manually managed crypto asset.<br><br>
|
|
5908
|
-
|
|
5909
|
-
If `display_name` is `null`, clients may derive one from
|
|
5910
|
-
`institution_name` + `name`.
|
|
6007
|
+
If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
|
|
5911
6008
|
operationId: createCryptoManual
|
|
5912
6009
|
requestBody:
|
|
5913
6010
|
required: true
|
|
@@ -5992,7 +6089,8 @@ paths:
|
|
|
5992
6089
|
tags:
|
|
5993
6090
|
- crypto-manual
|
|
5994
6091
|
summary: Get a single manual crypto balance
|
|
5995
|
-
description:
|
|
6092
|
+
description: |-
|
|
6093
|
+
Retrieve a single manually managed crypto balance by ID.
|
|
5996
6094
|
operationId: getCryptoManualById
|
|
5997
6095
|
parameters:
|
|
5998
6096
|
- name: id
|
|
@@ -6060,11 +6158,9 @@ paths:
|
|
|
6060
6158
|
tags:
|
|
6061
6159
|
- crypto-manual
|
|
6062
6160
|
summary: Update a manual crypto balance
|
|
6063
|
-
description:
|
|
6161
|
+
description: |-
|
|
6064
6162
|
Modify a manually managed crypto balance.<br><br>
|
|
6065
|
-
|
|
6066
|
-
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
|
|
6067
|
-
are accepted according to the `x-updatable` metadata in the update schema.
|
|
6163
|
+
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties are accepted according to the `x-updatable` metadata in the update schema.
|
|
6068
6164
|
operationId: updateCryptoManual
|
|
6069
6165
|
parameters:
|
|
6070
6166
|
- name: id
|
|
@@ -6161,10 +6257,8 @@ paths:
|
|
|
6161
6257
|
tags:
|
|
6162
6258
|
- crypto-manual
|
|
6163
6259
|
summary: Delete a manual crypto balance
|
|
6164
|
-
description:
|
|
6165
|
-
this crypto asset has a balance history, and you do not explicitly set
|
|
6166
|
-
the query parameter`keep_history`, a 422 response will be returned
|
|
6167
|
-
requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
6260
|
+
description: |-
|
|
6261
|
+
Delete a single manually managed crypto asset by ID.<p> If this crypto asset has a balance history, and you do not explicitly set the query parameter`keep_history`, a 422 response will be returned requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
6168
6262
|
operationId: deleteCryptoManual
|
|
6169
6263
|
parameters:
|
|
6170
6264
|
- name: id
|
|
@@ -6229,8 +6323,8 @@ paths:
|
|
|
6229
6323
|
tags:
|
|
6230
6324
|
- crypto-synced
|
|
6231
6325
|
summary: Get all synced crypto accounts
|
|
6232
|
-
description:
|
|
6233
|
-
associated with the user's account.
|
|
6326
|
+
description: |-
|
|
6327
|
+
Retrieves all synced crypto accounts associated with the user's account.
|
|
6234
6328
|
operationId: getAllCryptoSynced
|
|
6235
6329
|
responses:
|
|
6236
6330
|
"200":
|
|
@@ -6292,8 +6386,8 @@ paths:
|
|
|
6292
6386
|
tags:
|
|
6293
6387
|
- crypto-synced
|
|
6294
6388
|
summary: Get a single synced crypto account
|
|
6295
|
-
description:
|
|
6296
|
-
for the specified synced crypto account ID.
|
|
6389
|
+
description: |-
|
|
6390
|
+
Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
|
|
6297
6391
|
operationId: getCryptoSyncedById
|
|
6298
6392
|
parameters:
|
|
6299
6393
|
- name: id
|
|
@@ -6373,8 +6467,8 @@ paths:
|
|
|
6373
6467
|
tags:
|
|
6374
6468
|
- crypto-synced
|
|
6375
6469
|
summary: Get a synced crypto balance by symbol
|
|
6376
|
-
description:
|
|
6377
|
-
account using the crypto symbol.
|
|
6470
|
+
description: |-
|
|
6471
|
+
Retrieves a single balance from the specified synced crypto account using the crypto symbol.
|
|
6378
6472
|
operationId: getCryptoSyncedBalanceBySymbol
|
|
6379
6473
|
parameters:
|
|
6380
6474
|
- name: id
|
|
@@ -6453,8 +6547,8 @@ paths:
|
|
|
6453
6547
|
tags:
|
|
6454
6548
|
- crypto-synced
|
|
6455
6549
|
summary: Refresh balances for a synced crypto account
|
|
6456
|
-
description:
|
|
6457
|
-
account. Returns the refreshed synced crypto account.
|
|
6550
|
+
description: |-
|
|
6551
|
+
Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
|
|
6458
6552
|
operationId: refreshCryptoSynced
|
|
6459
6553
|
parameters:
|
|
6460
6554
|
- name: id
|
|
@@ -6523,51 +6617,55 @@ paths:
|
|
|
6523
6617
|
tags:
|
|
6524
6618
|
- balance_history
|
|
6525
6619
|
summary: Get balance history
|
|
6526
|
-
description:
|
|
6527
|
-
Retrieve
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
`
|
|
6537
|
-
|
|
6538
|
-
stored entries when no range is provided.<br><br>
|
|
6539
|
-
|
|
6540
|
-
Historical entries for accounts that have been deleted may still
|
|
6541
|
-
be returned. These entries use `source.type: deleted` and include
|
|
6542
|
-
`deleted_account_id`, archived display fields, and account metadata on the
|
|
6543
|
-
`source` object.
|
|
6620
|
+
description: |-
|
|
6621
|
+
Retrieve monthly balance history for all account sources.<br><br>
|
|
6622
|
+
Balance history is monthly. Each entry represents the account balance at or around the end of the specified month. System-generated entries are generally captured near the boundary between months.<br><br>
|
|
6623
|
+
Query with optional `start_month` and `end_month` in YYYY-MM format. The range is inclusive. If either parameter is provided, both are required. `start_month` must not be in the future. `end_month` may not be earlier than `start_month` and must not be in the future. Values must be valid calendar months in exact YYYY-MM format. A full date such as `2026-06-01` is invalid. If neither is provided, all available balance history is returned, including an ephemeral `current` entry for the current month when applicable.<br><br>
|
|
6624
|
+
The response groups entries by source account. Each item in `balance_history` contains a `source` object plus a `balances` array. Within a requested range (or across all history when no range is provided), the array includes only months that have data — months with no data are omitted. A `current` entry is also included when the requested range includes the current month.<br><br>
|
|
6625
|
+
Each balance entry has a `type`:<br>
|
|
6626
|
+
- `historical`: stored snapshot of a past month for an active or deleted account. Includes an `id` that can be used with balance history entry endpoints<br>
|
|
6627
|
+
- `current`: snapshot based on the account's current balances. It is ephemeral and may change between requests. To inspect the underlying account, use the type-specific source id for the `source.type` values:<br>
|
|
6628
|
+
- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
|
|
6629
|
+
- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
|
|
6630
|
+
- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
|
|
6631
|
+
- `crypto_synced`: `source.crypto_synced_id` and `source.symbol` with [GET /crypto/synced/{id}/{symbol}](#tag/crypto-synced/GET/crypto/synced/{id}/{symbol})
|
|
6544
6632
|
operationId: getBalanceHistory
|
|
6545
6633
|
parameters:
|
|
6546
|
-
- name:
|
|
6634
|
+
- name: start_month
|
|
6547
6635
|
in: query
|
|
6548
|
-
description:
|
|
6636
|
+
description: >-
|
|
6637
|
+
Optional start of the requested history range as a calendar month in
|
|
6638
|
+
YYYY-MM format (for example `2026-06`). If set, `end_month` is also
|
|
6639
|
+
required. The range is inclusive. `start_month` must not be in the
|
|
6640
|
+
future. A full date such as `2026-06-01` is invalid.
|
|
6549
6641
|
required: false
|
|
6550
6642
|
schema:
|
|
6551
6643
|
type: string
|
|
6552
|
-
|
|
6644
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6553
6645
|
examples:
|
|
6554
6646
|
range start:
|
|
6555
|
-
summary: Start
|
|
6556
|
-
value: "2026-01
|
|
6557
|
-
- name:
|
|
6647
|
+
summary: Start month
|
|
6648
|
+
value: "2026-01"
|
|
6649
|
+
- name: end_month
|
|
6558
6650
|
in: query
|
|
6559
|
-
description:
|
|
6651
|
+
description: >-
|
|
6652
|
+
Optional end of the requested history range as a calendar month in
|
|
6653
|
+
YYYY-MM format (for example `2026-06`). If set, `start_month` is also
|
|
6654
|
+
required. The range is inclusive. `end_month` may not be earlier than
|
|
6655
|
+
`start_month` and must not be in the future. A full date such as
|
|
6656
|
+
`2026-06-01` is invalid. For a single month, set this to the same
|
|
6657
|
+
value as `start_month`.
|
|
6560
6658
|
required: false
|
|
6561
6659
|
schema:
|
|
6562
6660
|
type: string
|
|
6563
|
-
|
|
6661
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6564
6662
|
examples:
|
|
6565
6663
|
range end:
|
|
6566
|
-
summary: End
|
|
6567
|
-
value: "2026-03
|
|
6664
|
+
summary: End month
|
|
6665
|
+
value: "2026-03"
|
|
6568
6666
|
responses:
|
|
6569
6667
|
"200":
|
|
6570
|
-
description:
|
|
6668
|
+
description: Monthly balance history for the requested month range
|
|
6571
6669
|
content:
|
|
6572
6670
|
application/json:
|
|
6573
6671
|
schema:
|
|
@@ -6580,14 +6678,16 @@ paths:
|
|
|
6580
6678
|
type: manual
|
|
6581
6679
|
manual_account_id: 119807
|
|
6582
6680
|
balances:
|
|
6583
|
-
-
|
|
6584
|
-
|
|
6681
|
+
- type: historical
|
|
6682
|
+
id: 101
|
|
6683
|
+
month: "2026-01"
|
|
6585
6684
|
balance: "41000.0000"
|
|
6586
6685
|
currency: usd
|
|
6587
6686
|
to_base: 41000
|
|
6588
6687
|
crypto_balance: null
|
|
6589
|
-
-
|
|
6590
|
-
|
|
6688
|
+
- type: historical
|
|
6689
|
+
id: 102
|
|
6690
|
+
month: "2026-02"
|
|
6591
6691
|
balance: "41211.8000"
|
|
6592
6692
|
currency: usd
|
|
6593
6693
|
to_base: 41211.8
|
|
@@ -6596,8 +6696,9 @@ paths:
|
|
|
6596
6696
|
type: plaid
|
|
6597
6697
|
plaid_account_id: 119808
|
|
6598
6698
|
balances:
|
|
6599
|
-
-
|
|
6600
|
-
|
|
6699
|
+
- type: historical
|
|
6700
|
+
id: 103
|
|
6701
|
+
month: "2026-01"
|
|
6601
6702
|
balance: "5498.2800"
|
|
6602
6703
|
currency: usd
|
|
6603
6704
|
to_base: 5498.28
|
|
@@ -6607,8 +6708,9 @@ paths:
|
|
|
6607
6708
|
crypto_manual_id: 22001
|
|
6608
6709
|
symbol: btc
|
|
6609
6710
|
balances:
|
|
6610
|
-
-
|
|
6611
|
-
|
|
6711
|
+
- type: historical
|
|
6712
|
+
id: 104
|
|
6713
|
+
month: "2026-01"
|
|
6612
6714
|
balance: "53124.7200"
|
|
6613
6715
|
currency: usd
|
|
6614
6716
|
to_base: 53124.72
|
|
@@ -6618,8 +6720,9 @@ paths:
|
|
|
6618
6720
|
crypto_synced_id: 33004
|
|
6619
6721
|
symbol: btc
|
|
6620
6722
|
balances:
|
|
6621
|
-
-
|
|
6622
|
-
|
|
6723
|
+
- type: historical
|
|
6724
|
+
id: 105
|
|
6725
|
+
month: "2026-01"
|
|
6623
6726
|
balance: "6231.2800"
|
|
6624
6727
|
currency: usd
|
|
6625
6728
|
to_base: 6231.28
|
|
@@ -6635,12 +6738,34 @@ paths:
|
|
|
6635
6738
|
mask: "1234"
|
|
6636
6739
|
symbol: null
|
|
6637
6740
|
balances:
|
|
6638
|
-
-
|
|
6639
|
-
|
|
6741
|
+
- type: historical
|
|
6742
|
+
id: 106
|
|
6743
|
+
month: "2026-01"
|
|
6640
6744
|
balance: "1250.0000"
|
|
6641
6745
|
currency: usd
|
|
6642
6746
|
to_base: 1250
|
|
6643
6747
|
crypto_balance: null
|
|
6748
|
+
historical and current:
|
|
6749
|
+
summary: Historical month plus ephemeral current month
|
|
6750
|
+
value:
|
|
6751
|
+
balance_history:
|
|
6752
|
+
- source:
|
|
6753
|
+
type: manual
|
|
6754
|
+
manual_account_id: 162003
|
|
6755
|
+
balances:
|
|
6756
|
+
- type: historical
|
|
6757
|
+
id: 7437356
|
|
6758
|
+
month: "2026-06"
|
|
6759
|
+
balance: "62.8"
|
|
6760
|
+
currency: usd
|
|
6761
|
+
to_base: 62.8
|
|
6762
|
+
crypto_balance: null
|
|
6763
|
+
- type: current
|
|
6764
|
+
month: "2026-07"
|
|
6765
|
+
balance: "71.2"
|
|
6766
|
+
currency: usd
|
|
6767
|
+
to_base: 71.2
|
|
6768
|
+
crypto_balance: null
|
|
6644
6769
|
manual account history:
|
|
6645
6770
|
value:
|
|
6646
6771
|
balance_history:
|
|
@@ -6648,14 +6773,16 @@ paths:
|
|
|
6648
6773
|
type: manual
|
|
6649
6774
|
manual_account_id: 119807
|
|
6650
6775
|
balances:
|
|
6651
|
-
-
|
|
6652
|
-
|
|
6776
|
+
- type: historical
|
|
6777
|
+
id: 201
|
|
6778
|
+
month: "2026-01"
|
|
6653
6779
|
balance: "41000.0000"
|
|
6654
6780
|
currency: usd
|
|
6655
6781
|
to_base: 41000
|
|
6656
6782
|
crypto_balance: null
|
|
6657
|
-
-
|
|
6658
|
-
|
|
6783
|
+
- type: historical
|
|
6784
|
+
id: 202
|
|
6785
|
+
month: "2026-02"
|
|
6659
6786
|
balance: "41211.8000"
|
|
6660
6787
|
currency: usd
|
|
6661
6788
|
to_base: 41211.8
|
|
@@ -6667,8 +6794,9 @@ paths:
|
|
|
6667
6794
|
type: plaid
|
|
6668
6795
|
plaid_account_id: 119808
|
|
6669
6796
|
balances:
|
|
6670
|
-
-
|
|
6671
|
-
|
|
6797
|
+
- type: historical
|
|
6798
|
+
id: 301
|
|
6799
|
+
month: "2026-02"
|
|
6672
6800
|
balance: "5498.2800"
|
|
6673
6801
|
currency: usd
|
|
6674
6802
|
to_base: 5498.28
|
|
@@ -6681,8 +6809,9 @@ paths:
|
|
|
6681
6809
|
crypto_synced_id: 33004
|
|
6682
6810
|
symbol: btc
|
|
6683
6811
|
balances:
|
|
6684
|
-
-
|
|
6685
|
-
|
|
6812
|
+
- type: historical
|
|
6813
|
+
id: 401
|
|
6814
|
+
month: "2026-02"
|
|
6686
6815
|
balance: "6231.2800"
|
|
6687
6816
|
currency: usd
|
|
6688
6817
|
to_base: 6231.28
|
|
@@ -6701,8 +6830,9 @@ paths:
|
|
|
6701
6830
|
mask: "1234"
|
|
6702
6831
|
symbol: null
|
|
6703
6832
|
balances:
|
|
6704
|
-
-
|
|
6705
|
-
|
|
6833
|
+
- type: historical
|
|
6834
|
+
id: 501
|
|
6835
|
+
month: "2026-01"
|
|
6706
6836
|
balance: "1250.0000"
|
|
6707
6837
|
currency: usd
|
|
6708
6838
|
to_base: 1250
|
|
@@ -6714,26 +6844,31 @@ paths:
|
|
|
6714
6844
|
schema:
|
|
6715
6845
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6716
6846
|
examples:
|
|
6717
|
-
missing paired
|
|
6847
|
+
missing paired month:
|
|
6718
6848
|
value:
|
|
6719
6849
|
message: Request Validation Failure
|
|
6720
6850
|
errors:
|
|
6721
|
-
- errMsg: "`
|
|
6851
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
6722
6852
|
invalid range:
|
|
6723
6853
|
value:
|
|
6724
6854
|
message: Request Validation Failure
|
|
6725
6855
|
errors:
|
|
6726
|
-
- errMsg: "`
|
|
6727
|
-
|
|
6856
|
+
- errMsg: "`end_month` may not be earlier than `start_month`."
|
|
6857
|
+
invalid month format:
|
|
6858
|
+
value:
|
|
6859
|
+
message: Invalid Request Parameters
|
|
6860
|
+
errors:
|
|
6861
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
6862
|
+
future start month:
|
|
6728
6863
|
value:
|
|
6729
6864
|
message: Request Validation Failure
|
|
6730
6865
|
errors:
|
|
6731
|
-
- errMsg: "`
|
|
6732
|
-
future
|
|
6866
|
+
- errMsg: "`start_month` must not be in the future."
|
|
6867
|
+
future end month:
|
|
6733
6868
|
value:
|
|
6734
6869
|
message: Request Validation Failure
|
|
6735
6870
|
errors:
|
|
6736
|
-
- errMsg: "`
|
|
6871
|
+
- errMsg: "`end_month` must not be in the future."
|
|
6737
6872
|
"401":
|
|
6738
6873
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6739
6874
|
"429":
|
|
@@ -6745,23 +6880,16 @@ paths:
|
|
|
6745
6880
|
tags:
|
|
6746
6881
|
- balance_history
|
|
6747
6882
|
summary: Get balance history for an account
|
|
6748
|
-
description:
|
|
6749
|
-
Retrieve
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
The `account_type` path parameter identifies the type of account and the
|
|
6753
|
-
`account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6754
|
-
|
|
6755
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
6756
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
6757
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
6758
|
-
provided, all available history for the source is returned.
|
|
6883
|
+
description: |-
|
|
6884
|
+
Retrieve monthly balance history for one manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [GET /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/GET/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
|
|
6885
|
+
The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
|
|
6886
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6759
6887
|
operationId: getBalanceHistoryForAccount
|
|
6760
6888
|
parameters:
|
|
6761
6889
|
- name: account_type
|
|
6762
6890
|
in: path
|
|
6763
6891
|
required: true
|
|
6764
|
-
description:
|
|
6892
|
+
description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6765
6893
|
schema:
|
|
6766
6894
|
type: string
|
|
6767
6895
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6772,23 +6900,27 @@ paths:
|
|
|
6772
6900
|
schema:
|
|
6773
6901
|
type: integer
|
|
6774
6902
|
format: int32
|
|
6775
|
-
- name:
|
|
6903
|
+
- name: start_month
|
|
6776
6904
|
in: query
|
|
6777
|
-
description:
|
|
6905
|
+
description: >-
|
|
6906
|
+
Optional. Same format and constraints as `start_month` on
|
|
6907
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6778
6908
|
required: false
|
|
6779
6909
|
schema:
|
|
6780
6910
|
type: string
|
|
6781
|
-
|
|
6782
|
-
- name:
|
|
6911
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6912
|
+
- name: end_month
|
|
6783
6913
|
in: query
|
|
6784
|
-
description:
|
|
6914
|
+
description: >-
|
|
6915
|
+
Optional. Same format and constraints as `end_month` on
|
|
6916
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6785
6917
|
required: false
|
|
6786
6918
|
schema:
|
|
6787
6919
|
type: string
|
|
6788
|
-
|
|
6920
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6789
6921
|
responses:
|
|
6790
6922
|
"200":
|
|
6791
|
-
description:
|
|
6923
|
+
description: Monthly balance history for the requested source
|
|
6792
6924
|
content:
|
|
6793
6925
|
application/json:
|
|
6794
6926
|
schema:
|
|
@@ -6801,14 +6933,16 @@ paths:
|
|
|
6801
6933
|
type: manual
|
|
6802
6934
|
manual_account_id: 119807
|
|
6803
6935
|
balances:
|
|
6804
|
-
-
|
|
6805
|
-
|
|
6936
|
+
- type: historical
|
|
6937
|
+
id: 201
|
|
6938
|
+
month: "2026-01"
|
|
6806
6939
|
balance: "41000.0000"
|
|
6807
6940
|
currency: usd
|
|
6808
6941
|
to_base: 41000
|
|
6809
6942
|
crypto_balance: null
|
|
6810
|
-
-
|
|
6811
|
-
|
|
6943
|
+
- type: historical
|
|
6944
|
+
id: 202
|
|
6945
|
+
month: "2026-02"
|
|
6812
6946
|
balance: "41211.8000"
|
|
6813
6947
|
currency: usd
|
|
6814
6948
|
to_base: 41211.8
|
|
@@ -6827,8 +6961,9 @@ paths:
|
|
|
6827
6961
|
mask: "1234"
|
|
6828
6962
|
symbol: null
|
|
6829
6963
|
balances:
|
|
6830
|
-
-
|
|
6831
|
-
|
|
6964
|
+
- type: historical
|
|
6965
|
+
id: 501
|
|
6966
|
+
month: "2026-01"
|
|
6832
6967
|
balance: "1250.0000"
|
|
6833
6968
|
currency: usd
|
|
6834
6969
|
to_base: 1250
|
|
@@ -6840,16 +6975,16 @@ paths:
|
|
|
6840
6975
|
schema:
|
|
6841
6976
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6842
6977
|
examples:
|
|
6843
|
-
missing paired
|
|
6978
|
+
missing paired month:
|
|
6844
6979
|
value:
|
|
6845
6980
|
message: Request Validation Failure
|
|
6846
6981
|
errors:
|
|
6847
|
-
- errMsg: "`
|
|
6848
|
-
invalid
|
|
6982
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
6983
|
+
invalid month format:
|
|
6849
6984
|
value:
|
|
6850
|
-
message: Request
|
|
6985
|
+
message: Invalid Request Parameters
|
|
6851
6986
|
errors:
|
|
6852
|
-
- errMsg: "
|
|
6987
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
6853
6988
|
"401":
|
|
6854
6989
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6855
6990
|
"404":
|
|
@@ -6877,37 +7012,20 @@ paths:
|
|
|
6877
7012
|
tags:
|
|
6878
7013
|
- balance_history
|
|
6879
7014
|
summary: Upsert balance history for an account
|
|
6880
|
-
description:
|
|
6881
|
-
Upsert one or more historical balance entries for a single manual, Plaid,
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6885
|
-
`
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
a `date` and `balance` value.<br><br>
|
|
6889
|
-
|
|
6890
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
6891
|
-
a month and must be in a past month.<br><br>
|
|
6892
|
-
|
|
6893
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
6894
|
-
to the account currency for manual/Plaid accounts, or the user's primary
|
|
6895
|
-
currency for crypto/deleted accounts.<br><br>
|
|
6896
|
-
|
|
6897
|
-
`symbol` may only be set when `account_type` is `crypto_manual` or
|
|
6898
|
-
`crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
|
|
6899
|
-
for `deleted` accounts.<br><br>
|
|
6900
|
-
|
|
6901
|
-
`crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
|
|
6902
|
-
`deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
6903
|
-
|
|
6904
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7015
|
+
description: |-
|
|
7016
|
+
Upsert one or more historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [PUT /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/PUT/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
|
|
7017
|
+
The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
|
|
7018
|
+
Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
|
|
7019
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the account currency for manual/Plaid accounts, or the user's primary currency for crypto/deleted accounts.<br><br>
|
|
7020
|
+
`symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
|
|
7021
|
+
`crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7022
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
6905
7023
|
operationId: upsertBalanceHistoryForAccount
|
|
6906
7024
|
parameters:
|
|
6907
7025
|
- name: account_type
|
|
6908
7026
|
in: path
|
|
6909
7027
|
required: true
|
|
6910
|
-
description:
|
|
7028
|
+
description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6911
7029
|
schema:
|
|
6912
7030
|
type: string
|
|
6913
7031
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6928,21 +7046,21 @@ paths:
|
|
|
6928
7046
|
manual account bulk upsert:
|
|
6929
7047
|
value:
|
|
6930
7048
|
balances:
|
|
6931
|
-
-
|
|
7049
|
+
- month: "2026-03"
|
|
6932
7050
|
balance: "41500.0000"
|
|
6933
|
-
-
|
|
7051
|
+
- month: "2026-04"
|
|
6934
7052
|
balance: "41625.5000"
|
|
6935
7053
|
crypto manual balance with symbol:
|
|
6936
7054
|
value:
|
|
6937
7055
|
balances:
|
|
6938
|
-
-
|
|
7056
|
+
- month: "2026-03"
|
|
6939
7057
|
balance: "56011.1200"
|
|
6940
7058
|
symbol: btc
|
|
6941
7059
|
crypto_balance: "0.852341920145782301"
|
|
6942
7060
|
deleted account bulk upsert:
|
|
6943
7061
|
value:
|
|
6944
7062
|
balances:
|
|
6945
|
-
-
|
|
7063
|
+
- month: "2026-03"
|
|
6946
7064
|
symbol: btc
|
|
6947
7065
|
crypto_balance: "0.020000000000000000"
|
|
6948
7066
|
currency: usd
|
|
@@ -6951,55 +7069,59 @@ paths:
|
|
|
6951
7069
|
value:
|
|
6952
7070
|
balances:
|
|
6953
7071
|
- id: 601
|
|
6954
|
-
|
|
7072
|
+
month: "2026-03"
|
|
6955
7073
|
balance: "41500.0000"
|
|
6956
7074
|
currency: usd
|
|
6957
7075
|
to_base: 41500
|
|
6958
7076
|
crypto_balance: null
|
|
6959
7077
|
responses:
|
|
6960
7078
|
"200":
|
|
6961
|
-
description:
|
|
6962
|
-
|
|
7079
|
+
description: >-
|
|
7080
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7081
|
+
Other historical entries for the account are omitted from `balances`.
|
|
6963
7082
|
content:
|
|
6964
7083
|
application/json:
|
|
6965
7084
|
schema:
|
|
6966
7085
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
6967
7086
|
examples:
|
|
6968
7087
|
manual account bulk upsert:
|
|
6969
|
-
summary: Two upserted
|
|
7088
|
+
summary: Two upserted entries returned (not full account history)
|
|
6970
7089
|
value:
|
|
6971
7090
|
source:
|
|
6972
7091
|
type: manual
|
|
6973
7092
|
manual_account_id: 119807
|
|
6974
7093
|
balances:
|
|
6975
|
-
-
|
|
6976
|
-
|
|
7094
|
+
- type: historical
|
|
7095
|
+
id: 601
|
|
7096
|
+
month: "2026-03"
|
|
6977
7097
|
balance: "41500.0000"
|
|
6978
7098
|
currency: usd
|
|
6979
7099
|
to_base: 41500
|
|
6980
7100
|
crypto_balance: null
|
|
6981
|
-
-
|
|
6982
|
-
|
|
7101
|
+
- type: historical
|
|
7102
|
+
id: 602
|
|
7103
|
+
month: "2026-04"
|
|
6983
7104
|
balance: "41625.5000"
|
|
6984
7105
|
currency: usd
|
|
6985
7106
|
to_base: 41625.5
|
|
6986
7107
|
crypto_balance: null
|
|
6987
7108
|
crypto manual balance with symbol:
|
|
6988
|
-
summary: Single upserted
|
|
7109
|
+
summary: Single upserted entry returned
|
|
6989
7110
|
value:
|
|
6990
7111
|
source:
|
|
6991
7112
|
type: crypto_manual
|
|
6992
7113
|
crypto_manual_id: 22001
|
|
6993
7114
|
symbol: btc
|
|
6994
7115
|
balances:
|
|
6995
|
-
-
|
|
6996
|
-
|
|
7116
|
+
- type: historical
|
|
7117
|
+
id: 603
|
|
7118
|
+
month: "2026-03"
|
|
6997
7119
|
balance: "56011.1200"
|
|
6998
7120
|
currency: usd
|
|
6999
7121
|
to_base: 56011.12
|
|
7000
7122
|
crypto_balance: "0.852341920145782301"
|
|
7001
7123
|
deleted account bulk upsert:
|
|
7002
|
-
summary: Single upserted
|
|
7124
|
+
summary: Single upserted entry returned
|
|
7003
7125
|
value:
|
|
7004
7126
|
source:
|
|
7005
7127
|
type: deleted
|
|
@@ -7012,15 +7134,17 @@ paths:
|
|
|
7012
7134
|
mask: "1234"
|
|
7013
7135
|
symbol: btc
|
|
7014
7136
|
balances:
|
|
7015
|
-
-
|
|
7016
|
-
|
|
7137
|
+
- type: historical
|
|
7138
|
+
id: 504
|
|
7139
|
+
month: "2026-03"
|
|
7017
7140
|
balance: "1255"
|
|
7018
7141
|
currency: usd
|
|
7019
7142
|
to_base: 1255
|
|
7020
7143
|
crypto_balance: "0.020000000000000000"
|
|
7021
7144
|
"400":
|
|
7022
|
-
description:
|
|
7023
|
-
`balances` fails validation
|
|
7145
|
+
description: >-
|
|
7146
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7147
|
+
request is rejected and no entries are updated.
|
|
7024
7148
|
content:
|
|
7025
7149
|
application/json:
|
|
7026
7150
|
schema:
|
|
@@ -7041,30 +7165,34 @@ paths:
|
|
|
7041
7165
|
message: Invalid Request Body
|
|
7042
7166
|
errors:
|
|
7043
7167
|
- errMsg: "Invalid property 'foo' in request body."
|
|
7044
|
-
invalid
|
|
7168
|
+
invalid month format:
|
|
7169
|
+
value:
|
|
7170
|
+
message: Invalid Request Body
|
|
7171
|
+
errors:
|
|
7172
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7173
|
+
current month:
|
|
7045
7174
|
value:
|
|
7046
7175
|
message: Request Validation Failure
|
|
7047
7176
|
errors:
|
|
7048
|
-
- errMsg: "`
|
|
7177
|
+
- errMsg: "`month` must not be the current month."
|
|
7049
7178
|
request_balances_index: 0
|
|
7050
|
-
|
|
7051
|
-
future date:
|
|
7179
|
+
future month:
|
|
7052
7180
|
value:
|
|
7053
7181
|
message: Request Validation Failure
|
|
7054
7182
|
errors:
|
|
7055
|
-
- errMsg: "`
|
|
7183
|
+
- errMsg: "`month` must not be in the future."
|
|
7056
7184
|
request_balances_index: 1
|
|
7057
7185
|
crypto balance not allowed:
|
|
7058
7186
|
value:
|
|
7059
7187
|
message: Request Validation Failure
|
|
7060
7188
|
errors:
|
|
7061
|
-
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual
|
|
7189
|
+
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7062
7190
|
request_balances_index: 0
|
|
7063
|
-
invalid
|
|
7191
|
+
invalid entry in bulk request:
|
|
7064
7192
|
value:
|
|
7065
7193
|
message: Request Validation Failure
|
|
7066
7194
|
errors:
|
|
7067
|
-
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `
|
|
7195
|
+
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7068
7196
|
request_balances_index: 1
|
|
7069
7197
|
"401":
|
|
7070
7198
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -7086,15 +7214,14 @@ paths:
|
|
|
7086
7214
|
tags:
|
|
7087
7215
|
- balance_history
|
|
7088
7216
|
summary: Delete all balance history for an account
|
|
7089
|
-
description:
|
|
7090
|
-
Delete all historical balance entries for a single manual, Plaid,
|
|
7091
|
-
manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
7217
|
+
description: |-
|
|
7218
|
+
Delete all historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [DELETE /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/DELETE/balance_history/crypto_synced/{account_id}/{symbol}).
|
|
7092
7219
|
operationId: deleteBalanceHistoryForAccount
|
|
7093
7220
|
parameters:
|
|
7094
7221
|
- name: account_type
|
|
7095
7222
|
in: path
|
|
7096
7223
|
required: true
|
|
7097
|
-
description:
|
|
7224
|
+
description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7098
7225
|
schema:
|
|
7099
7226
|
type: string
|
|
7100
7227
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7131,16 +7258,10 @@ paths:
|
|
|
7131
7258
|
tags:
|
|
7132
7259
|
- balance_history
|
|
7133
7260
|
summary: Get balance history for a synced crypto symbol
|
|
7134
|
-
description:
|
|
7135
|
-
Retrieve
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
to select one balance stream within that synced crypto account.<br><br>
|
|
7139
|
-
|
|
7140
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7141
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7142
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7143
|
-
provided, all available history for the symbol stream is returned.
|
|
7261
|
+
description: |-
|
|
7262
|
+
Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
|
|
7263
|
+
The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
|
|
7264
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7144
7265
|
operationId: getBalanceHistoryForCryptoSynced
|
|
7145
7266
|
parameters:
|
|
7146
7267
|
- name: account_id
|
|
@@ -7158,23 +7279,27 @@ paths:
|
|
|
7158
7279
|
type: string
|
|
7159
7280
|
minLength: 1
|
|
7160
7281
|
maxLength: 25
|
|
7161
|
-
- name:
|
|
7282
|
+
- name: start_month
|
|
7162
7283
|
in: query
|
|
7163
|
-
description:
|
|
7284
|
+
description: >-
|
|
7285
|
+
Optional. Same format and constraints as `start_month` on
|
|
7286
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7164
7287
|
required: false
|
|
7165
7288
|
schema:
|
|
7166
7289
|
type: string
|
|
7167
|
-
|
|
7168
|
-
- name:
|
|
7290
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7291
|
+
- name: end_month
|
|
7169
7292
|
in: query
|
|
7170
|
-
description:
|
|
7293
|
+
description: >-
|
|
7294
|
+
Optional. Same format and constraints as `end_month` on
|
|
7295
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7171
7296
|
required: false
|
|
7172
7297
|
schema:
|
|
7173
7298
|
type: string
|
|
7174
|
-
|
|
7299
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7175
7300
|
responses:
|
|
7176
7301
|
"200":
|
|
7177
|
-
description:
|
|
7302
|
+
description: Monthly balance history for the synced crypto symbol stream
|
|
7178
7303
|
content:
|
|
7179
7304
|
application/json:
|
|
7180
7305
|
schema:
|
|
@@ -7186,8 +7311,9 @@ paths:
|
|
|
7186
7311
|
crypto_synced_id: 33004
|
|
7187
7312
|
symbol: btc
|
|
7188
7313
|
balances:
|
|
7189
|
-
-
|
|
7190
|
-
|
|
7314
|
+
- type: historical
|
|
7315
|
+
id: 401
|
|
7316
|
+
month: "2026-02"
|
|
7191
7317
|
balance: "6231.2800"
|
|
7192
7318
|
currency: usd
|
|
7193
7319
|
to_base: 6231.28
|
|
@@ -7199,16 +7325,16 @@ paths:
|
|
|
7199
7325
|
schema:
|
|
7200
7326
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7201
7327
|
examples:
|
|
7202
|
-
missing paired
|
|
7328
|
+
missing paired month:
|
|
7203
7329
|
value:
|
|
7204
7330
|
message: Request Validation Failure
|
|
7205
7331
|
errors:
|
|
7206
|
-
- errMsg: "`
|
|
7207
|
-
invalid
|
|
7332
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7333
|
+
invalid month format:
|
|
7208
7334
|
value:
|
|
7209
|
-
message: Request
|
|
7335
|
+
message: Invalid Request Parameters
|
|
7210
7336
|
errors:
|
|
7211
|
-
- errMsg: "
|
|
7337
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7212
7338
|
"401":
|
|
7213
7339
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7214
7340
|
"404":
|
|
@@ -7236,28 +7362,14 @@ paths:
|
|
|
7236
7362
|
tags:
|
|
7237
7363
|
- balance_history
|
|
7238
7364
|
summary: Upsert balance history for a synced crypto symbol
|
|
7239
|
-
description:
|
|
7240
|
-
Upsert one or more historical balance entries for a single synced crypto
|
|
7241
|
-
symbol stream.<br><br>
|
|
7242
|
-
|
|
7365
|
+
description: |-
|
|
7366
|
+
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7243
7367
|
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7249
|
-
a month and must be in a past month.<br><br>
|
|
7250
|
-
|
|
7251
|
-
The request body may include an optional `symbol` on each balance entry. If
|
|
7252
|
-
provided, it must match the `symbol` path parameter. Omit `symbol` to use
|
|
7253
|
-
the path value.<br><br>
|
|
7254
|
-
|
|
7255
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7256
|
-
to the user's primary currency for synced crypto balances.<br><br>
|
|
7257
|
-
|
|
7368
|
+
Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
|
|
7369
|
+
The request body may include an optional `symbol` on each balance entry. If provided, it must match the `symbol` path parameter. Omit `symbol` to use the path value.<br><br>
|
|
7370
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7258
7371
|
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7259
|
-
|
|
7260
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7372
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7261
7373
|
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7262
7374
|
parameters:
|
|
7263
7375
|
- name: account_id
|
|
@@ -7285,44 +7397,49 @@ paths:
|
|
|
7285
7397
|
synced crypto bulk upsert:
|
|
7286
7398
|
value:
|
|
7287
7399
|
balances:
|
|
7288
|
-
-
|
|
7400
|
+
- month: "2026-03"
|
|
7289
7401
|
balance: "6400.0000"
|
|
7290
7402
|
crypto_balance: "0.100020003000400050"
|
|
7291
|
-
-
|
|
7403
|
+
- month: "2026-04"
|
|
7292
7404
|
balance: "6500.0000"
|
|
7293
7405
|
crypto_balance: "0.100020003000400050"
|
|
7294
7406
|
responses:
|
|
7295
7407
|
"200":
|
|
7296
|
-
description:
|
|
7297
|
-
|
|
7408
|
+
description: >-
|
|
7409
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7410
|
+
Other historical entries for the symbol stream are omitted from
|
|
7411
|
+
`balances`.
|
|
7298
7412
|
content:
|
|
7299
7413
|
application/json:
|
|
7300
7414
|
schema:
|
|
7301
7415
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7302
7416
|
examples:
|
|
7303
7417
|
synced crypto bulk upsert:
|
|
7304
|
-
summary: Two upserted
|
|
7418
|
+
summary: Two upserted entries returned (not full symbol history)
|
|
7305
7419
|
value:
|
|
7306
7420
|
source:
|
|
7307
7421
|
type: crypto_synced
|
|
7308
7422
|
crypto_synced_id: 33004
|
|
7309
7423
|
symbol: btc
|
|
7310
7424
|
balances:
|
|
7311
|
-
-
|
|
7312
|
-
|
|
7425
|
+
- type: historical
|
|
7426
|
+
id: 604
|
|
7427
|
+
month: "2026-03"
|
|
7313
7428
|
balance: "6400.0000"
|
|
7314
7429
|
currency: usd
|
|
7315
7430
|
to_base: 6400
|
|
7316
7431
|
crypto_balance: "0.100020003000400050"
|
|
7317
|
-
-
|
|
7318
|
-
|
|
7432
|
+
- type: historical
|
|
7433
|
+
id: 605
|
|
7434
|
+
month: "2026-04"
|
|
7319
7435
|
balance: "6500.0000"
|
|
7320
7436
|
currency: usd
|
|
7321
7437
|
to_base: 6500
|
|
7322
7438
|
crypto_balance: "0.100020003000400050"
|
|
7323
7439
|
"400":
|
|
7324
|
-
description:
|
|
7325
|
-
`balances` fails validation
|
|
7440
|
+
description: >-
|
|
7441
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7442
|
+
request is rejected and no entries are updated.
|
|
7326
7443
|
content:
|
|
7327
7444
|
application/json:
|
|
7328
7445
|
schema:
|
|
@@ -7338,17 +7455,22 @@ paths:
|
|
|
7338
7455
|
message: Invalid Request Body
|
|
7339
7456
|
errors:
|
|
7340
7457
|
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7341
|
-
invalid
|
|
7458
|
+
invalid month format:
|
|
7459
|
+
value:
|
|
7460
|
+
message: Invalid Request Body
|
|
7461
|
+
errors:
|
|
7462
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7463
|
+
current month:
|
|
7342
7464
|
value:
|
|
7343
7465
|
message: Request Validation Failure
|
|
7344
7466
|
errors:
|
|
7345
|
-
- errMsg: "`
|
|
7467
|
+
- errMsg: "`month` must not be the current month."
|
|
7346
7468
|
request_balances_index: 0
|
|
7347
|
-
future
|
|
7469
|
+
future month:
|
|
7348
7470
|
value:
|
|
7349
7471
|
message: Request Validation Failure
|
|
7350
7472
|
errors:
|
|
7351
|
-
- errMsg: "`
|
|
7473
|
+
- errMsg: "`month` must not be in the future."
|
|
7352
7474
|
request_balances_index: 1
|
|
7353
7475
|
symbol mismatch:
|
|
7354
7476
|
value:
|
|
@@ -7356,9 +7478,9 @@ paths:
|
|
|
7356
7478
|
errors:
|
|
7357
7479
|
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7358
7480
|
request_balances_index: 0
|
|
7359
|
-
invalid
|
|
7481
|
+
invalid entry in bulk request:
|
|
7360
7482
|
value:
|
|
7361
|
-
message: Request
|
|
7483
|
+
message: Invalid Request Body
|
|
7362
7484
|
errors:
|
|
7363
7485
|
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7364
7486
|
request_balances_index: 1
|
|
@@ -7389,11 +7511,9 @@ paths:
|
|
|
7389
7511
|
tags:
|
|
7390
7512
|
- balance_history
|
|
7391
7513
|
summary: Delete all balance history for a synced crypto symbol
|
|
7392
|
-
description:
|
|
7514
|
+
description: |-
|
|
7393
7515
|
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7394
|
-
|
|
7395
|
-
The path identifies both the synced crypto account and the symbol whose
|
|
7396
|
-
history should be deleted.
|
|
7516
|
+
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7397
7517
|
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7398
7518
|
parameters:
|
|
7399
7519
|
- name: account_id
|
|
@@ -7435,14 +7555,14 @@ paths:
|
|
|
7435
7555
|
tags:
|
|
7436
7556
|
- balance_history
|
|
7437
7557
|
summary: Delete a balance history entry
|
|
7438
|
-
description:
|
|
7439
|
-
Delete a single monthly balance history entry by its id.
|
|
7558
|
+
description: |-
|
|
7559
|
+
Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
|
|
7440
7560
|
operationId: deleteBalanceHistoryEntry
|
|
7441
7561
|
parameters:
|
|
7442
7562
|
- name: id
|
|
7443
7563
|
in: path
|
|
7444
7564
|
required: true
|
|
7445
|
-
description:
|
|
7565
|
+
description: Historical balance entry identifier to delete.
|
|
7446
7566
|
schema:
|
|
7447
7567
|
type: integer
|
|
7448
7568
|
format: int32
|
|
@@ -7456,7 +7576,7 @@ paths:
|
|
|
7456
7576
|
schema:
|
|
7457
7577
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7458
7578
|
example:
|
|
7459
|
-
message:
|
|
7579
|
+
message: Invalid Path Parameters
|
|
7460
7580
|
errors:
|
|
7461
7581
|
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
7462
7582
|
"401":
|
|
@@ -7480,12 +7600,9 @@ paths:
|
|
|
7480
7600
|
tags:
|
|
7481
7601
|
- balance_history
|
|
7482
7602
|
summary: Update details for a deleted account
|
|
7483
|
-
description:
|
|
7603
|
+
description: |-
|
|
7484
7604
|
Update archived metadata for a deleted balance history source.<br><br>
|
|
7485
|
-
|
|
7486
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`.
|
|
7487
|
-
This endpoint updates the stored deleted-source metadata used for all
|
|
7488
|
-
historical entries associated with that deleted source.
|
|
7605
|
+
Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
|
|
7489
7606
|
operationId: updateBalanceHistoryDetails
|
|
7490
7607
|
parameters:
|
|
7491
7608
|
- name: account_id
|
|
@@ -8559,19 +8676,19 @@ paths:
|
|
|
8559
8676
|
description: Sets the maximum number of transactions to return. If
|
|
8560
8677
|
more match the filter criteria, the response will include a
|
|
8561
8678
|
`has_more` attribute set to `true`. See
|
|
8562
|
-
[Pagination](https://
|
|
8679
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8563
8680
|
- name: offset
|
|
8564
8681
|
in: query
|
|
8565
8682
|
schema:
|
|
8566
8683
|
type: integer
|
|
8567
8684
|
description: Sets the offset for the records returned. This is
|
|
8568
8685
|
typically set automatically in the header. See
|
|
8569
|
-
[Pagination](https://
|
|
8686
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8570
8687
|
responses:
|
|
8571
8688
|
"200":
|
|
8572
8689
|
description: Returns an array of transactions. <br><br>The `has_more`
|
|
8573
8690
|
property is set to `true` if more transactions are available. See
|
|
8574
|
-
[Pagination](https://
|
|
8691
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8575
8692
|
content:
|
|
8576
8693
|
application/json:
|
|
8577
8694
|
schema:
|
|
@@ -10795,9 +10912,8 @@ paths:
|
|
|
10795
10912
|
- transactions (files)
|
|
10796
10913
|
summary: Attach a file to a transaction
|
|
10797
10914
|
operationId: attachFileToTransaction
|
|
10798
|
-
description:
|
|
10799
|
-
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
|
|
10800
|
-
The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
10915
|
+
description: |-
|
|
10916
|
+
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br> The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
10801
10917
|
parameters:
|
|
10802
10918
|
- name: transaction_id
|
|
10803
10919
|
in: path
|
|
@@ -10880,8 +10996,8 @@ paths:
|
|
|
10880
10996
|
/transactions/attachments/{file_id}:
|
|
10881
10997
|
get:
|
|
10882
10998
|
summary: Get a url to download a file attachment
|
|
10883
|
-
description:
|
|
10884
|
-
attachment.
|
|
10999
|
+
description: |-
|
|
11000
|
+
Returns a signed url that can be used to download the file attachment.
|
|
10885
11001
|
operationId: getTransactionAttachmentUrl
|
|
10886
11002
|
tags:
|
|
10887
11003
|
- transactions (files)
|
|
@@ -11774,4 +11890,3 @@ paths:
|
|
|
11774
11890
|
|
|
11775
11891
|
security:
|
|
11776
11892
|
- bearerSecurity: []
|
|
11777
|
-
- cookieAuth: []
|