@lunch-money/developer-docs 2.11.1-preview.4 → 2.11.1-preview.6
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/README.md +1 -0
- package/docs/beta-introduction.md +9 -0
- package/docs/branding-your-app.md +64 -0
- package/manifest.json +10 -1
- 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 +511 -359
|
@@ -2,17 +2,42 @@ openapi: 3.0.2
|
|
|
2
2
|
info:
|
|
3
3
|
title: Lunch Money API - v2
|
|
4
4
|
description: |-
|
|
5
|
+
### Introduction
|
|
6
|
+
|
|
5
7
|
Welcome to the Lunch Money v2 API reference. This is the **v2.11.1** spec.
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
> [!warning]
|
|
10
|
+
> **Preview endpoints (subject to change)**
|
|
11
|
+
>
|
|
12
|
+
> - [`GET /v2/me/account/settings`](#tag/me/GET/me/account/settings)
|
|
13
|
+
> - [`PUT /v2/me/account/settings`](#tag/me/PUT/me/account/settings)
|
|
14
|
+
> - [`GET /v2/me/user/settings`](#tag/me/GET/me/user/settings)
|
|
15
|
+
> - [`PUT /v2/me/user/settings`](#tag/me/PUT/me/user/settings)
|
|
16
|
+
>
|
|
17
|
+
> <p class="preview-endpoints-footer" style="margin:0.85em 0 0;padding:0;text-align:left;width:100%;box-sizing:border-box">Do not release production apps using these endpoints. Feedback is welcome. <a href="mailto:dev-support@lunchmoney.app">Email dev-support@lunchmoney.app</a> or join us in the <a href="https://discord.com/channels/842337014556262411/1134594318414389258">developers channel</a> on the <a href="https://lunchmoney.app/discord">Lunch Money Discord</a>.</p>
|
|
18
|
+
|
|
19
|
+
The most recent stable version of the API is v2.11.0 and is available at:
|
|
20
|
+
`https://api.lunchmoney.dev/v2`
|
|
21
|
+
|
|
22
|
+
See the [stable Developer Portal](https://lunchmoney.dev/v2).
|
|
23
|
+
|
|
24
|
+
------------------------------------------------------------------------------------------------
|
|
8
25
|
|
|
9
|
-
The API is available at `https://lunchmoney.
|
|
26
|
+
The API is available at `https://api-beta.lunchmoney.app/v2`. Get your access token from the [Lunch Money developers page](https://my.lunchmoney.app/developers).
|
|
10
27
|
|
|
11
|
-
|
|
28
|
+
|
|
29
|
+
**Try it from these docs**
|
|
12
30
|
|
|
13
|
-
**
|
|
31
|
+
These docs are interactive — use **Test request** on any endpoint to call the API from this page.
|
|
32
|
+
Choose a LIVE or MOCK service from the Server dropdown.
|
|
33
|
+
Requests sent to `https://api-beta.lunchmoney.app/v2` can <span class="red-text"><strong>change or delete</strong></span> your data and are <span class="red-text"><strong>permanent</strong></span>.
|
|
34
|
+
See the [Getting Started Guide](https://beta.lunchmoney.dev/v2/getting-started) before using the live API.
|
|
35
|
+
|
|
36
|
+
**Static mock server**
|
|
14
37
|
|
|
15
|
-
Explore
|
|
38
|
+
Explore without risk to real data. Select `https://beta-mock.lunchmoney.dev/v2` in the Server dropdown to work with static mock data.
|
|
39
|
+
POST, PUT, and DELETE requests will return realistic responses, but do not change the mock data.
|
|
40
|
+
|
|
16
41
|
|
|
17
42
|
**Client Libraries & SDKs**
|
|
18
43
|
|
|
@@ -20,15 +45,14 @@ info:
|
|
|
20
45
|
|
|
21
46
|
**Migrating from v1**
|
|
22
47
|
|
|
23
|
-
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
|
|
48
|
+
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://beta.lunchmoney.dev/v2/migration-guide) for details.
|
|
24
49
|
|
|
25
50
|
**Useful links**
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [Rate Limits](https://lunchmoney.dev/v2/rate-limits)
|
|
51
|
+
- [Getting Started Guide](https://beta.lunchmoney.dev/v2/getting-started)
|
|
52
|
+
- [v2 API Overview](https://beta.lunchmoney.dev/v2/overview)
|
|
53
|
+
- [Version History](https://beta.lunchmoney.dev/v2/version-history)
|
|
54
|
+
- [Migration Guide](https://beta.lunchmoney.dev/v2/migration-guide)
|
|
55
|
+
- [Rate Limits](https://beta.lunchmoney.dev/v2/rate-limits)
|
|
32
56
|
termsOfService: https://lunchmoney.dev/#current-status
|
|
33
57
|
contact:
|
|
34
58
|
email: devsupport@lunchmoney.app
|
|
@@ -38,11 +62,10 @@ info:
|
|
|
38
62
|
version: 2.11.1
|
|
39
63
|
|
|
40
64
|
servers:
|
|
41
|
-
- url: https://api.lunchmoney.
|
|
42
|
-
description:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
description: Static mock version of the v2 Lunch Money API Server
|
|
65
|
+
- url: https://api-beta.lunchmoney.app/v2
|
|
66
|
+
description: ⚠ LIVE — changes real Lunch Money data
|
|
67
|
+
- url: https://beta-mock.lunchmoney.dev/v2
|
|
68
|
+
description: MOCK — static demo data, no API key required
|
|
46
69
|
|
|
47
70
|
tags:
|
|
48
71
|
- name: me
|
|
@@ -76,7 +99,11 @@ tags:
|
|
|
76
99
|
description: Learn more about crypto assets
|
|
77
100
|
url: https://support.lunchmoney.app/setup/crypto
|
|
78
101
|
- name: balance_history
|
|
79
|
-
description:
|
|
102
|
+
description: >-
|
|
103
|
+
View and update monthly account balances used by the
|
|
104
|
+
[Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
|
|
105
|
+
History is monthly. The current month may be calculated on demand when
|
|
106
|
+
requested.
|
|
80
107
|
- name: recurring_items
|
|
81
108
|
description: Work with recurring items
|
|
82
109
|
externalDocs:
|
|
@@ -990,16 +1017,19 @@ components:
|
|
|
990
1017
|
example: Cold Wallet BTC
|
|
991
1018
|
display_name:
|
|
992
1019
|
type: string
|
|
1020
|
+
nullable: true
|
|
993
1021
|
minLength: 1
|
|
994
1022
|
maxLength: 45
|
|
995
|
-
description:
|
|
996
|
-
|
|
1023
|
+
description: Display name for the manual crypto asset. If omitted or
|
|
1024
|
+
`null`, clients may derive one from `institution_name` + `name`.
|
|
997
1025
|
example: Cold Storage
|
|
998
1026
|
institution_name:
|
|
999
1027
|
type: string
|
|
1028
|
+
nullable: true
|
|
1000
1029
|
minLength: 1
|
|
1001
1030
|
maxLength: 50
|
|
1002
|
-
description:
|
|
1031
|
+
description: Institution or wallet provider display name. If omitted
|
|
1032
|
+
or `null`, no institution name is set.
|
|
1003
1033
|
example: Ledger
|
|
1004
1034
|
balance:
|
|
1005
1035
|
oneOf:
|
|
@@ -1255,15 +1285,19 @@ components:
|
|
|
1255
1285
|
example: My Savings Account
|
|
1256
1286
|
institution_name:
|
|
1257
1287
|
type: string
|
|
1288
|
+
nullable: true
|
|
1258
1289
|
example: Bank of the West
|
|
1259
|
-
description: Name of institution holding the manual account
|
|
1290
|
+
description: Name of the institution holding the manual account. If
|
|
1291
|
+
omitted or `null`, no institution name is set.
|
|
1260
1292
|
minLength: 1
|
|
1261
1293
|
maxLength: 50
|
|
1262
1294
|
display_name:
|
|
1263
1295
|
type: string
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1296
|
+
nullable: true
|
|
1297
|
+
description: Display name of the manual account. If omitted or
|
|
1298
|
+
`null`, it is derived from `institution_name` and `name`. An
|
|
1299
|
+
explicitly set display name must be unique for the budgeting
|
|
1300
|
+
account.
|
|
1267
1301
|
example: Savings
|
|
1268
1302
|
type:
|
|
1269
1303
|
description: The type of manual account
|
|
@@ -1271,8 +1305,10 @@ components:
|
|
|
1271
1305
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1272
1306
|
subtype:
|
|
1273
1307
|
type: string
|
|
1274
|
-
|
|
1275
|
-
|
|
1308
|
+
nullable: true
|
|
1309
|
+
description: Manual account subtype. If omitted or `null`, no subtype
|
|
1310
|
+
is set. Examples include retirement, checking, savings, and prepaid
|
|
1311
|
+
credit card.
|
|
1276
1312
|
minLength: 1
|
|
1277
1313
|
maxLength: 100
|
|
1278
1314
|
example: prepaid credit card
|
|
@@ -1646,7 +1682,7 @@ components:
|
|
|
1646
1682
|
type:
|
|
1647
1683
|
type: string
|
|
1648
1684
|
enum: [manual]
|
|
1649
|
-
description: Identifies this entry as belonging to a
|
|
1685
|
+
description: Identifies this entry as belonging to a manual account.
|
|
1650
1686
|
manual_account_id:
|
|
1651
1687
|
type: integer
|
|
1652
1688
|
format: int32
|
|
@@ -1675,14 +1711,14 @@ components:
|
|
|
1675
1711
|
|
|
1676
1712
|
balanceHistorySourceCryptoManual:
|
|
1677
1713
|
type: object
|
|
1678
|
-
description: Source information for a
|
|
1714
|
+
description: Source information for a manual cryptocurrency balance history entry.
|
|
1679
1715
|
additionalProperties: false
|
|
1680
1716
|
x-internal: true
|
|
1681
1717
|
properties:
|
|
1682
1718
|
type:
|
|
1683
1719
|
type: string
|
|
1684
1720
|
enum: [crypto_manual]
|
|
1685
|
-
description: Identifies this entry as belonging to a
|
|
1721
|
+
description: Identifies this entry as belonging to a manual crypto account.
|
|
1686
1722
|
crypto_manual_id:
|
|
1687
1723
|
type: integer
|
|
1688
1724
|
format: int32
|
|
@@ -1725,10 +1761,11 @@ components:
|
|
|
1725
1761
|
type: object
|
|
1726
1762
|
x-internal: true
|
|
1727
1763
|
description: >
|
|
1728
|
-
Source information for
|
|
1764
|
+
Source information for balance history whose account has since been deleted.
|
|
1729
1765
|
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1730
1766
|
This object contains details that can be used to display the deleted account in the UI.
|
|
1731
|
-
The `deleted_account_id` can be passed to
|
|
1767
|
+
The `deleted_account_id` can be passed to
|
|
1768
|
+
[PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
|
|
1732
1769
|
to update the archived source metadata.
|
|
1733
1770
|
additionalProperties: false
|
|
1734
1771
|
properties:
|
|
@@ -1759,11 +1796,11 @@ components:
|
|
|
1759
1796
|
subtype:
|
|
1760
1797
|
type: string
|
|
1761
1798
|
nullable: true
|
|
1762
|
-
description: Archived `subtype
|
|
1799
|
+
description: Archived `subtype` of the deleted account source
|
|
1763
1800
|
mask:
|
|
1764
1801
|
type: string
|
|
1765
1802
|
nullable: true
|
|
1766
|
-
description: Archived account `mask` for a deleted
|
|
1803
|
+
description: Archived account `mask` for a deleted Plaid account source
|
|
1767
1804
|
symbol:
|
|
1768
1805
|
type: string
|
|
1769
1806
|
nullable: true
|
|
@@ -1785,12 +1822,14 @@ components:
|
|
|
1785
1822
|
type: object
|
|
1786
1823
|
title: balance history for an account object
|
|
1787
1824
|
additionalProperties: false
|
|
1788
|
-
description:
|
|
1825
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1789
1826
|
properties:
|
|
1790
1827
|
source:
|
|
1791
1828
|
description: >
|
|
1792
|
-
Identifies the account
|
|
1793
|
-
`source.type`.
|
|
1829
|
+
Identifies the account these balance entries belong to. The shape varies by
|
|
1830
|
+
`source.type`. Each source type exposes a type-specific account id field
|
|
1831
|
+
(`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
|
|
1832
|
+
`crypto_synced_id`, or `deleted_account_id`).
|
|
1794
1833
|
oneOf:
|
|
1795
1834
|
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1796
1835
|
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
@@ -1808,38 +1847,48 @@ components:
|
|
|
1808
1847
|
balances:
|
|
1809
1848
|
type: array
|
|
1810
1849
|
description: >
|
|
1811
|
-
Monthly balance
|
|
1812
|
-
|
|
1813
|
-
|
|
1850
|
+
Monthly balance entries for this account source. A `historical` entry is
|
|
1851
|
+
a stored snapshot of a past month and includes an `id`. A `current` entry
|
|
1852
|
+
is an ephemeral snapshot based on the account's current balances and has
|
|
1853
|
+
no balance-entry `id`. On PUT upsert responses, this array includes only
|
|
1854
|
+
the `type: historical` entries modified by that request.
|
|
1814
1855
|
items:
|
|
1815
|
-
$ref: "#/components/schemas/
|
|
1856
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1816
1857
|
required:
|
|
1817
1858
|
- source
|
|
1818
1859
|
- balances
|
|
1819
1860
|
|
|
1820
|
-
|
|
1861
|
+
historicalBalanceHistoryEntry:
|
|
1821
1862
|
type: object
|
|
1822
|
-
title: balance history entry
|
|
1863
|
+
title: historical balance history entry
|
|
1823
1864
|
additionalProperties: false
|
|
1824
1865
|
x-internal: true
|
|
1825
|
-
description:
|
|
1866
|
+
description: >
|
|
1867
|
+
A stored monthly balance for a past month. The `id` may be used with
|
|
1868
|
+
balance history entry endpoints. The balance represents the account
|
|
1869
|
+
balance at or around the end of `month`.
|
|
1826
1870
|
properties:
|
|
1871
|
+
type:
|
|
1872
|
+
type: string
|
|
1873
|
+
enum: [historical]
|
|
1874
|
+
description: Identifies this entry as a stored snapshot of a past month.
|
|
1827
1875
|
id:
|
|
1828
1876
|
type: integer
|
|
1829
1877
|
format: int32
|
|
1830
|
-
description: Unique identifier
|
|
1831
|
-
|
|
1878
|
+
description: Unique identifier for this historical balance entry.
|
|
1879
|
+
month:
|
|
1832
1880
|
type: string
|
|
1833
|
-
|
|
1834
|
-
description:
|
|
1881
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1882
|
+
description: Calendar month for this entry in YYYY-MM format.
|
|
1883
|
+
example: "2026-06"
|
|
1835
1884
|
balance:
|
|
1836
1885
|
type: string
|
|
1837
1886
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1838
|
-
description: Historical balance
|
|
1887
|
+
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.
|
|
1839
1888
|
currency:
|
|
1840
1889
|
allOf:
|
|
1841
1890
|
- $ref: "#/components/schemas/currencyEnum"
|
|
1842
|
-
description: Currency of
|
|
1891
|
+
description: Currency of `balance`. For crypto entries this is the user's primary currency.
|
|
1843
1892
|
to_base:
|
|
1844
1893
|
type: number
|
|
1845
1894
|
format: double
|
|
@@ -1848,19 +1897,82 @@ components:
|
|
|
1848
1897
|
type: string
|
|
1849
1898
|
nullable: true
|
|
1850
1899
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1851
|
-
description: Crypto quantity
|
|
1900
|
+
description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1852
1901
|
required:
|
|
1902
|
+
- type
|
|
1853
1903
|
- id
|
|
1854
|
-
-
|
|
1904
|
+
- month
|
|
1855
1905
|
- balance
|
|
1856
1906
|
- currency
|
|
1857
1907
|
- to_base
|
|
1858
1908
|
- crypto_balance
|
|
1859
1909
|
|
|
1910
|
+
currentBalanceHistoryEntry:
|
|
1911
|
+
type: object
|
|
1912
|
+
title: current balance history entry
|
|
1913
|
+
additionalProperties: false
|
|
1914
|
+
x-internal: true
|
|
1915
|
+
description: >
|
|
1916
|
+
An ephemeral snapshot based on the account's current balances. It may
|
|
1917
|
+
change between requests.
|
|
1918
|
+
properties:
|
|
1919
|
+
type:
|
|
1920
|
+
type: string
|
|
1921
|
+
enum: [current]
|
|
1922
|
+
description: Identifies this entry as an ephemeral current-month snapshot.
|
|
1923
|
+
month:
|
|
1924
|
+
type: string
|
|
1925
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1926
|
+
description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
|
|
1927
|
+
example: "2026-07"
|
|
1928
|
+
balance:
|
|
1929
|
+
type: string
|
|
1930
|
+
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1931
|
+
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.
|
|
1932
|
+
currency:
|
|
1933
|
+
allOf:
|
|
1934
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
1935
|
+
description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
|
|
1936
|
+
to_base:
|
|
1937
|
+
type: number
|
|
1938
|
+
format: double
|
|
1939
|
+
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`.
|
|
1940
|
+
crypto_balance:
|
|
1941
|
+
type: string
|
|
1942
|
+
nullable: true
|
|
1943
|
+
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1944
|
+
description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
|
|
1945
|
+
required:
|
|
1946
|
+
- type
|
|
1947
|
+
- month
|
|
1948
|
+
- balance
|
|
1949
|
+
- currency
|
|
1950
|
+
- to_base
|
|
1951
|
+
- crypto_balance
|
|
1952
|
+
|
|
1953
|
+
balanceHistoryEntry:
|
|
1954
|
+
title: balance history entry
|
|
1955
|
+
x-internal: true
|
|
1956
|
+
description: >
|
|
1957
|
+
A monthly balance history entry. Discriminated by `type`. `historical`
|
|
1958
|
+
entries are stored snapshots of past months with an `id`. `current`
|
|
1959
|
+
entries are ephemeral snapshots with no balance-entry `id`.
|
|
1960
|
+
oneOf:
|
|
1961
|
+
- $ref: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1962
|
+
- $ref: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1963
|
+
discriminator:
|
|
1964
|
+
propertyName: type
|
|
1965
|
+
mapping:
|
|
1966
|
+
historical: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1967
|
+
current: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1968
|
+
|
|
1860
1969
|
balanceHistoryListResponseObject:
|
|
1861
1970
|
type: object
|
|
1862
1971
|
additionalProperties: false
|
|
1863
1972
|
x-internal: true
|
|
1973
|
+
description: >
|
|
1974
|
+
List response for balance history GET endpoints. Entries are grouped by
|
|
1975
|
+
account source under `balance_history`.
|
|
1864
1976
|
properties:
|
|
1865
1977
|
balance_history:
|
|
1866
1978
|
type: array
|
|
@@ -1873,31 +1985,39 @@ components:
|
|
|
1873
1985
|
type: object
|
|
1874
1986
|
x-internal: true
|
|
1875
1987
|
additionalProperties: false
|
|
1988
|
+
description: >
|
|
1989
|
+
A single monthly balance entry to upsert. Request bodies use this shape.
|
|
1990
|
+
Responses return `type: historical` entries instead.
|
|
1876
1991
|
properties:
|
|
1877
1992
|
id:
|
|
1878
1993
|
type: integer
|
|
1879
1994
|
format: int32
|
|
1880
1995
|
description: System-defined balance history entry id. Ignored if set.
|
|
1881
1996
|
x-updatable: false
|
|
1882
|
-
|
|
1997
|
+
month:
|
|
1883
1998
|
type: string
|
|
1884
|
-
|
|
1885
|
-
description:
|
|
1999
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
2000
|
+
description: >
|
|
2001
|
+
Calendar month to upsert, in YYYY-MM format. Must be a past month.
|
|
2002
|
+
The current month cannot be written through PUT endpoints.
|
|
2003
|
+
example: "2026-06"
|
|
1886
2004
|
balance:
|
|
1887
2005
|
oneOf:
|
|
1888
2006
|
- type: number
|
|
1889
2007
|
format: double
|
|
1890
2008
|
- type: string
|
|
1891
2009
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1892
|
-
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is
|
|
2010
|
+
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.
|
|
1893
2011
|
symbol:
|
|
1894
2012
|
type: string
|
|
1895
2013
|
nullable: true
|
|
1896
2014
|
minLength: 1
|
|
1897
2015
|
maxLength: 25
|
|
1898
|
-
description:
|
|
1899
|
-
|
|
1900
|
-
|
|
2016
|
+
description: >
|
|
2017
|
+
Optional for crypto balances. If set, it must match the account's
|
|
2018
|
+
symbol. Tolerated for deleted-account balances. Do not provide this
|
|
2019
|
+
for manual or Plaid balances. On the synced crypto path endpoint, if
|
|
2020
|
+
provided it must match the `symbol` path parameter.
|
|
1901
2021
|
x-updatable: true
|
|
1902
2022
|
crypto_balance:
|
|
1903
2023
|
type: string
|
|
@@ -1913,10 +2033,10 @@ components:
|
|
|
1913
2033
|
to_base:
|
|
1914
2034
|
type: number
|
|
1915
2035
|
format: double
|
|
1916
|
-
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the
|
|
2036
|
+
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
|
|
1917
2037
|
x-updatable: false
|
|
1918
2038
|
required:
|
|
1919
|
-
-
|
|
2039
|
+
- month
|
|
1920
2040
|
- balance
|
|
1921
2041
|
|
|
1922
2042
|
upsertBalanceHistoryRequestObject:
|
|
@@ -1927,7 +2047,11 @@ components:
|
|
|
1927
2047
|
balances:
|
|
1928
2048
|
type: array
|
|
1929
2049
|
minItems: 1
|
|
1930
|
-
description:
|
|
2050
|
+
description: >
|
|
2051
|
+
One or more monthly balance history entries to upsert. Each entry uses
|
|
2052
|
+
`month` (YYYY-MM) and `balance`. Do not include response-only fields such
|
|
2053
|
+
as `type`. PUT responses return only the `type: historical` entries
|
|
2054
|
+
modified by the request.
|
|
1931
2055
|
items:
|
|
1932
2056
|
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1933
2057
|
required:
|
|
@@ -1942,51 +2066,58 @@ components:
|
|
|
1942
2066
|
name:
|
|
1943
2067
|
type: string
|
|
1944
2068
|
nullable: true
|
|
1945
|
-
description: New archived account name for the deleted account source
|
|
2069
|
+
description: New archived account name for the deleted account source
|
|
1946
2070
|
institution_name:
|
|
1947
2071
|
type: string
|
|
1948
2072
|
nullable: true
|
|
1949
|
-
description: New archived institution name for the deleted account source
|
|
2073
|
+
description: New archived institution name for the deleted account source
|
|
1950
2074
|
display_name:
|
|
1951
2075
|
type: string
|
|
1952
2076
|
nullable: true
|
|
1953
|
-
description: New display name for the deleted account source
|
|
2077
|
+
description: New display name for the deleted account source
|
|
1954
2078
|
account_type:
|
|
1955
2079
|
type: string
|
|
1956
2080
|
nullable: true
|
|
1957
|
-
description: New archived account type for the deleted account source
|
|
2081
|
+
description: New archived account type for the deleted account source
|
|
1958
2082
|
subtype:
|
|
1959
2083
|
type: string
|
|
1960
2084
|
nullable: true
|
|
1961
|
-
description: New archived subtype for the deleted account source
|
|
2085
|
+
description: New archived subtype for the deleted account source
|
|
1962
2086
|
mask:
|
|
1963
2087
|
type: string
|
|
1964
2088
|
nullable: true
|
|
1965
|
-
description: New archived account mask for the deleted account source
|
|
2089
|
+
description: New archived account mask for the deleted account source
|
|
1966
2090
|
|
|
1967
2091
|
updateBalanceHistoryDetailsResponseObject:
|
|
1968
2092
|
type: object
|
|
1969
2093
|
x-internal: true
|
|
1970
2094
|
additionalProperties: false
|
|
2095
|
+
description: Updated archived metadata for a deleted balance history source
|
|
1971
2096
|
properties:
|
|
1972
2097
|
name:
|
|
1973
2098
|
type: string
|
|
1974
2099
|
nullable: true
|
|
2100
|
+
description: Archived account name for the deleted account source
|
|
1975
2101
|
institution_name:
|
|
1976
2102
|
type: string
|
|
1977
2103
|
nullable: true
|
|
2104
|
+
description: Archived institution name for the deleted account source
|
|
1978
2105
|
display_name:
|
|
1979
2106
|
type: string
|
|
1980
2107
|
nullable: true
|
|
2108
|
+
description: Archived display name for the deleted account source
|
|
1981
2109
|
account_type:
|
|
1982
2110
|
type: string
|
|
1983
2111
|
nullable: true
|
|
2112
|
+
description: Archived account type for the deleted account source
|
|
1984
2113
|
subtype:
|
|
1985
2114
|
type: string
|
|
1986
2115
|
nullable: true
|
|
2116
|
+
description: Archived subtype for the deleted account source
|
|
1987
2117
|
mask:
|
|
1988
2118
|
type: string
|
|
1989
2119
|
nullable: true
|
|
2120
|
+
description: Archived account mask for the deleted account source
|
|
1990
2121
|
required:
|
|
1991
2122
|
- name
|
|
1992
2123
|
- institution_name
|
|
@@ -2942,7 +3073,7 @@ components:
|
|
|
2942
3073
|
currency:
|
|
2943
3074
|
description: Three-letter lowercase currency code of the transaction
|
|
2944
3075
|
in ISO 4217 format. Must match one of the [supported
|
|
2945
|
-
currencies](https://lunchmoney.dev/v2/currencies). If not set
|
|
3076
|
+
currencies](https://beta.lunchmoney.dev/v2/currencies). If not set
|
|
2946
3077
|
defaults to the user account's primary currency.
|
|
2947
3078
|
allOf:
|
|
2948
3079
|
- $ref: "#/components/schemas/currencyEnum"
|
|
@@ -3087,6 +3218,7 @@ components:
|
|
|
3087
3218
|
description: |
|
|
3088
3219
|
The new payee for the transaction.
|
|
3089
3220
|
minLength: 0
|
|
3221
|
+
x-updatable: true
|
|
3090
3222
|
original_name:
|
|
3091
3223
|
type: string
|
|
3092
3224
|
nullable: true
|
|
@@ -3298,9 +3430,10 @@ components:
|
|
|
3298
3430
|
category_id:
|
|
3299
3431
|
type: integer
|
|
3300
3432
|
format: int32
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3433
|
+
nullable: true
|
|
3434
|
+
description: Category ID for the child transaction. The category must
|
|
3435
|
+
already exist for the account. If omitted, the child inherits the
|
|
3436
|
+
parent category. If `null`, the child has no category.
|
|
3304
3437
|
tag_ids:
|
|
3305
3438
|
type: array
|
|
3306
3439
|
description: The IDs of any tags to apply to this split child
|
|
@@ -3310,7 +3443,10 @@ components:
|
|
|
3310
3443
|
format: int32
|
|
3311
3444
|
notes:
|
|
3312
3445
|
type: string
|
|
3313
|
-
|
|
3446
|
+
nullable: true
|
|
3447
|
+
description: Notes for the child transaction. If omitted, the child
|
|
3448
|
+
inherits the parent notes. If `null` or an empty string, the child
|
|
3449
|
+
has no notes.
|
|
3314
3450
|
required:
|
|
3315
3451
|
- amount
|
|
3316
3452
|
|
|
@@ -4818,22 +4954,10 @@ components:
|
|
|
4818
4954
|
securitySchemes:
|
|
4819
4955
|
bearerSecurity:
|
|
4820
4956
|
type: http
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
# the v1 API you can view and manage your API keys on the [developers page
|
|
4824
|
-
# in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
|
|
4825
|
-
# interact with the Static Mock Server simply enter an API key of 11
|
|
4826
|
-
# characters or more. <p> To interact with the v2 service implemented on
|
|
4827
|
-
# top of the v1 API paste in a real API token associated with a Lunch
|
|
4828
|
-
# Money Budget.
|
|
4829
|
-
description: To interact with the Static Mock Server simply enter an API
|
|
4830
|
-
key of 11 characters or more.
|
|
4957
|
+
description: >-
|
|
4958
|
+
Required for the LIVE server. Optional for MOCK.
|
|
4831
4959
|
scheme: bearer
|
|
4832
4960
|
bearerFormat: JWT
|
|
4833
|
-
cookieAuth:
|
|
4834
|
-
type: apiKey
|
|
4835
|
-
in: cookie
|
|
4836
|
-
name: _lm_access_token
|
|
4837
4961
|
|
|
4838
4962
|
paths:
|
|
4839
4963
|
/me:
|
|
@@ -4876,8 +5000,13 @@ paths:
|
|
|
4876
5000
|
tags:
|
|
4877
5001
|
- me
|
|
4878
5002
|
summary: Get account settings
|
|
4879
|
-
description:
|
|
4880
|
-
|
|
5003
|
+
description: |-
|
|
5004
|
+
> [!warning]
|
|
5005
|
+
> **Preview endpoint** — behavior is subject to change. This endpoint is available in the mock server but not implemented yet on the live api service. Design feedback is welcome. [Email dev-support@lunchmoney.app](mailto:dev-support@lunchmoney.app) or join us in the [developers channel](https://discord.com/channels/842337014556262411/1134594318414389258) on the [Lunch Money Discord](https://lunchmoney.app/discord).
|
|
5006
|
+
|
|
5007
|
+
|
|
5008
|
+
Returns account-level settings for the budgeting account associated with the authorized API token.<p>
|
|
5009
|
+
These settings apply only to this budgeting account; a user with access to multiple budgets has separate account settings for each.
|
|
4881
5010
|
operationId: getAccountSettings
|
|
4882
5011
|
responses:
|
|
4883
5012
|
"200":
|
|
@@ -4909,8 +5038,14 @@ paths:
|
|
|
4909
5038
|
- me
|
|
4910
5039
|
summary: Update account settings
|
|
4911
5040
|
description: |-
|
|
5041
|
+
> [!warning]
|
|
5042
|
+
> **Preview endpoint** — behavior is subject to change. This endpoint is available in the mock server but not implemented yet on the live api service. Design feedback is welcome. [Email dev-support@lunchmoney.app](mailto:dev-support@lunchmoney.app) or join us in the [developers channel](https://discord.com/channels/842337014556262411/1134594318414389258) on the [Lunch Money Discord](https://lunchmoney.app/discord).
|
|
5043
|
+
|
|
5044
|
+
|
|
4912
5045
|
Updates account-level settings for the budgeting account
|
|
4913
|
-
associated with the authorized API token.<p>
|
|
5046
|
+
associated with the authorized API token.<p>
|
|
5047
|
+
These settings apply only to this budgeting account; a user with access to multiple budgets has separate account settings for each.<p>
|
|
5048
|
+
You may submit the response from a
|
|
4914
5049
|
`GET /me/account/settings` as the request body; however, only certain
|
|
4915
5050
|
properties can be updated.<p> It is also possible to provide only the
|
|
4916
5051
|
properties to be updated in the request body, as long as the request
|
|
@@ -4954,8 +5089,13 @@ paths:
|
|
|
4954
5089
|
tags:
|
|
4955
5090
|
- me
|
|
4956
5091
|
summary: Get user settings
|
|
4957
|
-
description:
|
|
4958
|
-
|
|
5092
|
+
description: |-
|
|
5093
|
+
> [!warning]
|
|
5094
|
+
> **Preview endpoint** — behavior is subject to change. This endpoint is available in the mock server but not implemented yet on the live api service. Design feedback is welcome. [Email dev-support@lunchmoney.app](mailto:dev-support@lunchmoney.app) or join us in the [developers channel](https://discord.com/channels/842337014556262411/1134594318414389258) on the [Lunch Money Discord](https://lunchmoney.app/discord).
|
|
5095
|
+
|
|
5096
|
+
|
|
5097
|
+
Returns user-level display and formatting preferences for the user associated with the authorized API token.<p>
|
|
5098
|
+
User settings belong to the user and apply across all budgets they can access.
|
|
4959
5099
|
operationId: getUserSettings
|
|
4960
5100
|
responses:
|
|
4961
5101
|
"200":
|
|
@@ -4985,8 +5125,14 @@ paths:
|
|
|
4985
5125
|
- me
|
|
4986
5126
|
summary: Update user settings
|
|
4987
5127
|
description: |-
|
|
5128
|
+
> [!warning]
|
|
5129
|
+
> **Preview endpoint** — behavior is subject to change. This endpoint is available in the mock server but not implemented yet on the live api service. Design feedback is welcome. [Email dev-support@lunchmoney.app](mailto:dev-support@lunchmoney.app) or join us in the [developers channel](https://discord.com/channels/842337014556262411/1134594318414389258) on the [Lunch Money Discord](https://lunchmoney.app/discord).
|
|
5130
|
+
|
|
5131
|
+
|
|
4988
5132
|
Updates user-level display and formatting preferences for the user
|
|
4989
|
-
associated with the authorized API token.<p>
|
|
5133
|
+
associated with the authorized API token.<p>
|
|
5134
|
+
User settings belong to the user and apply across all budgets they can access.<p>
|
|
5135
|
+
You may submit the response from a
|
|
4990
5136
|
from a `GET /me/user/settings` as the request body; however, only
|
|
4991
5137
|
certain properties can be updated.<p> It is also possible to provide
|
|
4992
5138
|
only the properties to be updated in the request body, as long as the
|
|
@@ -6277,12 +6423,9 @@ paths:
|
|
|
6277
6423
|
tags:
|
|
6278
6424
|
- crypto-manual
|
|
6279
6425
|
summary: Get all supported cryptocurrencies
|
|
6280
|
-
description:
|
|
6426
|
+
description: |-
|
|
6281
6427
|
Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
|
|
6282
|
-
|
|
6283
|
-
When creating a new manual crypto balance via `POST /crypto/manual`, the
|
|
6284
|
-
`symbol` you specify must match the `symbol` of one of the entries
|
|
6285
|
-
returned by this endpoint.
|
|
6428
|
+
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.
|
|
6286
6429
|
operationId: getAllCryptocurrencies
|
|
6287
6430
|
responses:
|
|
6288
6431
|
"200":
|
|
@@ -6320,16 +6463,9 @@ paths:
|
|
|
6320
6463
|
- crypto-manual
|
|
6321
6464
|
summary: Add a new supported cryptocurrency
|
|
6322
6465
|
operationId: createCryptocurrency
|
|
6323
|
-
description:
|
|
6466
|
+
description: |-
|
|
6324
6467
|
Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
|
|
6325
|
-
|
|
6326
|
-
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
|
|
6327
|
-
to convert crypto balances to the user's primary currency. Users add a
|
|
6328
|
-
new supported cryptocurrency by submitting a CoinGecko coin-page URL.
|
|
6329
|
-
The server validates the URL, extracts the id from `/coins/{id}`,
|
|
6330
|
-
checks for an existing supported `coingecko_id`, validates the id
|
|
6331
|
-
against CoinGecko, then confirms the resolved symbol is not already
|
|
6332
|
-
supported before creating the new entry.
|
|
6468
|
+
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.
|
|
6333
6469
|
requestBody:
|
|
6334
6470
|
required: true
|
|
6335
6471
|
content:
|
|
@@ -6408,8 +6544,8 @@ paths:
|
|
|
6408
6544
|
tags:
|
|
6409
6545
|
- crypto-manual
|
|
6410
6546
|
summary: Get all manual crypto balances
|
|
6411
|
-
description:
|
|
6412
|
-
the user's account.
|
|
6547
|
+
description: |-
|
|
6548
|
+
Retrieve all manually managed crypto balances associated with the user's account.
|
|
6413
6549
|
operationId: getAllCryptoManual
|
|
6414
6550
|
responses:
|
|
6415
6551
|
"200":
|
|
@@ -6443,11 +6579,9 @@ paths:
|
|
|
6443
6579
|
tags:
|
|
6444
6580
|
- crypto-manual
|
|
6445
6581
|
summary: Create a manual crypto balance
|
|
6446
|
-
description:
|
|
6582
|
+
description: |-
|
|
6447
6583
|
Create a manually managed crypto asset.<br><br>
|
|
6448
|
-
|
|
6449
|
-
If `display_name` is `null`, clients may derive one from
|
|
6450
|
-
`institution_name` + `name`.
|
|
6584
|
+
If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
|
|
6451
6585
|
operationId: createCryptoManual
|
|
6452
6586
|
requestBody:
|
|
6453
6587
|
required: true
|
|
@@ -6532,7 +6666,8 @@ paths:
|
|
|
6532
6666
|
tags:
|
|
6533
6667
|
- crypto-manual
|
|
6534
6668
|
summary: Get a single manual crypto balance
|
|
6535
|
-
description:
|
|
6669
|
+
description: |-
|
|
6670
|
+
Retrieve a single manually managed crypto balance by ID.
|
|
6536
6671
|
operationId: getCryptoManualById
|
|
6537
6672
|
parameters:
|
|
6538
6673
|
- name: id
|
|
@@ -6600,11 +6735,9 @@ paths:
|
|
|
6600
6735
|
tags:
|
|
6601
6736
|
- crypto-manual
|
|
6602
6737
|
summary: Update a manual crypto balance
|
|
6603
|
-
description:
|
|
6738
|
+
description: |-
|
|
6604
6739
|
Modify a manually managed crypto balance.<br><br>
|
|
6605
|
-
|
|
6606
|
-
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
|
|
6607
|
-
are accepted according to the `x-updatable` metadata in the update schema.
|
|
6740
|
+
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.
|
|
6608
6741
|
operationId: updateCryptoManual
|
|
6609
6742
|
parameters:
|
|
6610
6743
|
- name: id
|
|
@@ -6701,10 +6834,8 @@ paths:
|
|
|
6701
6834
|
tags:
|
|
6702
6835
|
- crypto-manual
|
|
6703
6836
|
summary: Delete a manual crypto balance
|
|
6704
|
-
description:
|
|
6705
|
-
this crypto asset has a balance history, and you do not explicitly set
|
|
6706
|
-
the query parameter`keep_history`, a 422 response will be returned
|
|
6707
|
-
requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
6837
|
+
description: |-
|
|
6838
|
+
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`.
|
|
6708
6839
|
operationId: deleteCryptoManual
|
|
6709
6840
|
parameters:
|
|
6710
6841
|
- name: id
|
|
@@ -6769,8 +6900,8 @@ paths:
|
|
|
6769
6900
|
tags:
|
|
6770
6901
|
- crypto-synced
|
|
6771
6902
|
summary: Get all synced crypto accounts
|
|
6772
|
-
description:
|
|
6773
|
-
associated with the user's account.
|
|
6903
|
+
description: |-
|
|
6904
|
+
Retrieves all synced crypto accounts associated with the user's account.
|
|
6774
6905
|
operationId: getAllCryptoSynced
|
|
6775
6906
|
responses:
|
|
6776
6907
|
"200":
|
|
@@ -6832,8 +6963,8 @@ paths:
|
|
|
6832
6963
|
tags:
|
|
6833
6964
|
- crypto-synced
|
|
6834
6965
|
summary: Get a single synced crypto account
|
|
6835
|
-
description:
|
|
6836
|
-
for the specified synced crypto account ID.
|
|
6966
|
+
description: |-
|
|
6967
|
+
Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
|
|
6837
6968
|
operationId: getCryptoSyncedById
|
|
6838
6969
|
parameters:
|
|
6839
6970
|
- name: id
|
|
@@ -6913,8 +7044,8 @@ paths:
|
|
|
6913
7044
|
tags:
|
|
6914
7045
|
- crypto-synced
|
|
6915
7046
|
summary: Get a synced crypto balance by symbol
|
|
6916
|
-
description:
|
|
6917
|
-
account using the crypto symbol.
|
|
7047
|
+
description: |-
|
|
7048
|
+
Retrieves a single balance from the specified synced crypto account using the crypto symbol.
|
|
6918
7049
|
operationId: getCryptoSyncedBalanceBySymbol
|
|
6919
7050
|
parameters:
|
|
6920
7051
|
- name: id
|
|
@@ -6993,8 +7124,8 @@ paths:
|
|
|
6993
7124
|
tags:
|
|
6994
7125
|
- crypto-synced
|
|
6995
7126
|
summary: Refresh balances for a synced crypto account
|
|
6996
|
-
description:
|
|
6997
|
-
account. Returns the refreshed synced crypto account.
|
|
7127
|
+
description: |-
|
|
7128
|
+
Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
|
|
6998
7129
|
operationId: refreshCryptoSynced
|
|
6999
7130
|
parameters:
|
|
7000
7131
|
- name: id
|
|
@@ -7063,51 +7194,55 @@ paths:
|
|
|
7063
7194
|
tags:
|
|
7064
7195
|
- balance_history
|
|
7065
7196
|
summary: Get balance history
|
|
7066
|
-
description:
|
|
7067
|
-
Retrieve
|
|
7068
|
-
|
|
7069
|
-
|
|
7070
|
-
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
`
|
|
7077
|
-
|
|
7078
|
-
stored entries when no range is provided.<br><br>
|
|
7079
|
-
|
|
7080
|
-
Historical entries for accounts that have been deleted may still
|
|
7081
|
-
be returned. These entries use `source.type: deleted` and include
|
|
7082
|
-
`deleted_account_id`, archived display fields, and account metadata on the
|
|
7083
|
-
`source` object.
|
|
7197
|
+
description: |-
|
|
7198
|
+
Retrieve monthly balance history for all account sources.<br><br>
|
|
7199
|
+
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>
|
|
7200
|
+
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>
|
|
7201
|
+
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>
|
|
7202
|
+
Each balance entry has a `type`:<br>
|
|
7203
|
+
- `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>
|
|
7204
|
+
- `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>
|
|
7205
|
+
- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
|
|
7206
|
+
- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
|
|
7207
|
+
- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
|
|
7208
|
+
- `crypto_synced`: `source.crypto_synced_id` and `source.symbol` with [GET /crypto/synced/{id}/{symbol}](#tag/crypto-synced/GET/crypto/synced/{id}/{symbol})
|
|
7084
7209
|
operationId: getBalanceHistory
|
|
7085
7210
|
parameters:
|
|
7086
|
-
- name:
|
|
7211
|
+
- name: start_month
|
|
7087
7212
|
in: query
|
|
7088
|
-
description:
|
|
7213
|
+
description: >-
|
|
7214
|
+
Optional start of the requested history range as a calendar month in
|
|
7215
|
+
YYYY-MM format (for example `2026-06`). If set, `end_month` is also
|
|
7216
|
+
required. The range is inclusive. `start_month` must not be in the
|
|
7217
|
+
future. A full date such as `2026-06-01` is invalid.
|
|
7089
7218
|
required: false
|
|
7090
7219
|
schema:
|
|
7091
7220
|
type: string
|
|
7092
|
-
|
|
7221
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7093
7222
|
examples:
|
|
7094
7223
|
range start:
|
|
7095
|
-
summary: Start
|
|
7096
|
-
value: "2026-01
|
|
7097
|
-
- name:
|
|
7224
|
+
summary: Start month
|
|
7225
|
+
value: "2026-01"
|
|
7226
|
+
- name: end_month
|
|
7098
7227
|
in: query
|
|
7099
|
-
description:
|
|
7228
|
+
description: >-
|
|
7229
|
+
Optional end of the requested history range as a calendar month in
|
|
7230
|
+
YYYY-MM format (for example `2026-06`). If set, `start_month` is also
|
|
7231
|
+
required. The range is inclusive. `end_month` may not be earlier than
|
|
7232
|
+
`start_month` and must not be in the future. A full date such as
|
|
7233
|
+
`2026-06-01` is invalid. For a single month, set this to the same
|
|
7234
|
+
value as `start_month`.
|
|
7100
7235
|
required: false
|
|
7101
7236
|
schema:
|
|
7102
7237
|
type: string
|
|
7103
|
-
|
|
7238
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7104
7239
|
examples:
|
|
7105
7240
|
range end:
|
|
7106
|
-
summary: End
|
|
7107
|
-
value: "2026-03
|
|
7241
|
+
summary: End month
|
|
7242
|
+
value: "2026-03"
|
|
7108
7243
|
responses:
|
|
7109
7244
|
"200":
|
|
7110
|
-
description:
|
|
7245
|
+
description: Monthly balance history for the requested month range
|
|
7111
7246
|
content:
|
|
7112
7247
|
application/json:
|
|
7113
7248
|
schema:
|
|
@@ -7120,14 +7255,16 @@ paths:
|
|
|
7120
7255
|
type: manual
|
|
7121
7256
|
manual_account_id: 119807
|
|
7122
7257
|
balances:
|
|
7123
|
-
-
|
|
7124
|
-
|
|
7258
|
+
- type: historical
|
|
7259
|
+
id: 101
|
|
7260
|
+
month: "2026-01"
|
|
7125
7261
|
balance: "41000.0000"
|
|
7126
7262
|
currency: usd
|
|
7127
7263
|
to_base: 41000
|
|
7128
7264
|
crypto_balance: null
|
|
7129
|
-
-
|
|
7130
|
-
|
|
7265
|
+
- type: historical
|
|
7266
|
+
id: 102
|
|
7267
|
+
month: "2026-02"
|
|
7131
7268
|
balance: "41211.8000"
|
|
7132
7269
|
currency: usd
|
|
7133
7270
|
to_base: 41211.8
|
|
@@ -7136,8 +7273,9 @@ paths:
|
|
|
7136
7273
|
type: plaid
|
|
7137
7274
|
plaid_account_id: 119808
|
|
7138
7275
|
balances:
|
|
7139
|
-
-
|
|
7140
|
-
|
|
7276
|
+
- type: historical
|
|
7277
|
+
id: 103
|
|
7278
|
+
month: "2026-01"
|
|
7141
7279
|
balance: "5498.2800"
|
|
7142
7280
|
currency: usd
|
|
7143
7281
|
to_base: 5498.28
|
|
@@ -7147,8 +7285,9 @@ paths:
|
|
|
7147
7285
|
crypto_manual_id: 22001
|
|
7148
7286
|
symbol: btc
|
|
7149
7287
|
balances:
|
|
7150
|
-
-
|
|
7151
|
-
|
|
7288
|
+
- type: historical
|
|
7289
|
+
id: 104
|
|
7290
|
+
month: "2026-01"
|
|
7152
7291
|
balance: "53124.7200"
|
|
7153
7292
|
currency: usd
|
|
7154
7293
|
to_base: 53124.72
|
|
@@ -7158,8 +7297,9 @@ paths:
|
|
|
7158
7297
|
crypto_synced_id: 33004
|
|
7159
7298
|
symbol: btc
|
|
7160
7299
|
balances:
|
|
7161
|
-
-
|
|
7162
|
-
|
|
7300
|
+
- type: historical
|
|
7301
|
+
id: 105
|
|
7302
|
+
month: "2026-01"
|
|
7163
7303
|
balance: "6231.2800"
|
|
7164
7304
|
currency: usd
|
|
7165
7305
|
to_base: 6231.28
|
|
@@ -7175,12 +7315,34 @@ paths:
|
|
|
7175
7315
|
mask: "1234"
|
|
7176
7316
|
symbol: null
|
|
7177
7317
|
balances:
|
|
7178
|
-
-
|
|
7179
|
-
|
|
7318
|
+
- type: historical
|
|
7319
|
+
id: 106
|
|
7320
|
+
month: "2026-01"
|
|
7180
7321
|
balance: "1250.0000"
|
|
7181
7322
|
currency: usd
|
|
7182
7323
|
to_base: 1250
|
|
7183
7324
|
crypto_balance: null
|
|
7325
|
+
historical and current:
|
|
7326
|
+
summary: Historical month plus ephemeral current month
|
|
7327
|
+
value:
|
|
7328
|
+
balance_history:
|
|
7329
|
+
- source:
|
|
7330
|
+
type: manual
|
|
7331
|
+
manual_account_id: 162003
|
|
7332
|
+
balances:
|
|
7333
|
+
- type: historical
|
|
7334
|
+
id: 7437356
|
|
7335
|
+
month: "2026-06"
|
|
7336
|
+
balance: "62.8"
|
|
7337
|
+
currency: usd
|
|
7338
|
+
to_base: 62.8
|
|
7339
|
+
crypto_balance: null
|
|
7340
|
+
- type: current
|
|
7341
|
+
month: "2026-07"
|
|
7342
|
+
balance: "71.2"
|
|
7343
|
+
currency: usd
|
|
7344
|
+
to_base: 71.2
|
|
7345
|
+
crypto_balance: null
|
|
7184
7346
|
manual account history:
|
|
7185
7347
|
value:
|
|
7186
7348
|
balance_history:
|
|
@@ -7188,14 +7350,16 @@ paths:
|
|
|
7188
7350
|
type: manual
|
|
7189
7351
|
manual_account_id: 119807
|
|
7190
7352
|
balances:
|
|
7191
|
-
-
|
|
7192
|
-
|
|
7353
|
+
- type: historical
|
|
7354
|
+
id: 201
|
|
7355
|
+
month: "2026-01"
|
|
7193
7356
|
balance: "41000.0000"
|
|
7194
7357
|
currency: usd
|
|
7195
7358
|
to_base: 41000
|
|
7196
7359
|
crypto_balance: null
|
|
7197
|
-
-
|
|
7198
|
-
|
|
7360
|
+
- type: historical
|
|
7361
|
+
id: 202
|
|
7362
|
+
month: "2026-02"
|
|
7199
7363
|
balance: "41211.8000"
|
|
7200
7364
|
currency: usd
|
|
7201
7365
|
to_base: 41211.8
|
|
@@ -7207,8 +7371,9 @@ paths:
|
|
|
7207
7371
|
type: plaid
|
|
7208
7372
|
plaid_account_id: 119808
|
|
7209
7373
|
balances:
|
|
7210
|
-
-
|
|
7211
|
-
|
|
7374
|
+
- type: historical
|
|
7375
|
+
id: 301
|
|
7376
|
+
month: "2026-02"
|
|
7212
7377
|
balance: "5498.2800"
|
|
7213
7378
|
currency: usd
|
|
7214
7379
|
to_base: 5498.28
|
|
@@ -7221,8 +7386,9 @@ paths:
|
|
|
7221
7386
|
crypto_synced_id: 33004
|
|
7222
7387
|
symbol: btc
|
|
7223
7388
|
balances:
|
|
7224
|
-
-
|
|
7225
|
-
|
|
7389
|
+
- type: historical
|
|
7390
|
+
id: 401
|
|
7391
|
+
month: "2026-02"
|
|
7226
7392
|
balance: "6231.2800"
|
|
7227
7393
|
currency: usd
|
|
7228
7394
|
to_base: 6231.28
|
|
@@ -7241,8 +7407,9 @@ paths:
|
|
|
7241
7407
|
mask: "1234"
|
|
7242
7408
|
symbol: null
|
|
7243
7409
|
balances:
|
|
7244
|
-
-
|
|
7245
|
-
|
|
7410
|
+
- type: historical
|
|
7411
|
+
id: 501
|
|
7412
|
+
month: "2026-01"
|
|
7246
7413
|
balance: "1250.0000"
|
|
7247
7414
|
currency: usd
|
|
7248
7415
|
to_base: 1250
|
|
@@ -7254,26 +7421,31 @@ paths:
|
|
|
7254
7421
|
schema:
|
|
7255
7422
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7256
7423
|
examples:
|
|
7257
|
-
missing paired
|
|
7424
|
+
missing paired month:
|
|
7258
7425
|
value:
|
|
7259
7426
|
message: Request Validation Failure
|
|
7260
7427
|
errors:
|
|
7261
|
-
- errMsg: "`
|
|
7428
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7262
7429
|
invalid range:
|
|
7263
7430
|
value:
|
|
7264
7431
|
message: Request Validation Failure
|
|
7265
7432
|
errors:
|
|
7266
|
-
- errMsg: "`
|
|
7267
|
-
|
|
7433
|
+
- errMsg: "`end_month` may not be earlier than `start_month`."
|
|
7434
|
+
invalid month format:
|
|
7435
|
+
value:
|
|
7436
|
+
message: Invalid Request Parameters
|
|
7437
|
+
errors:
|
|
7438
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7439
|
+
future start month:
|
|
7268
7440
|
value:
|
|
7269
7441
|
message: Request Validation Failure
|
|
7270
7442
|
errors:
|
|
7271
|
-
- errMsg: "`
|
|
7272
|
-
future
|
|
7443
|
+
- errMsg: "`start_month` must not be in the future."
|
|
7444
|
+
future end month:
|
|
7273
7445
|
value:
|
|
7274
7446
|
message: Request Validation Failure
|
|
7275
7447
|
errors:
|
|
7276
|
-
- errMsg: "`
|
|
7448
|
+
- errMsg: "`end_month` must not be in the future."
|
|
7277
7449
|
"401":
|
|
7278
7450
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7279
7451
|
"429":
|
|
@@ -7285,23 +7457,16 @@ paths:
|
|
|
7285
7457
|
tags:
|
|
7286
7458
|
- balance_history
|
|
7287
7459
|
summary: Get balance history for an account
|
|
7288
|
-
description:
|
|
7289
|
-
Retrieve
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
The `account_type` path parameter identifies the type of account and the
|
|
7293
|
-
`account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
7294
|
-
|
|
7295
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7296
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7297
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7298
|
-
provided, all available history for the source is returned.
|
|
7460
|
+
description: |-
|
|
7461
|
+
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>
|
|
7462
|
+
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>
|
|
7463
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7299
7464
|
operationId: getBalanceHistoryForAccount
|
|
7300
7465
|
parameters:
|
|
7301
7466
|
- name: account_type
|
|
7302
7467
|
in: path
|
|
7303
7468
|
required: true
|
|
7304
|
-
description:
|
|
7469
|
+
description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7305
7470
|
schema:
|
|
7306
7471
|
type: string
|
|
7307
7472
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7312,23 +7477,27 @@ paths:
|
|
|
7312
7477
|
schema:
|
|
7313
7478
|
type: integer
|
|
7314
7479
|
format: int32
|
|
7315
|
-
- name:
|
|
7480
|
+
- name: start_month
|
|
7316
7481
|
in: query
|
|
7317
|
-
description:
|
|
7482
|
+
description: >-
|
|
7483
|
+
Optional. Same format and constraints as `start_month` on
|
|
7484
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7318
7485
|
required: false
|
|
7319
7486
|
schema:
|
|
7320
7487
|
type: string
|
|
7321
|
-
|
|
7322
|
-
- name:
|
|
7488
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7489
|
+
- name: end_month
|
|
7323
7490
|
in: query
|
|
7324
|
-
description:
|
|
7491
|
+
description: >-
|
|
7492
|
+
Optional. Same format and constraints as `end_month` on
|
|
7493
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7325
7494
|
required: false
|
|
7326
7495
|
schema:
|
|
7327
7496
|
type: string
|
|
7328
|
-
|
|
7497
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7329
7498
|
responses:
|
|
7330
7499
|
"200":
|
|
7331
|
-
description:
|
|
7500
|
+
description: Monthly balance history for the requested source
|
|
7332
7501
|
content:
|
|
7333
7502
|
application/json:
|
|
7334
7503
|
schema:
|
|
@@ -7341,14 +7510,16 @@ paths:
|
|
|
7341
7510
|
type: manual
|
|
7342
7511
|
manual_account_id: 119807
|
|
7343
7512
|
balances:
|
|
7344
|
-
-
|
|
7345
|
-
|
|
7513
|
+
- type: historical
|
|
7514
|
+
id: 201
|
|
7515
|
+
month: "2026-01"
|
|
7346
7516
|
balance: "41000.0000"
|
|
7347
7517
|
currency: usd
|
|
7348
7518
|
to_base: 41000
|
|
7349
7519
|
crypto_balance: null
|
|
7350
|
-
-
|
|
7351
|
-
|
|
7520
|
+
- type: historical
|
|
7521
|
+
id: 202
|
|
7522
|
+
month: "2026-02"
|
|
7352
7523
|
balance: "41211.8000"
|
|
7353
7524
|
currency: usd
|
|
7354
7525
|
to_base: 41211.8
|
|
@@ -7367,8 +7538,9 @@ paths:
|
|
|
7367
7538
|
mask: "1234"
|
|
7368
7539
|
symbol: null
|
|
7369
7540
|
balances:
|
|
7370
|
-
-
|
|
7371
|
-
|
|
7541
|
+
- type: historical
|
|
7542
|
+
id: 501
|
|
7543
|
+
month: "2026-01"
|
|
7372
7544
|
balance: "1250.0000"
|
|
7373
7545
|
currency: usd
|
|
7374
7546
|
to_base: 1250
|
|
@@ -7380,16 +7552,16 @@ paths:
|
|
|
7380
7552
|
schema:
|
|
7381
7553
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7382
7554
|
examples:
|
|
7383
|
-
missing paired
|
|
7555
|
+
missing paired month:
|
|
7384
7556
|
value:
|
|
7385
7557
|
message: Request Validation Failure
|
|
7386
7558
|
errors:
|
|
7387
|
-
- errMsg: "`
|
|
7388
|
-
invalid
|
|
7559
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7560
|
+
invalid month format:
|
|
7389
7561
|
value:
|
|
7390
|
-
message: Request
|
|
7562
|
+
message: Invalid Request Parameters
|
|
7391
7563
|
errors:
|
|
7392
|
-
- errMsg: "
|
|
7564
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7393
7565
|
"401":
|
|
7394
7566
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7395
7567
|
"404":
|
|
@@ -7417,37 +7589,20 @@ paths:
|
|
|
7417
7589
|
tags:
|
|
7418
7590
|
- balance_history
|
|
7419
7591
|
summary: Upsert balance history for an account
|
|
7420
|
-
description:
|
|
7421
|
-
Upsert one or more historical balance entries for a single manual, Plaid,
|
|
7422
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
`
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
a `date` and `balance` value.<br><br>
|
|
7429
|
-
|
|
7430
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7431
|
-
a month and must be in a past month.<br><br>
|
|
7432
|
-
|
|
7433
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7434
|
-
to the account currency for manual/Plaid accounts, or the user's primary
|
|
7435
|
-
currency for crypto/deleted accounts.<br><br>
|
|
7436
|
-
|
|
7437
|
-
`symbol` may only be set when `account_type` is `crypto_manual` or
|
|
7438
|
-
`crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
|
|
7439
|
-
for `deleted` accounts.<br><br>
|
|
7440
|
-
|
|
7441
|
-
`crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
|
|
7442
|
-
`deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7443
|
-
|
|
7444
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7592
|
+
description: |-
|
|
7593
|
+
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>
|
|
7594
|
+
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>
|
|
7595
|
+
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>
|
|
7596
|
+
`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>
|
|
7597
|
+
`symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
|
|
7598
|
+
`crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7599
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7445
7600
|
operationId: upsertBalanceHistoryForAccount
|
|
7446
7601
|
parameters:
|
|
7447
7602
|
- name: account_type
|
|
7448
7603
|
in: path
|
|
7449
7604
|
required: true
|
|
7450
|
-
description:
|
|
7605
|
+
description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7451
7606
|
schema:
|
|
7452
7607
|
type: string
|
|
7453
7608
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7468,21 +7623,21 @@ paths:
|
|
|
7468
7623
|
manual account bulk upsert:
|
|
7469
7624
|
value:
|
|
7470
7625
|
balances:
|
|
7471
|
-
-
|
|
7626
|
+
- month: "2026-03"
|
|
7472
7627
|
balance: "41500.0000"
|
|
7473
|
-
-
|
|
7628
|
+
- month: "2026-04"
|
|
7474
7629
|
balance: "41625.5000"
|
|
7475
7630
|
crypto manual balance with symbol:
|
|
7476
7631
|
value:
|
|
7477
7632
|
balances:
|
|
7478
|
-
-
|
|
7633
|
+
- month: "2026-03"
|
|
7479
7634
|
balance: "56011.1200"
|
|
7480
7635
|
symbol: btc
|
|
7481
7636
|
crypto_balance: "0.852341920145782301"
|
|
7482
7637
|
deleted account bulk upsert:
|
|
7483
7638
|
value:
|
|
7484
7639
|
balances:
|
|
7485
|
-
-
|
|
7640
|
+
- month: "2026-03"
|
|
7486
7641
|
symbol: btc
|
|
7487
7642
|
crypto_balance: "0.020000000000000000"
|
|
7488
7643
|
currency: usd
|
|
@@ -7491,55 +7646,59 @@ paths:
|
|
|
7491
7646
|
value:
|
|
7492
7647
|
balances:
|
|
7493
7648
|
- id: 601
|
|
7494
|
-
|
|
7649
|
+
month: "2026-03"
|
|
7495
7650
|
balance: "41500.0000"
|
|
7496
7651
|
currency: usd
|
|
7497
7652
|
to_base: 41500
|
|
7498
7653
|
crypto_balance: null
|
|
7499
7654
|
responses:
|
|
7500
7655
|
"200":
|
|
7501
|
-
description:
|
|
7502
|
-
|
|
7656
|
+
description: >-
|
|
7657
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7658
|
+
Other historical entries for the account are omitted from `balances`.
|
|
7503
7659
|
content:
|
|
7504
7660
|
application/json:
|
|
7505
7661
|
schema:
|
|
7506
7662
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7507
7663
|
examples:
|
|
7508
7664
|
manual account bulk upsert:
|
|
7509
|
-
summary: Two upserted
|
|
7665
|
+
summary: Two upserted entries returned (not full account history)
|
|
7510
7666
|
value:
|
|
7511
7667
|
source:
|
|
7512
7668
|
type: manual
|
|
7513
7669
|
manual_account_id: 119807
|
|
7514
7670
|
balances:
|
|
7515
|
-
-
|
|
7516
|
-
|
|
7671
|
+
- type: historical
|
|
7672
|
+
id: 601
|
|
7673
|
+
month: "2026-03"
|
|
7517
7674
|
balance: "41500.0000"
|
|
7518
7675
|
currency: usd
|
|
7519
7676
|
to_base: 41500
|
|
7520
7677
|
crypto_balance: null
|
|
7521
|
-
-
|
|
7522
|
-
|
|
7678
|
+
- type: historical
|
|
7679
|
+
id: 602
|
|
7680
|
+
month: "2026-04"
|
|
7523
7681
|
balance: "41625.5000"
|
|
7524
7682
|
currency: usd
|
|
7525
7683
|
to_base: 41625.5
|
|
7526
7684
|
crypto_balance: null
|
|
7527
7685
|
crypto manual balance with symbol:
|
|
7528
|
-
summary: Single upserted
|
|
7686
|
+
summary: Single upserted entry returned
|
|
7529
7687
|
value:
|
|
7530
7688
|
source:
|
|
7531
7689
|
type: crypto_manual
|
|
7532
7690
|
crypto_manual_id: 22001
|
|
7533
7691
|
symbol: btc
|
|
7534
7692
|
balances:
|
|
7535
|
-
-
|
|
7536
|
-
|
|
7693
|
+
- type: historical
|
|
7694
|
+
id: 603
|
|
7695
|
+
month: "2026-03"
|
|
7537
7696
|
balance: "56011.1200"
|
|
7538
7697
|
currency: usd
|
|
7539
7698
|
to_base: 56011.12
|
|
7540
7699
|
crypto_balance: "0.852341920145782301"
|
|
7541
7700
|
deleted account bulk upsert:
|
|
7542
|
-
summary: Single upserted
|
|
7701
|
+
summary: Single upserted entry returned
|
|
7543
7702
|
value:
|
|
7544
7703
|
source:
|
|
7545
7704
|
type: deleted
|
|
@@ -7552,15 +7711,17 @@ paths:
|
|
|
7552
7711
|
mask: "1234"
|
|
7553
7712
|
symbol: btc
|
|
7554
7713
|
balances:
|
|
7555
|
-
-
|
|
7556
|
-
|
|
7714
|
+
- type: historical
|
|
7715
|
+
id: 504
|
|
7716
|
+
month: "2026-03"
|
|
7557
7717
|
balance: "1255"
|
|
7558
7718
|
currency: usd
|
|
7559
7719
|
to_base: 1255
|
|
7560
7720
|
crypto_balance: "0.020000000000000000"
|
|
7561
7721
|
"400":
|
|
7562
|
-
description:
|
|
7563
|
-
`balances` fails validation
|
|
7722
|
+
description: >-
|
|
7723
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7724
|
+
request is rejected and no entries are updated.
|
|
7564
7725
|
content:
|
|
7565
7726
|
application/json:
|
|
7566
7727
|
schema:
|
|
@@ -7581,30 +7742,34 @@ paths:
|
|
|
7581
7742
|
message: Invalid Request Body
|
|
7582
7743
|
errors:
|
|
7583
7744
|
- errMsg: "Invalid property 'foo' in request body."
|
|
7584
|
-
invalid
|
|
7745
|
+
invalid month format:
|
|
7746
|
+
value:
|
|
7747
|
+
message: Invalid Request Body
|
|
7748
|
+
errors:
|
|
7749
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7750
|
+
current month:
|
|
7585
7751
|
value:
|
|
7586
7752
|
message: Request Validation Failure
|
|
7587
7753
|
errors:
|
|
7588
|
-
- errMsg: "`
|
|
7754
|
+
- errMsg: "`month` must not be the current month."
|
|
7589
7755
|
request_balances_index: 0
|
|
7590
|
-
|
|
7591
|
-
future date:
|
|
7756
|
+
future month:
|
|
7592
7757
|
value:
|
|
7593
7758
|
message: Request Validation Failure
|
|
7594
7759
|
errors:
|
|
7595
|
-
- errMsg: "`
|
|
7760
|
+
- errMsg: "`month` must not be in the future."
|
|
7596
7761
|
request_balances_index: 1
|
|
7597
7762
|
crypto balance not allowed:
|
|
7598
7763
|
value:
|
|
7599
7764
|
message: Request Validation Failure
|
|
7600
7765
|
errors:
|
|
7601
|
-
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual
|
|
7766
|
+
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7602
7767
|
request_balances_index: 0
|
|
7603
|
-
invalid
|
|
7768
|
+
invalid entry in bulk request:
|
|
7604
7769
|
value:
|
|
7605
7770
|
message: Request Validation Failure
|
|
7606
7771
|
errors:
|
|
7607
|
-
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `
|
|
7772
|
+
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7608
7773
|
request_balances_index: 1
|
|
7609
7774
|
"401":
|
|
7610
7775
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -7626,15 +7791,14 @@ paths:
|
|
|
7626
7791
|
tags:
|
|
7627
7792
|
- balance_history
|
|
7628
7793
|
summary: Delete all balance history for an account
|
|
7629
|
-
description:
|
|
7630
|
-
Delete all historical balance entries for a single manual, Plaid,
|
|
7631
|
-
manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
7794
|
+
description: |-
|
|
7795
|
+
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}).
|
|
7632
7796
|
operationId: deleteBalanceHistoryForAccount
|
|
7633
7797
|
parameters:
|
|
7634
7798
|
- name: account_type
|
|
7635
7799
|
in: path
|
|
7636
7800
|
required: true
|
|
7637
|
-
description:
|
|
7801
|
+
description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7638
7802
|
schema:
|
|
7639
7803
|
type: string
|
|
7640
7804
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7671,16 +7835,10 @@ paths:
|
|
|
7671
7835
|
tags:
|
|
7672
7836
|
- balance_history
|
|
7673
7837
|
summary: Get balance history for a synced crypto symbol
|
|
7674
|
-
description:
|
|
7675
|
-
Retrieve
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
to select one balance stream within that synced crypto account.<br><br>
|
|
7679
|
-
|
|
7680
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7681
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7682
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7683
|
-
provided, all available history for the symbol stream is returned.
|
|
7838
|
+
description: |-
|
|
7839
|
+
Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
|
|
7840
|
+
The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
|
|
7841
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7684
7842
|
operationId: getBalanceHistoryForCryptoSynced
|
|
7685
7843
|
parameters:
|
|
7686
7844
|
- name: account_id
|
|
@@ -7698,23 +7856,27 @@ paths:
|
|
|
7698
7856
|
type: string
|
|
7699
7857
|
minLength: 1
|
|
7700
7858
|
maxLength: 25
|
|
7701
|
-
- name:
|
|
7859
|
+
- name: start_month
|
|
7702
7860
|
in: query
|
|
7703
|
-
description:
|
|
7861
|
+
description: >-
|
|
7862
|
+
Optional. Same format and constraints as `start_month` on
|
|
7863
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7704
7864
|
required: false
|
|
7705
7865
|
schema:
|
|
7706
7866
|
type: string
|
|
7707
|
-
|
|
7708
|
-
- name:
|
|
7867
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7868
|
+
- name: end_month
|
|
7709
7869
|
in: query
|
|
7710
|
-
description:
|
|
7870
|
+
description: >-
|
|
7871
|
+
Optional. Same format and constraints as `end_month` on
|
|
7872
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7711
7873
|
required: false
|
|
7712
7874
|
schema:
|
|
7713
7875
|
type: string
|
|
7714
|
-
|
|
7876
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7715
7877
|
responses:
|
|
7716
7878
|
"200":
|
|
7717
|
-
description:
|
|
7879
|
+
description: Monthly balance history for the synced crypto symbol stream
|
|
7718
7880
|
content:
|
|
7719
7881
|
application/json:
|
|
7720
7882
|
schema:
|
|
@@ -7726,8 +7888,9 @@ paths:
|
|
|
7726
7888
|
crypto_synced_id: 33004
|
|
7727
7889
|
symbol: btc
|
|
7728
7890
|
balances:
|
|
7729
|
-
-
|
|
7730
|
-
|
|
7891
|
+
- type: historical
|
|
7892
|
+
id: 401
|
|
7893
|
+
month: "2026-02"
|
|
7731
7894
|
balance: "6231.2800"
|
|
7732
7895
|
currency: usd
|
|
7733
7896
|
to_base: 6231.28
|
|
@@ -7739,16 +7902,16 @@ paths:
|
|
|
7739
7902
|
schema:
|
|
7740
7903
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7741
7904
|
examples:
|
|
7742
|
-
missing paired
|
|
7905
|
+
missing paired month:
|
|
7743
7906
|
value:
|
|
7744
7907
|
message: Request Validation Failure
|
|
7745
7908
|
errors:
|
|
7746
|
-
- errMsg: "`
|
|
7747
|
-
invalid
|
|
7909
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7910
|
+
invalid month format:
|
|
7748
7911
|
value:
|
|
7749
|
-
message: Request
|
|
7912
|
+
message: Invalid Request Parameters
|
|
7750
7913
|
errors:
|
|
7751
|
-
- errMsg: "
|
|
7914
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7752
7915
|
"401":
|
|
7753
7916
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7754
7917
|
"404":
|
|
@@ -7776,28 +7939,14 @@ paths:
|
|
|
7776
7939
|
tags:
|
|
7777
7940
|
- balance_history
|
|
7778
7941
|
summary: Upsert balance history for a synced crypto symbol
|
|
7779
|
-
description:
|
|
7780
|
-
Upsert one or more historical balance entries for a single synced crypto
|
|
7781
|
-
symbol stream.<br><br>
|
|
7782
|
-
|
|
7942
|
+
description: |-
|
|
7943
|
+
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7783
7944
|
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7789
|
-
a month and must be in a past month.<br><br>
|
|
7790
|
-
|
|
7791
|
-
The request body may include an optional `symbol` on each balance entry. If
|
|
7792
|
-
provided, it must match the `symbol` path parameter. Omit `symbol` to use
|
|
7793
|
-
the path value.<br><br>
|
|
7794
|
-
|
|
7795
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7796
|
-
to the user's primary currency for synced crypto balances.<br><br>
|
|
7797
|
-
|
|
7945
|
+
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>
|
|
7946
|
+
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>
|
|
7947
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7798
7948
|
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7799
|
-
|
|
7800
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7949
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7801
7950
|
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7802
7951
|
parameters:
|
|
7803
7952
|
- name: account_id
|
|
@@ -7825,44 +7974,49 @@ paths:
|
|
|
7825
7974
|
synced crypto bulk upsert:
|
|
7826
7975
|
value:
|
|
7827
7976
|
balances:
|
|
7828
|
-
-
|
|
7977
|
+
- month: "2026-03"
|
|
7829
7978
|
balance: "6400.0000"
|
|
7830
7979
|
crypto_balance: "0.100020003000400050"
|
|
7831
|
-
-
|
|
7980
|
+
- month: "2026-04"
|
|
7832
7981
|
balance: "6500.0000"
|
|
7833
7982
|
crypto_balance: "0.100020003000400050"
|
|
7834
7983
|
responses:
|
|
7835
7984
|
"200":
|
|
7836
|
-
description:
|
|
7837
|
-
|
|
7985
|
+
description: >-
|
|
7986
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7987
|
+
Other historical entries for the symbol stream are omitted from
|
|
7988
|
+
`balances`.
|
|
7838
7989
|
content:
|
|
7839
7990
|
application/json:
|
|
7840
7991
|
schema:
|
|
7841
7992
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7842
7993
|
examples:
|
|
7843
7994
|
synced crypto bulk upsert:
|
|
7844
|
-
summary: Two upserted
|
|
7995
|
+
summary: Two upserted entries returned (not full symbol history)
|
|
7845
7996
|
value:
|
|
7846
7997
|
source:
|
|
7847
7998
|
type: crypto_synced
|
|
7848
7999
|
crypto_synced_id: 33004
|
|
7849
8000
|
symbol: btc
|
|
7850
8001
|
balances:
|
|
7851
|
-
-
|
|
7852
|
-
|
|
8002
|
+
- type: historical
|
|
8003
|
+
id: 604
|
|
8004
|
+
month: "2026-03"
|
|
7853
8005
|
balance: "6400.0000"
|
|
7854
8006
|
currency: usd
|
|
7855
8007
|
to_base: 6400
|
|
7856
8008
|
crypto_balance: "0.100020003000400050"
|
|
7857
|
-
-
|
|
7858
|
-
|
|
8009
|
+
- type: historical
|
|
8010
|
+
id: 605
|
|
8011
|
+
month: "2026-04"
|
|
7859
8012
|
balance: "6500.0000"
|
|
7860
8013
|
currency: usd
|
|
7861
8014
|
to_base: 6500
|
|
7862
8015
|
crypto_balance: "0.100020003000400050"
|
|
7863
8016
|
"400":
|
|
7864
|
-
description:
|
|
7865
|
-
`balances` fails validation
|
|
8017
|
+
description: >-
|
|
8018
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
8019
|
+
request is rejected and no entries are updated.
|
|
7866
8020
|
content:
|
|
7867
8021
|
application/json:
|
|
7868
8022
|
schema:
|
|
@@ -7878,17 +8032,22 @@ paths:
|
|
|
7878
8032
|
message: Invalid Request Body
|
|
7879
8033
|
errors:
|
|
7880
8034
|
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7881
|
-
invalid
|
|
8035
|
+
invalid month format:
|
|
8036
|
+
value:
|
|
8037
|
+
message: Invalid Request Body
|
|
8038
|
+
errors:
|
|
8039
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
8040
|
+
current month:
|
|
7882
8041
|
value:
|
|
7883
8042
|
message: Request Validation Failure
|
|
7884
8043
|
errors:
|
|
7885
|
-
- errMsg: "`
|
|
8044
|
+
- errMsg: "`month` must not be the current month."
|
|
7886
8045
|
request_balances_index: 0
|
|
7887
|
-
future
|
|
8046
|
+
future month:
|
|
7888
8047
|
value:
|
|
7889
8048
|
message: Request Validation Failure
|
|
7890
8049
|
errors:
|
|
7891
|
-
- errMsg: "`
|
|
8050
|
+
- errMsg: "`month` must not be in the future."
|
|
7892
8051
|
request_balances_index: 1
|
|
7893
8052
|
symbol mismatch:
|
|
7894
8053
|
value:
|
|
@@ -7896,9 +8055,9 @@ paths:
|
|
|
7896
8055
|
errors:
|
|
7897
8056
|
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7898
8057
|
request_balances_index: 0
|
|
7899
|
-
invalid
|
|
8058
|
+
invalid entry in bulk request:
|
|
7900
8059
|
value:
|
|
7901
|
-
message: Request
|
|
8060
|
+
message: Invalid Request Body
|
|
7902
8061
|
errors:
|
|
7903
8062
|
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7904
8063
|
request_balances_index: 1
|
|
@@ -7929,11 +8088,9 @@ paths:
|
|
|
7929
8088
|
tags:
|
|
7930
8089
|
- balance_history
|
|
7931
8090
|
summary: Delete all balance history for a synced crypto symbol
|
|
7932
|
-
description:
|
|
8091
|
+
description: |-
|
|
7933
8092
|
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7934
|
-
|
|
7935
|
-
The path identifies both the synced crypto account and the symbol whose
|
|
7936
|
-
history should be deleted.
|
|
8093
|
+
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7937
8094
|
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7938
8095
|
parameters:
|
|
7939
8096
|
- name: account_id
|
|
@@ -7975,14 +8132,14 @@ paths:
|
|
|
7975
8132
|
tags:
|
|
7976
8133
|
- balance_history
|
|
7977
8134
|
summary: Delete a balance history entry
|
|
7978
|
-
description:
|
|
7979
|
-
Delete a single monthly balance history entry by its id.
|
|
8135
|
+
description: |-
|
|
8136
|
+
Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
|
|
7980
8137
|
operationId: deleteBalanceHistoryEntry
|
|
7981
8138
|
parameters:
|
|
7982
8139
|
- name: id
|
|
7983
8140
|
in: path
|
|
7984
8141
|
required: true
|
|
7985
|
-
description:
|
|
8142
|
+
description: Historical balance entry identifier to delete.
|
|
7986
8143
|
schema:
|
|
7987
8144
|
type: integer
|
|
7988
8145
|
format: int32
|
|
@@ -7996,7 +8153,7 @@ paths:
|
|
|
7996
8153
|
schema:
|
|
7997
8154
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7998
8155
|
example:
|
|
7999
|
-
message:
|
|
8156
|
+
message: Invalid Path Parameters
|
|
8000
8157
|
errors:
|
|
8001
8158
|
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
8002
8159
|
"401":
|
|
@@ -8020,12 +8177,9 @@ paths:
|
|
|
8020
8177
|
tags:
|
|
8021
8178
|
- balance_history
|
|
8022
8179
|
summary: Update details for a deleted account
|
|
8023
|
-
description:
|
|
8180
|
+
description: |-
|
|
8024
8181
|
Update archived metadata for a deleted balance history source.<br><br>
|
|
8025
|
-
|
|
8026
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`.
|
|
8027
|
-
This endpoint updates the stored deleted-source metadata used for all
|
|
8028
|
-
historical entries associated with that deleted source.
|
|
8182
|
+
Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
|
|
8029
8183
|
operationId: updateBalanceHistoryDetails
|
|
8030
8184
|
parameters:
|
|
8031
8185
|
- name: account_id
|
|
@@ -9099,19 +9253,19 @@ paths:
|
|
|
9099
9253
|
description: Sets the maximum number of transactions to return. If
|
|
9100
9254
|
more match the filter criteria, the response will include a
|
|
9101
9255
|
`has_more` attribute set to `true`. See
|
|
9102
|
-
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9256
|
+
[Pagination](https://beta.lunchmoney.dev/v2/pagination)
|
|
9103
9257
|
- name: offset
|
|
9104
9258
|
in: query
|
|
9105
9259
|
schema:
|
|
9106
9260
|
type: integer
|
|
9107
9261
|
description: Sets the offset for the records returned. This is
|
|
9108
9262
|
typically set automatically in the header. See
|
|
9109
|
-
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9263
|
+
[Pagination](https://beta.lunchmoney.dev/v2/pagination)
|
|
9110
9264
|
responses:
|
|
9111
9265
|
"200":
|
|
9112
9266
|
description: Returns an array of transactions. <br><br>The `has_more`
|
|
9113
9267
|
property is set to `true` if more transactions are available. See
|
|
9114
|
-
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9268
|
+
[Pagination](https://beta.lunchmoney.dev/v2/pagination)
|
|
9115
9269
|
content:
|
|
9116
9270
|
application/json:
|
|
9117
9271
|
schema:
|
|
@@ -11335,9 +11489,8 @@ paths:
|
|
|
11335
11489
|
- transactions (files)
|
|
11336
11490
|
summary: Attach a file to a transaction
|
|
11337
11491
|
operationId: attachFileToTransaction
|
|
11338
|
-
description:
|
|
11339
|
-
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
|
|
11340
|
-
The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
11492
|
+
description: |-
|
|
11493
|
+
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.
|
|
11341
11494
|
parameters:
|
|
11342
11495
|
- name: transaction_id
|
|
11343
11496
|
in: path
|
|
@@ -11420,8 +11573,8 @@ paths:
|
|
|
11420
11573
|
/transactions/attachments/{file_id}:
|
|
11421
11574
|
get:
|
|
11422
11575
|
summary: Get a url to download a file attachment
|
|
11423
|
-
description:
|
|
11424
|
-
attachment.
|
|
11576
|
+
description: |-
|
|
11577
|
+
Returns a signed url that can be used to download the file attachment.
|
|
11425
11578
|
operationId: getTransactionAttachmentUrl
|
|
11426
11579
|
tags:
|
|
11427
11580
|
- transactions (files)
|
|
@@ -12316,4 +12469,3 @@ paths:
|
|
|
12316
12469
|
|
|
12317
12470
|
security:
|
|
12318
12471
|
- bearerSecurity: []
|
|
12319
|
-
- cookieAuth: []
|