@lunch-money/developer-docs 2.11.0-preview.16 → 2.11.0-preview.16-no-bh
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 +0 -1
- package/package.json +1 -1
- package/v2/spec/lunch-money-api-v2.yaml +1333 -1333
|
@@ -2,10 +2,10 @@ openapi: 3.0.2
|
|
|
2
2
|
info:
|
|
3
3
|
title: Lunch Money API - v2
|
|
4
4
|
description: |-
|
|
5
|
-
Welcome to the Lunch Money v2 API reference. This is the **v2.11.0** spec.
|
|
6
|
-
|
|
7
5
|
### Introduction
|
|
8
6
|
|
|
7
|
+
Welcome to the Lunch Money v2 API reference. This is the **v2.11.0** spec.
|
|
8
|
+
|
|
9
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).
|
|
10
10
|
|
|
11
11
|
|
|
@@ -78,8 +78,8 @@ tags:
|
|
|
78
78
|
externalDocs:
|
|
79
79
|
description: Learn more about crypto assets
|
|
80
80
|
url: https://support.lunchmoney.app/setup/crypto
|
|
81
|
-
- name: balance_history
|
|
82
|
-
description: View and update historical account balances. Balance history is what drives the [Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app. Balance history is generated for each account's balance on the first day of each month and can be edited in the Lunch Money app or via the API.
|
|
81
|
+
# - name: balance_history
|
|
82
|
+
# description: View and update historical account balances. Balance history is what drives the [Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app. Balance history is generated for each account's balance on the first day of each month and can be edited in the Lunch Money app or via the API.
|
|
83
83
|
- name: recurring_items
|
|
84
84
|
description: Work with recurring items
|
|
85
85
|
externalDocs:
|
|
@@ -1634,364 +1634,364 @@ components:
|
|
|
1634
1634
|
- last_fetch
|
|
1635
1635
|
- plaid_last_successful_update
|
|
1636
1636
|
|
|
1637
|
-
balanceHistorySourceManual:
|
|
1638
|
-
type: object
|
|
1639
|
-
description: Source information for a manual account balance history entry.
|
|
1640
|
-
additionalProperties: false
|
|
1641
|
-
x-internal: true
|
|
1642
|
-
properties:
|
|
1643
|
-
type:
|
|
1644
|
-
type: string
|
|
1645
|
-
enum: [manual]
|
|
1646
|
-
description: Identifies this entry as belonging to a manually-managed account.
|
|
1647
|
-
manual_account_id:
|
|
1648
|
-
type: integer
|
|
1649
|
-
format: int32
|
|
1650
|
-
description: ID of the manual account associated with this entry.
|
|
1651
|
-
required:
|
|
1652
|
-
- type
|
|
1653
|
-
- manual_account_id
|
|
1654
|
-
|
|
1655
|
-
balanceHistorySourcePlaid:
|
|
1656
|
-
type: object
|
|
1657
|
-
description: Source information for a Plaid-synced account balance history entry.
|
|
1658
|
-
additionalProperties: false
|
|
1659
|
-
x-internal: true
|
|
1660
|
-
properties:
|
|
1661
|
-
type:
|
|
1662
|
-
type: string
|
|
1663
|
-
enum: [plaid]
|
|
1664
|
-
description: Identifies this entry as belonging to a Plaid-synced account.
|
|
1665
|
-
plaid_account_id:
|
|
1666
|
-
type: integer
|
|
1667
|
-
format: int32
|
|
1668
|
-
description: ID of the Plaid account associated with this entry.
|
|
1669
|
-
required:
|
|
1670
|
-
- type
|
|
1671
|
-
- plaid_account_id
|
|
1672
|
-
|
|
1673
|
-
balanceHistorySourceCryptoManual:
|
|
1674
|
-
type: object
|
|
1675
|
-
description: Source information for a manually-tracked cryptocurrency balance history entry.
|
|
1676
|
-
additionalProperties: false
|
|
1677
|
-
x-internal: true
|
|
1678
|
-
properties:
|
|
1679
|
-
type:
|
|
1680
|
-
type: string
|
|
1681
|
-
enum: [crypto_manual]
|
|
1682
|
-
description: Identifies this entry as belonging to a manually-tracked crypto account.
|
|
1683
|
-
crypto_manual_id:
|
|
1684
|
-
type: integer
|
|
1685
|
-
format: int32
|
|
1686
|
-
description: ID of the manual crypto account associated with this entry.
|
|
1687
|
-
symbol:
|
|
1688
|
-
type: string
|
|
1689
|
-
nullable: true
|
|
1690
|
-
minLength: 1
|
|
1691
|
-
maxLength: 25
|
|
1692
|
-
description: Crypto symbol associated with the manual crypto account, when available.
|
|
1693
|
-
required:
|
|
1694
|
-
- type
|
|
1695
|
-
- crypto_manual_id
|
|
1696
|
-
|
|
1697
|
-
balanceHistorySourceCryptoSynced:
|
|
1698
|
-
type: object
|
|
1699
|
-
x-internal: true
|
|
1700
|
-
description: Source information for a synced cryptocurrency balance history entry.
|
|
1701
|
-
additionalProperties: false
|
|
1702
|
-
properties:
|
|
1703
|
-
type:
|
|
1704
|
-
type: string
|
|
1705
|
-
enum: [crypto_synced]
|
|
1706
|
-
description: Identifies this entry as belonging to a synced crypto connection.
|
|
1707
|
-
crypto_synced_id:
|
|
1708
|
-
type: integer
|
|
1709
|
-
format: int32
|
|
1710
|
-
description: ID of the synced crypto connection associated with this entry.
|
|
1711
|
-
symbol:
|
|
1712
|
-
type: string
|
|
1713
|
-
minLength: 1
|
|
1714
|
-
maxLength: 25
|
|
1715
|
-
description: Crypto symbol (e.g. `eth`, `btc`) identifying the specific currency within the synced account.
|
|
1716
|
-
required:
|
|
1717
|
-
- type
|
|
1718
|
-
- crypto_synced_id
|
|
1719
|
-
- symbol
|
|
1720
|
-
|
|
1721
|
-
balanceHistorySourceDeleted:
|
|
1722
|
-
type: object
|
|
1723
|
-
x-internal: true
|
|
1724
|
-
description: >
|
|
1725
|
-
Source information for a balance history entry whose account has since been deleted.
|
|
1726
|
-
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1727
|
-
This object contains details that can be used to display the deleted account in the UI.
|
|
1728
|
-
The `deleted_account_id` can be passed to `PUT /v2/balance_history/deleted/{account_id}/details`
|
|
1729
|
-
to update the archived source metadata.
|
|
1730
|
-
additionalProperties: false
|
|
1731
|
-
properties:
|
|
1732
|
-
type:
|
|
1733
|
-
type: string
|
|
1734
|
-
enum: [deleted]
|
|
1735
|
-
description: Identifies this entry as belonging to an account that has since been deleted.
|
|
1736
|
-
deleted_account_id:
|
|
1737
|
-
type: integer
|
|
1738
|
-
format: int32
|
|
1739
|
-
description: Identifier for the deleted account history source
|
|
1740
|
-
name:
|
|
1741
|
-
type: string
|
|
1742
|
-
nullable: true
|
|
1743
|
-
description: Archived account `name` for the deleted account source
|
|
1744
|
-
institution_name:
|
|
1745
|
-
type: string
|
|
1746
|
-
nullable: true
|
|
1747
|
-
description: Archived `institution_name` for the deleted account source
|
|
1748
|
-
display_name:
|
|
1749
|
-
type: string
|
|
1750
|
-
nullable: true
|
|
1751
|
-
description: Archived `display_name` of the deleted account
|
|
1752
|
-
account_type:
|
|
1753
|
-
type: string
|
|
1754
|
-
nullable: true
|
|
1755
|
-
description: Archived `type` of the deleted account source
|
|
1756
|
-
subtype:
|
|
1757
|
-
type: string
|
|
1758
|
-
nullable: true
|
|
1759
|
-
description: Archived `subtype`` of the deleted account source
|
|
1760
|
-
mask:
|
|
1761
|
-
type: string
|
|
1762
|
-
nullable: true
|
|
1763
|
-
description: Archived account `mask` for a deleted plaid account source
|
|
1764
|
-
symbol:
|
|
1765
|
-
type: string
|
|
1766
|
-
nullable: true
|
|
1767
|
-
minLength: 1
|
|
1768
|
-
maxLength: 25
|
|
1769
|
-
description: Archived `symbol` for a deleted crypto account source
|
|
1770
|
-
required:
|
|
1771
|
-
- type
|
|
1772
|
-
- deleted_account_id
|
|
1773
|
-
- name
|
|
1774
|
-
- institution_name
|
|
1775
|
-
- display_name
|
|
1776
|
-
- account_type
|
|
1777
|
-
- subtype
|
|
1778
|
-
- mask
|
|
1779
|
-
- symbol
|
|
1780
|
-
|
|
1781
|
-
balanceHistoryAccountObject:
|
|
1782
|
-
type: object
|
|
1783
|
-
title: balance history for an account object
|
|
1784
|
-
additionalProperties: false
|
|
1785
|
-
description: Historical balance entries grouped under a single account source.
|
|
1786
|
-
properties:
|
|
1787
|
-
source:
|
|
1788
|
-
description: >
|
|
1789
|
-
Identifies the account this balance entry belongs to. The shape varies by
|
|
1790
|
-
`source.type`. Use `source.type` to determine which account id field is present.
|
|
1791
|
-
oneOf:
|
|
1792
|
-
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1793
|
-
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
1794
|
-
- $ref: "#/components/schemas/balanceHistorySourceCryptoManual"
|
|
1795
|
-
- $ref: "#/components/schemas/balanceHistorySourceCryptoSynced"
|
|
1796
|
-
- $ref: "#/components/schemas/balanceHistorySourceDeleted"
|
|
1797
|
-
discriminator:
|
|
1798
|
-
propertyName: type
|
|
1799
|
-
mapping:
|
|
1800
|
-
manual: "#/components/schemas/balanceHistorySourceManual"
|
|
1801
|
-
plaid: "#/components/schemas/balanceHistorySourcePlaid"
|
|
1802
|
-
crypto_manual: "#/components/schemas/balanceHistorySourceCryptoManual"
|
|
1803
|
-
crypto_synced: "#/components/schemas/balanceHistorySourceCryptoSynced"
|
|
1804
|
-
deleted: "#/components/schemas/balanceHistorySourceDeleted"
|
|
1805
|
-
balances:
|
|
1806
|
-
type: array
|
|
1807
|
-
description: >
|
|
1808
|
-
Monthly balance history entries for the source account. On GET responses,
|
|
1809
|
-
this includes all entries in the requested range. On PUT upsert responses,
|
|
1810
|
-
this includes only the entries modified by that request.
|
|
1811
|
-
items:
|
|
1812
|
-
$ref: "#/components/schemas/balanceHistoryObject"
|
|
1813
|
-
required:
|
|
1814
|
-
- source
|
|
1815
|
-
- balances
|
|
1816
|
-
|
|
1817
|
-
balanceHistoryObject:
|
|
1818
|
-
type: object
|
|
1819
|
-
title: balance history entry object
|
|
1820
|
-
additionalProperties: false
|
|
1821
|
-
x-internal: true
|
|
1822
|
-
description: A historical balance entry for a single account on a single date.
|
|
1823
|
-
properties:
|
|
1824
|
-
id:
|
|
1825
|
-
type: integer
|
|
1826
|
-
format: int32
|
|
1827
|
-
description: Unique identifier of this historical balance entry.
|
|
1828
|
-
date:
|
|
1829
|
-
type: string
|
|
1830
|
-
format: date
|
|
1831
|
-
description: Date of this historical balance entry in YYYY-MM-DD format. This is always the first day of a month.
|
|
1832
|
-
balance:
|
|
1833
|
-
type: string
|
|
1834
|
-
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1835
|
-
description: Historical balance stored 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.
|
|
1836
|
-
currency:
|
|
1837
|
-
allOf:
|
|
1838
|
-
- $ref: "#/components/schemas/currencyEnum"
|
|
1839
|
-
description: Currency of the stored `balance`. For crypto entries this is the user's primary currency.
|
|
1840
|
-
to_base:
|
|
1841
|
-
type: number
|
|
1842
|
-
format: double
|
|
1843
|
-
description: Historical 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`.
|
|
1844
|
-
crypto_balance:
|
|
1845
|
-
type: string
|
|
1846
|
-
nullable: true
|
|
1847
|
-
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1848
|
-
description: Crypto quantity stored for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1849
|
-
required:
|
|
1850
|
-
- id
|
|
1851
|
-
- date
|
|
1852
|
-
- balance
|
|
1853
|
-
- currency
|
|
1854
|
-
- to_base
|
|
1855
|
-
- crypto_balance
|
|
1856
|
-
|
|
1857
|
-
balanceHistoryListResponseObject:
|
|
1858
|
-
type: object
|
|
1859
|
-
additionalProperties: false
|
|
1860
|
-
x-internal: true
|
|
1861
|
-
properties:
|
|
1862
|
-
balance_history:
|
|
1863
|
-
type: array
|
|
1864
|
-
items:
|
|
1865
|
-
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
1866
|
-
required:
|
|
1867
|
-
- balance_history
|
|
1868
|
-
|
|
1869
|
-
balanceHistoryUpdateItemObject:
|
|
1870
|
-
type: object
|
|
1871
|
-
x-internal: true
|
|
1872
|
-
additionalProperties: false
|
|
1873
|
-
properties:
|
|
1874
|
-
id:
|
|
1875
|
-
type: integer
|
|
1876
|
-
format: int32
|
|
1877
|
-
description: System-defined balance history entry id. Ignored if set.
|
|
1878
|
-
x-updatable: false
|
|
1879
|
-
date:
|
|
1880
|
-
type: string
|
|
1881
|
-
format: date
|
|
1882
|
-
description: Month to update, in YYYY-MM-DD format. This must be the first day of a month and must be in a past month.
|
|
1883
|
-
balance:
|
|
1884
|
-
oneOf:
|
|
1885
|
-
- type: number
|
|
1886
|
-
format: double
|
|
1887
|
-
- type: string
|
|
1888
|
-
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1889
|
-
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is typically in the account currency. For crypto and deleted accounts this is typically in the user's primary currency. Do not include any special characters aside from a decimal point.
|
|
1890
|
-
symbol:
|
|
1891
|
-
type: string
|
|
1892
|
-
nullable: true
|
|
1893
|
-
minLength: 1
|
|
1894
|
-
maxLength: 25
|
|
1895
|
-
description: Optional for crypto balances, but if set it must match the account's symbol.
|
|
1896
|
-
Tolerated for deleted-account balances. Do not provide this for manual or Plaid balances.
|
|
1897
|
-
If provided when using the synced crypto path-based endpoint, this must match the symbol in the path.
|
|
1898
|
-
x-updatable: true
|
|
1899
|
-
crypto_balance:
|
|
1900
|
-
type: string
|
|
1901
|
-
nullable: true
|
|
1902
|
-
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1903
|
-
description: Optional crypto quantity for crypto_manual, crypto_synced, and deleted balances. Do not provide this for manual or Plaid balances.
|
|
1904
|
-
x-updatable: true
|
|
1905
|
-
currency:
|
|
1906
|
-
allOf:
|
|
1907
|
-
- $ref: "#/components/schemas/currencyEnum"
|
|
1908
|
-
description: Optional currency for this balance entry. If omitted, it defaults to the account currency for manual/Plaid accounts, or the user's primary currency for crypto/deleted accounts.
|
|
1909
|
-
x-updatable: true
|
|
1910
|
-
to_base:
|
|
1911
|
-
type: number
|
|
1912
|
-
format: double
|
|
1913
|
-
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the stored historical balance.
|
|
1914
|
-
x-updatable: false
|
|
1915
|
-
required:
|
|
1916
|
-
- date
|
|
1917
|
-
- balance
|
|
1918
|
-
|
|
1919
|
-
upsertBalanceHistoryRequestObject:
|
|
1920
|
-
type: object
|
|
1921
|
-
x-internal: true
|
|
1922
|
-
additionalProperties: false
|
|
1923
|
-
properties:
|
|
1924
|
-
balances:
|
|
1925
|
-
type: array
|
|
1926
|
-
minItems: 1
|
|
1927
|
-
description: One or more monthly balance history entries to upsert
|
|
1928
|
-
items:
|
|
1929
|
-
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1930
|
-
required:
|
|
1931
|
-
- balances
|
|
1932
|
-
|
|
1933
|
-
updateBalanceHistoryDetailsRequestObject:
|
|
1934
|
-
type: object
|
|
1935
|
-
x-internal: true
|
|
1936
|
-
additionalProperties: false
|
|
1937
|
-
minProperties: 1
|
|
1938
|
-
properties:
|
|
1939
|
-
name:
|
|
1940
|
-
type: string
|
|
1941
|
-
nullable: true
|
|
1942
|
-
description: New archived account name for the deleted account source.
|
|
1943
|
-
institution_name:
|
|
1944
|
-
type: string
|
|
1945
|
-
nullable: true
|
|
1946
|
-
description: New archived institution name for the deleted account source.
|
|
1947
|
-
display_name:
|
|
1948
|
-
type: string
|
|
1949
|
-
nullable: true
|
|
1950
|
-
description: New display name for the deleted account source.
|
|
1951
|
-
account_type:
|
|
1952
|
-
type: string
|
|
1953
|
-
nullable: true
|
|
1954
|
-
description: New archived account type for the deleted account source.
|
|
1955
|
-
subtype:
|
|
1956
|
-
type: string
|
|
1957
|
-
nullable: true
|
|
1958
|
-
description: New archived subtype for the deleted account source.
|
|
1959
|
-
mask:
|
|
1960
|
-
type: string
|
|
1961
|
-
nullable: true
|
|
1962
|
-
description: New archived account mask for the deleted account source.
|
|
1963
|
-
|
|
1964
|
-
updateBalanceHistoryDetailsResponseObject:
|
|
1965
|
-
type: object
|
|
1966
|
-
x-internal: true
|
|
1967
|
-
additionalProperties: false
|
|
1968
|
-
properties:
|
|
1969
|
-
name:
|
|
1970
|
-
type: string
|
|
1971
|
-
nullable: true
|
|
1972
|
-
institution_name:
|
|
1973
|
-
type: string
|
|
1974
|
-
nullable: true
|
|
1975
|
-
display_name:
|
|
1976
|
-
type: string
|
|
1977
|
-
nullable: true
|
|
1978
|
-
account_type:
|
|
1979
|
-
type: string
|
|
1980
|
-
nullable: true
|
|
1981
|
-
subtype:
|
|
1982
|
-
type: string
|
|
1983
|
-
nullable: true
|
|
1984
|
-
mask:
|
|
1985
|
-
type: string
|
|
1986
|
-
nullable: true
|
|
1987
|
-
required:
|
|
1988
|
-
- name
|
|
1989
|
-
- institution_name
|
|
1990
|
-
- display_name
|
|
1991
|
-
- account_type
|
|
1992
|
-
- subtype
|
|
1993
|
-
- mask
|
|
1994
|
-
|
|
1637
|
+
# balanceHistorySourceManual:
|
|
1638
|
+
# type: object
|
|
1639
|
+
# description: Source information for a manual account balance history entry.
|
|
1640
|
+
# additionalProperties: false
|
|
1641
|
+
# x-internal: true
|
|
1642
|
+
# properties:
|
|
1643
|
+
# type:
|
|
1644
|
+
# type: string
|
|
1645
|
+
# enum: [manual]
|
|
1646
|
+
# description: Identifies this entry as belonging to a manually-managed account.
|
|
1647
|
+
# manual_account_id:
|
|
1648
|
+
# type: integer
|
|
1649
|
+
# format: int32
|
|
1650
|
+
# description: ID of the manual account associated with this entry.
|
|
1651
|
+
# required:
|
|
1652
|
+
# - type
|
|
1653
|
+
# - manual_account_id
|
|
1654
|
+
#
|
|
1655
|
+
# balanceHistorySourcePlaid:
|
|
1656
|
+
# type: object
|
|
1657
|
+
# description: Source information for a Plaid-synced account balance history entry.
|
|
1658
|
+
# additionalProperties: false
|
|
1659
|
+
# x-internal: true
|
|
1660
|
+
# properties:
|
|
1661
|
+
# type:
|
|
1662
|
+
# type: string
|
|
1663
|
+
# enum: [plaid]
|
|
1664
|
+
# description: Identifies this entry as belonging to a Plaid-synced account.
|
|
1665
|
+
# plaid_account_id:
|
|
1666
|
+
# type: integer
|
|
1667
|
+
# format: int32
|
|
1668
|
+
# description: ID of the Plaid account associated with this entry.
|
|
1669
|
+
# required:
|
|
1670
|
+
# - type
|
|
1671
|
+
# - plaid_account_id
|
|
1672
|
+
#
|
|
1673
|
+
# balanceHistorySourceCryptoManual:
|
|
1674
|
+
# type: object
|
|
1675
|
+
# description: Source information for a manually-tracked cryptocurrency balance history entry.
|
|
1676
|
+
# additionalProperties: false
|
|
1677
|
+
# x-internal: true
|
|
1678
|
+
# properties:
|
|
1679
|
+
# type:
|
|
1680
|
+
# type: string
|
|
1681
|
+
# enum: [crypto_manual]
|
|
1682
|
+
# description: Identifies this entry as belonging to a manually-tracked crypto account.
|
|
1683
|
+
# crypto_manual_id:
|
|
1684
|
+
# type: integer
|
|
1685
|
+
# format: int32
|
|
1686
|
+
# description: ID of the manual crypto account associated with this entry.
|
|
1687
|
+
# symbol:
|
|
1688
|
+
# type: string
|
|
1689
|
+
# nullable: true
|
|
1690
|
+
# minLength: 1
|
|
1691
|
+
# maxLength: 25
|
|
1692
|
+
# description: Crypto symbol associated with the manual crypto account, when available.
|
|
1693
|
+
# required:
|
|
1694
|
+
# - type
|
|
1695
|
+
# - crypto_manual_id
|
|
1696
|
+
#
|
|
1697
|
+
# balanceHistorySourceCryptoSynced:
|
|
1698
|
+
# type: object
|
|
1699
|
+
# x-internal: true
|
|
1700
|
+
# description: Source information for a synced cryptocurrency balance history entry.
|
|
1701
|
+
# additionalProperties: false
|
|
1702
|
+
# properties:
|
|
1703
|
+
# type:
|
|
1704
|
+
# type: string
|
|
1705
|
+
# enum: [crypto_synced]
|
|
1706
|
+
# description: Identifies this entry as belonging to a synced crypto connection.
|
|
1707
|
+
# crypto_synced_id:
|
|
1708
|
+
# type: integer
|
|
1709
|
+
# format: int32
|
|
1710
|
+
# description: ID of the synced crypto connection associated with this entry.
|
|
1711
|
+
# symbol:
|
|
1712
|
+
# type: string
|
|
1713
|
+
# minLength: 1
|
|
1714
|
+
# maxLength: 25
|
|
1715
|
+
# description: Crypto symbol (e.g. `eth`, `btc`) identifying the specific currency within the synced account.
|
|
1716
|
+
# required:
|
|
1717
|
+
# - type
|
|
1718
|
+
# - crypto_synced_id
|
|
1719
|
+
# - symbol
|
|
1720
|
+
#
|
|
1721
|
+
# balanceHistorySourceDeleted:
|
|
1722
|
+
# type: object
|
|
1723
|
+
# x-internal: true
|
|
1724
|
+
# description: >
|
|
1725
|
+
# Source information for a balance history entry whose account has since been deleted.
|
|
1726
|
+
# Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1727
|
+
# This object contains details that can be used to display the deleted account in the UI.
|
|
1728
|
+
# The `deleted_account_id` can be passed to `PUT /v2/balance_history/deleted/{account_id}/details`
|
|
1729
|
+
# to update the archived source metadata.
|
|
1730
|
+
# additionalProperties: false
|
|
1731
|
+
# properties:
|
|
1732
|
+
# type:
|
|
1733
|
+
# type: string
|
|
1734
|
+
# enum: [deleted]
|
|
1735
|
+
# description: Identifies this entry as belonging to an account that has since been deleted.
|
|
1736
|
+
# deleted_account_id:
|
|
1737
|
+
# type: integer
|
|
1738
|
+
# format: int32
|
|
1739
|
+
# description: Identifier for the deleted account history source
|
|
1740
|
+
# name:
|
|
1741
|
+
# type: string
|
|
1742
|
+
# nullable: true
|
|
1743
|
+
# description: Archived account `name` for the deleted account source
|
|
1744
|
+
# institution_name:
|
|
1745
|
+
# type: string
|
|
1746
|
+
# nullable: true
|
|
1747
|
+
# description: Archived `institution_name` for the deleted account source
|
|
1748
|
+
# display_name:
|
|
1749
|
+
# type: string
|
|
1750
|
+
# nullable: true
|
|
1751
|
+
# description: Archived `display_name` of the deleted account
|
|
1752
|
+
# account_type:
|
|
1753
|
+
# type: string
|
|
1754
|
+
# nullable: true
|
|
1755
|
+
# description: Archived `type` of the deleted account source
|
|
1756
|
+
# subtype:
|
|
1757
|
+
# type: string
|
|
1758
|
+
# nullable: true
|
|
1759
|
+
# description: Archived `subtype`` of the deleted account source
|
|
1760
|
+
# mask:
|
|
1761
|
+
# type: string
|
|
1762
|
+
# nullable: true
|
|
1763
|
+
# description: Archived account `mask` for a deleted plaid account source
|
|
1764
|
+
# symbol:
|
|
1765
|
+
# type: string
|
|
1766
|
+
# nullable: true
|
|
1767
|
+
# minLength: 1
|
|
1768
|
+
# maxLength: 25
|
|
1769
|
+
# description: Archived `symbol` for a deleted crypto account source
|
|
1770
|
+
# required:
|
|
1771
|
+
# - type
|
|
1772
|
+
# - deleted_account_id
|
|
1773
|
+
# - name
|
|
1774
|
+
# - institution_name
|
|
1775
|
+
# - display_name
|
|
1776
|
+
# - account_type
|
|
1777
|
+
# - subtype
|
|
1778
|
+
# - mask
|
|
1779
|
+
# - symbol
|
|
1780
|
+
#
|
|
1781
|
+
# balanceHistoryAccountObject:
|
|
1782
|
+
# type: object
|
|
1783
|
+
# title: balance history for an account object
|
|
1784
|
+
# additionalProperties: false
|
|
1785
|
+
# description: Historical balance entries grouped under a single account source.
|
|
1786
|
+
# properties:
|
|
1787
|
+
# source:
|
|
1788
|
+
# description: >
|
|
1789
|
+
# Identifies the account this balance entry belongs to. The shape varies by
|
|
1790
|
+
# `source.type`. Use `source.type` to determine which account id field is present.
|
|
1791
|
+
# oneOf:
|
|
1792
|
+
# - $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1793
|
+
# - $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
1794
|
+
# - $ref: "#/components/schemas/balanceHistorySourceCryptoManual"
|
|
1795
|
+
# - $ref: "#/components/schemas/balanceHistorySourceCryptoSynced"
|
|
1796
|
+
# - $ref: "#/components/schemas/balanceHistorySourceDeleted"
|
|
1797
|
+
# discriminator:
|
|
1798
|
+
# propertyName: type
|
|
1799
|
+
# mapping:
|
|
1800
|
+
# manual: "#/components/schemas/balanceHistorySourceManual"
|
|
1801
|
+
# plaid: "#/components/schemas/balanceHistorySourcePlaid"
|
|
1802
|
+
# crypto_manual: "#/components/schemas/balanceHistorySourceCryptoManual"
|
|
1803
|
+
# crypto_synced: "#/components/schemas/balanceHistorySourceCryptoSynced"
|
|
1804
|
+
# deleted: "#/components/schemas/balanceHistorySourceDeleted"
|
|
1805
|
+
# balances:
|
|
1806
|
+
# type: array
|
|
1807
|
+
# description: >
|
|
1808
|
+
# Monthly balance history entries for the source account. On GET responses,
|
|
1809
|
+
# this includes all entries in the requested range. On PUT upsert responses,
|
|
1810
|
+
# this includes only the entries modified by that request.
|
|
1811
|
+
# items:
|
|
1812
|
+
# $ref: "#/components/schemas/balanceHistoryObject"
|
|
1813
|
+
# required:
|
|
1814
|
+
# - source
|
|
1815
|
+
# - balances
|
|
1816
|
+
#
|
|
1817
|
+
# balanceHistoryObject:
|
|
1818
|
+
# type: object
|
|
1819
|
+
# title: balance history entry object
|
|
1820
|
+
# additionalProperties: false
|
|
1821
|
+
# x-internal: true
|
|
1822
|
+
# description: A historical balance entry for a single account on a single date.
|
|
1823
|
+
# properties:
|
|
1824
|
+
# id:
|
|
1825
|
+
# type: integer
|
|
1826
|
+
# format: int32
|
|
1827
|
+
# description: Unique identifier of this historical balance entry.
|
|
1828
|
+
# date:
|
|
1829
|
+
# type: string
|
|
1830
|
+
# format: date
|
|
1831
|
+
# description: Date of this historical balance entry in YYYY-MM-DD format. This is always the first day of a month.
|
|
1832
|
+
# balance:
|
|
1833
|
+
# type: string
|
|
1834
|
+
# pattern: ^-?\d+(\.\d{1,4})?$
|
|
1835
|
+
# description: Historical balance stored 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.
|
|
1836
|
+
# currency:
|
|
1837
|
+
# allOf:
|
|
1838
|
+
# - $ref: "#/components/schemas/currencyEnum"
|
|
1839
|
+
# description: Currency of the stored `balance`. For crypto entries this is the user's primary currency.
|
|
1840
|
+
# to_base:
|
|
1841
|
+
# type: number
|
|
1842
|
+
# format: double
|
|
1843
|
+
# description: Historical 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`.
|
|
1844
|
+
# crypto_balance:
|
|
1845
|
+
# type: string
|
|
1846
|
+
# nullable: true
|
|
1847
|
+
# pattern: ^-?\d+(\.\d{1,18})?$
|
|
1848
|
+
# description: Crypto quantity stored for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1849
|
+
# required:
|
|
1850
|
+
# - id
|
|
1851
|
+
# - date
|
|
1852
|
+
# - balance
|
|
1853
|
+
# - currency
|
|
1854
|
+
# - to_base
|
|
1855
|
+
# - crypto_balance
|
|
1856
|
+
#
|
|
1857
|
+
# balanceHistoryListResponseObject:
|
|
1858
|
+
# type: object
|
|
1859
|
+
# additionalProperties: false
|
|
1860
|
+
# x-internal: true
|
|
1861
|
+
# properties:
|
|
1862
|
+
# balance_history:
|
|
1863
|
+
# type: array
|
|
1864
|
+
# items:
|
|
1865
|
+
# $ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
1866
|
+
# required:
|
|
1867
|
+
# - balance_history
|
|
1868
|
+
#
|
|
1869
|
+
# balanceHistoryUpdateItemObject:
|
|
1870
|
+
# type: object
|
|
1871
|
+
# x-internal: true
|
|
1872
|
+
# additionalProperties: false
|
|
1873
|
+
# properties:
|
|
1874
|
+
# id:
|
|
1875
|
+
# type: integer
|
|
1876
|
+
# format: int32
|
|
1877
|
+
# description: System-defined balance history entry id. Ignored if set.
|
|
1878
|
+
# x-updatable: false
|
|
1879
|
+
# date:
|
|
1880
|
+
# type: string
|
|
1881
|
+
# format: date
|
|
1882
|
+
# description: Month to update, in YYYY-MM-DD format. This must be the first day of a month and must be in a past month.
|
|
1883
|
+
# balance:
|
|
1884
|
+
# oneOf:
|
|
1885
|
+
# - type: number
|
|
1886
|
+
# format: double
|
|
1887
|
+
# - type: string
|
|
1888
|
+
# pattern: ^-?\d+(\.\d{1,4})?$
|
|
1889
|
+
# description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is typically in the account currency. For crypto and deleted accounts this is typically in the user's primary currency. Do not include any special characters aside from a decimal point.
|
|
1890
|
+
# symbol:
|
|
1891
|
+
# type: string
|
|
1892
|
+
# nullable: true
|
|
1893
|
+
# minLength: 1
|
|
1894
|
+
# maxLength: 25
|
|
1895
|
+
# description: Optional for crypto balances, but if set it must match the account's symbol.
|
|
1896
|
+
# Tolerated for deleted-account balances. Do not provide this for manual or Plaid balances.
|
|
1897
|
+
# If provided when using the synced crypto path-based endpoint, this must match the symbol in the path.
|
|
1898
|
+
# x-updatable: true
|
|
1899
|
+
# crypto_balance:
|
|
1900
|
+
# type: string
|
|
1901
|
+
# nullable: true
|
|
1902
|
+
# pattern: ^-?\d+(\.\d{1,18})?$
|
|
1903
|
+
# description: Optional crypto quantity for crypto_manual, crypto_synced, and deleted balances. Do not provide this for manual or Plaid balances.
|
|
1904
|
+
# x-updatable: true
|
|
1905
|
+
# currency:
|
|
1906
|
+
# allOf:
|
|
1907
|
+
# - $ref: "#/components/schemas/currencyEnum"
|
|
1908
|
+
# description: Optional currency for this balance entry. If omitted, it defaults to the account currency for manual/Plaid accounts, or the user's primary currency for crypto/deleted accounts.
|
|
1909
|
+
# x-updatable: true
|
|
1910
|
+
# to_base:
|
|
1911
|
+
# type: number
|
|
1912
|
+
# format: double
|
|
1913
|
+
# description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the stored historical balance.
|
|
1914
|
+
# x-updatable: false
|
|
1915
|
+
# required:
|
|
1916
|
+
# - date
|
|
1917
|
+
# - balance
|
|
1918
|
+
#
|
|
1919
|
+
# upsertBalanceHistoryRequestObject:
|
|
1920
|
+
# type: object
|
|
1921
|
+
# x-internal: true
|
|
1922
|
+
# additionalProperties: false
|
|
1923
|
+
# properties:
|
|
1924
|
+
# balances:
|
|
1925
|
+
# type: array
|
|
1926
|
+
# minItems: 1
|
|
1927
|
+
# description: One or more monthly balance history entries to upsert
|
|
1928
|
+
# items:
|
|
1929
|
+
# $ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1930
|
+
# required:
|
|
1931
|
+
# - balances
|
|
1932
|
+
#
|
|
1933
|
+
# updateBalanceHistoryDetailsRequestObject:
|
|
1934
|
+
# type: object
|
|
1935
|
+
# x-internal: true
|
|
1936
|
+
# additionalProperties: false
|
|
1937
|
+
# minProperties: 1
|
|
1938
|
+
# properties:
|
|
1939
|
+
# name:
|
|
1940
|
+
# type: string
|
|
1941
|
+
# nullable: true
|
|
1942
|
+
# description: New archived account name for the deleted account source.
|
|
1943
|
+
# institution_name:
|
|
1944
|
+
# type: string
|
|
1945
|
+
# nullable: true
|
|
1946
|
+
# description: New archived institution name for the deleted account source.
|
|
1947
|
+
# display_name:
|
|
1948
|
+
# type: string
|
|
1949
|
+
# nullable: true
|
|
1950
|
+
# description: New display name for the deleted account source.
|
|
1951
|
+
# account_type:
|
|
1952
|
+
# type: string
|
|
1953
|
+
# nullable: true
|
|
1954
|
+
# description: New archived account type for the deleted account source.
|
|
1955
|
+
# subtype:
|
|
1956
|
+
# type: string
|
|
1957
|
+
# nullable: true
|
|
1958
|
+
# description: New archived subtype for the deleted account source.
|
|
1959
|
+
# mask:
|
|
1960
|
+
# type: string
|
|
1961
|
+
# nullable: true
|
|
1962
|
+
# description: New archived account mask for the deleted account source.
|
|
1963
|
+
#
|
|
1964
|
+
# updateBalanceHistoryDetailsResponseObject:
|
|
1965
|
+
# type: object
|
|
1966
|
+
# x-internal: true
|
|
1967
|
+
# additionalProperties: false
|
|
1968
|
+
# properties:
|
|
1969
|
+
# name:
|
|
1970
|
+
# type: string
|
|
1971
|
+
# nullable: true
|
|
1972
|
+
# institution_name:
|
|
1973
|
+
# type: string
|
|
1974
|
+
# nullable: true
|
|
1975
|
+
# display_name:
|
|
1976
|
+
# type: string
|
|
1977
|
+
# nullable: true
|
|
1978
|
+
# account_type:
|
|
1979
|
+
# type: string
|
|
1980
|
+
# nullable: true
|
|
1981
|
+
# subtype:
|
|
1982
|
+
# type: string
|
|
1983
|
+
# nullable: true
|
|
1984
|
+
# mask:
|
|
1985
|
+
# type: string
|
|
1986
|
+
# nullable: true
|
|
1987
|
+
# required:
|
|
1988
|
+
# - name
|
|
1989
|
+
# - institution_name
|
|
1990
|
+
# - display_name
|
|
1991
|
+
# - account_type
|
|
1992
|
+
# - subtype
|
|
1993
|
+
# - mask
|
|
1994
|
+
#
|
|
1995
1995
|
# The object containing information about a recurring item
|
|
1996
1996
|
recurringObject:
|
|
1997
1997
|
type: object
|
|
@@ -6499,977 +6499,977 @@ paths:
|
|
|
6499
6499
|
$ref: "#/components/responses/rateLimited"
|
|
6500
6500
|
"500":
|
|
6501
6501
|
$ref: "#/components/responses/serverError"
|
|
6502
|
-
/balance_history:
|
|
6503
|
-
get:
|
|
6504
|
-
tags:
|
|
6505
|
-
- balance_history
|
|
6506
|
-
summary: Get balance history
|
|
6507
|
-
description: |-
|
|
6508
|
-
Retrieve historical balance entries.<br><br>
|
|
6509
|
-
Balance history is monthly. When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available balance history is returned.<br><br>
|
|
6510
|
-
The response groups entries by source account. Each item in `balance_history` contains a `source` object plus a `balances` array containing one balance entry per month in the requested range, or all stored entries when no range is provided.<br><br>
|
|
6511
|
-
Historical entries for accounts that have been deleted may still be returned. These entries use `source.type: deleted` and include `deleted_account_id`, archived display fields, and account metadata on the `source` object.
|
|
6512
|
-
operationId: getBalanceHistory
|
|
6513
|
-
parameters:
|
|
6514
|
-
- name: start_date
|
|
6515
|
-
in: query
|
|
6516
|
-
description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
6517
|
-
required: false
|
|
6518
|
-
schema:
|
|
6519
|
-
type: string
|
|
6520
|
-
format: date
|
|
6521
|
-
examples:
|
|
6522
|
-
range start:
|
|
6523
|
-
summary: Start date
|
|
6524
|
-
value: "2026-01-01"
|
|
6525
|
-
- name: end_date
|
|
6526
|
-
in: query
|
|
6527
|
-
description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month. For a single month, set this to the same first-of-month date as `start_date`.
|
|
6528
|
-
required: false
|
|
6529
|
-
schema:
|
|
6530
|
-
type: string
|
|
6531
|
-
format: date
|
|
6532
|
-
examples:
|
|
6533
|
-
range end:
|
|
6534
|
-
summary: End date
|
|
6535
|
-
value: "2026-03-01"
|
|
6536
|
-
responses:
|
|
6537
|
-
"200":
|
|
6538
|
-
description: Historical balance entries for the requested date range
|
|
6539
|
-
content:
|
|
6540
|
-
application/json:
|
|
6541
|
-
schema:
|
|
6542
|
-
$ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
6543
|
-
examples:
|
|
6544
|
-
all account types:
|
|
6545
|
-
value:
|
|
6546
|
-
balance_history:
|
|
6547
|
-
- source:
|
|
6548
|
-
type: manual
|
|
6549
|
-
manual_account_id: 119807
|
|
6550
|
-
balances:
|
|
6551
|
-
- id: 101
|
|
6552
|
-
date: "2026-01-01"
|
|
6553
|
-
balance: "41000.0000"
|
|
6554
|
-
currency: usd
|
|
6555
|
-
to_base: 41000
|
|
6556
|
-
crypto_balance: null
|
|
6557
|
-
- id: 102
|
|
6558
|
-
date: "2026-02-01"
|
|
6559
|
-
balance: "41211.8000"
|
|
6560
|
-
currency: usd
|
|
6561
|
-
to_base: 41211.8
|
|
6562
|
-
crypto_balance: null
|
|
6563
|
-
- source:
|
|
6564
|
-
type: plaid
|
|
6565
|
-
plaid_account_id: 119808
|
|
6566
|
-
balances:
|
|
6567
|
-
- id: 103
|
|
6568
|
-
date: "2026-01-01"
|
|
6569
|
-
balance: "5498.2800"
|
|
6570
|
-
currency: usd
|
|
6571
|
-
to_base: 5498.28
|
|
6572
|
-
crypto_balance: null
|
|
6573
|
-
- source:
|
|
6574
|
-
type: crypto_manual
|
|
6575
|
-
crypto_manual_id: 22001
|
|
6576
|
-
symbol: btc
|
|
6577
|
-
balances:
|
|
6578
|
-
- id: 104
|
|
6579
|
-
date: "2026-01-01"
|
|
6580
|
-
balance: "53124.7200"
|
|
6581
|
-
currency: usd
|
|
6582
|
-
to_base: 53124.72
|
|
6583
|
-
crypto_balance: "0.852341920145782301"
|
|
6584
|
-
- source:
|
|
6585
|
-
type: crypto_synced
|
|
6586
|
-
crypto_synced_id: 33004
|
|
6587
|
-
symbol: btc
|
|
6588
|
-
balances:
|
|
6589
|
-
- id: 105
|
|
6590
|
-
date: "2026-01-01"
|
|
6591
|
-
balance: "6231.2800"
|
|
6592
|
-
currency: usd
|
|
6593
|
-
to_base: 6231.28
|
|
6594
|
-
crypto_balance: "0.100020003000400050"
|
|
6595
|
-
- source:
|
|
6596
|
-
type: deleted
|
|
6597
|
-
deleted_account_id: 91
|
|
6598
|
-
name: Savings
|
|
6599
|
-
institution_name: Old Bank
|
|
6600
|
-
display_name: Closed Savings
|
|
6601
|
-
account_type: savings
|
|
6602
|
-
subtype: savings
|
|
6603
|
-
mask: "1234"
|
|
6604
|
-
symbol: null
|
|
6605
|
-
balances:
|
|
6606
|
-
- id: 106
|
|
6607
|
-
date: "2026-01-01"
|
|
6608
|
-
balance: "1250.0000"
|
|
6609
|
-
currency: usd
|
|
6610
|
-
to_base: 1250
|
|
6611
|
-
crypto_balance: null
|
|
6612
|
-
manual account history:
|
|
6613
|
-
value:
|
|
6614
|
-
balance_history:
|
|
6615
|
-
- source:
|
|
6616
|
-
type: manual
|
|
6617
|
-
manual_account_id: 119807
|
|
6618
|
-
balances:
|
|
6619
|
-
- id: 201
|
|
6620
|
-
date: "2026-01-01"
|
|
6621
|
-
balance: "41000.0000"
|
|
6622
|
-
currency: usd
|
|
6623
|
-
to_base: 41000
|
|
6624
|
-
crypto_balance: null
|
|
6625
|
-
- id: 202
|
|
6626
|
-
date: "2026-02-01"
|
|
6627
|
-
balance: "41211.8000"
|
|
6628
|
-
currency: usd
|
|
6629
|
-
to_base: 41211.8
|
|
6630
|
-
crypto_balance: null
|
|
6631
|
-
plaid account history:
|
|
6632
|
-
value:
|
|
6633
|
-
balance_history:
|
|
6634
|
-
- source:
|
|
6635
|
-
type: plaid
|
|
6636
|
-
plaid_account_id: 119808
|
|
6637
|
-
balances:
|
|
6638
|
-
- id: 301
|
|
6639
|
-
date: "2026-02-01"
|
|
6640
|
-
balance: "5498.2800"
|
|
6641
|
-
currency: usd
|
|
6642
|
-
to_base: 5498.28
|
|
6643
|
-
crypto_balance: null
|
|
6644
|
-
synced crypto history:
|
|
6645
|
-
value:
|
|
6646
|
-
balance_history:
|
|
6647
|
-
- source:
|
|
6648
|
-
type: crypto_synced
|
|
6649
|
-
crypto_synced_id: 33004
|
|
6650
|
-
symbol: btc
|
|
6651
|
-
balances:
|
|
6652
|
-
- id: 401
|
|
6653
|
-
date: "2026-02-01"
|
|
6654
|
-
balance: "6231.2800"
|
|
6655
|
-
currency: usd
|
|
6656
|
-
to_base: 6231.28
|
|
6657
|
-
crypto_balance: "0.100020003000400050"
|
|
6658
|
-
deleted account history:
|
|
6659
|
-
value:
|
|
6660
|
-
balance_history:
|
|
6661
|
-
- source:
|
|
6662
|
-
type: deleted
|
|
6663
|
-
deleted_account_id: 91
|
|
6664
|
-
name: Savings
|
|
6665
|
-
institution_name: Old Bank
|
|
6666
|
-
display_name: Closed Savings
|
|
6667
|
-
account_type: savings
|
|
6668
|
-
subtype: savings
|
|
6669
|
-
mask: "1234"
|
|
6670
|
-
symbol: null
|
|
6671
|
-
balances:
|
|
6672
|
-
- id: 501
|
|
6673
|
-
date: "2026-01-01"
|
|
6674
|
-
balance: "1250.0000"
|
|
6675
|
-
currency: usd
|
|
6676
|
-
to_base: 1250
|
|
6677
|
-
crypto_balance: null
|
|
6678
|
-
"400":
|
|
6679
|
-
description: Bad Request
|
|
6680
|
-
content:
|
|
6681
|
-
application/json:
|
|
6682
|
-
schema:
|
|
6683
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
6684
|
-
examples:
|
|
6685
|
-
missing paired date:
|
|
6686
|
-
value:
|
|
6687
|
-
message: Request Validation Failure
|
|
6688
|
-
errors:
|
|
6689
|
-
- errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
6690
|
-
invalid range:
|
|
6691
|
-
value:
|
|
6692
|
-
message: Request Validation Failure
|
|
6693
|
-
errors:
|
|
6694
|
-
- errMsg: "`start_date` must be before or equal to `end_date`."
|
|
6695
|
-
not first of month:
|
|
6696
|
-
value:
|
|
6697
|
-
message: Request Validation Failure
|
|
6698
|
-
errors:
|
|
6699
|
-
- errMsg: "`start_date` and `end_date` must both be the first day of a month."
|
|
6700
|
-
future start date:
|
|
6701
|
-
value:
|
|
6702
|
-
message: Request Validation Failure
|
|
6703
|
-
errors:
|
|
6704
|
-
- errMsg: "`start_date` must not be in the future."
|
|
6705
|
-
"401":
|
|
6706
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
6707
|
-
"429":
|
|
6708
|
-
$ref: "#/components/responses/rateLimited"
|
|
6709
|
-
"500":
|
|
6710
|
-
$ref: "#/components/responses/serverError"
|
|
6711
|
-
/balance_history/{account_type}/{account_id}:
|
|
6712
|
-
get:
|
|
6713
|
-
tags:
|
|
6714
|
-
- balance_history
|
|
6715
|
-
summary: Get balance history for an account
|
|
6716
|
-
description: |-
|
|
6717
|
-
Retrieve historical balance entries for one manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
|
|
6718
|
-
The `account_type` path parameter identifies the type of account and the `account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6719
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available history for the source is returned.
|
|
6720
|
-
operationId: getBalanceHistoryForAccount
|
|
6721
|
-
parameters:
|
|
6722
|
-
- name: account_type
|
|
6723
|
-
in: path
|
|
6724
|
-
required: true
|
|
6725
|
-
description: Source family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6726
|
-
schema:
|
|
6727
|
-
type: string
|
|
6728
|
-
enum: [manual, plaid, crypto_manual, deleted]
|
|
6729
|
-
- name: account_id
|
|
6730
|
-
in: path
|
|
6731
|
-
required: true
|
|
6732
|
-
description: Account or deleted-source identifier within the selected `account_type`.
|
|
6733
|
-
schema:
|
|
6734
|
-
type: integer
|
|
6735
|
-
format: int32
|
|
6736
|
-
- name: start_date
|
|
6737
|
-
in: query
|
|
6738
|
-
description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
6739
|
-
required: false
|
|
6740
|
-
schema:
|
|
6741
|
-
type: string
|
|
6742
|
-
format: date
|
|
6743
|
-
- name: end_date
|
|
6744
|
-
in: query
|
|
6745
|
-
description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
|
|
6746
|
-
required: false
|
|
6747
|
-
schema:
|
|
6748
|
-
type: string
|
|
6749
|
-
format: date
|
|
6750
|
-
responses:
|
|
6751
|
-
"200":
|
|
6752
|
-
description: Historical balance entries for the requested source
|
|
6753
|
-
content:
|
|
6754
|
-
application/json:
|
|
6755
|
-
schema:
|
|
6756
|
-
$ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
6757
|
-
examples:
|
|
6758
|
-
manual account history:
|
|
6759
|
-
value:
|
|
6760
|
-
balance_history:
|
|
6761
|
-
- source:
|
|
6762
|
-
type: manual
|
|
6763
|
-
manual_account_id: 119807
|
|
6764
|
-
balances:
|
|
6765
|
-
- id: 201
|
|
6766
|
-
date: "2026-01-01"
|
|
6767
|
-
balance: "41000.0000"
|
|
6768
|
-
currency: usd
|
|
6769
|
-
to_base: 41000
|
|
6770
|
-
crypto_balance: null
|
|
6771
|
-
- id: 202
|
|
6772
|
-
date: "2026-02-01"
|
|
6773
|
-
balance: "41211.8000"
|
|
6774
|
-
currency: usd
|
|
6775
|
-
to_base: 41211.8
|
|
6776
|
-
crypto_balance: null
|
|
6777
|
-
deleted account history:
|
|
6778
|
-
value:
|
|
6779
|
-
balance_history:
|
|
6780
|
-
- source:
|
|
6781
|
-
type: deleted
|
|
6782
|
-
deleted_account_id: 91
|
|
6783
|
-
name: Savings
|
|
6784
|
-
institution_name: Old Bank
|
|
6785
|
-
display_name: Closed Savings
|
|
6786
|
-
account_type: savings
|
|
6787
|
-
subtype: savings
|
|
6788
|
-
mask: "1234"
|
|
6789
|
-
symbol: null
|
|
6790
|
-
balances:
|
|
6791
|
-
- id: 501
|
|
6792
|
-
date: "2026-01-01"
|
|
6793
|
-
balance: "1250.0000"
|
|
6794
|
-
currency: usd
|
|
6795
|
-
to_base: 1250
|
|
6796
|
-
crypto_balance: null
|
|
6797
|
-
"400":
|
|
6798
|
-
description: Bad Request
|
|
6799
|
-
content:
|
|
6800
|
-
application/json:
|
|
6801
|
-
schema:
|
|
6802
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
6803
|
-
examples:
|
|
6804
|
-
missing paired date:
|
|
6805
|
-
value:
|
|
6806
|
-
message: Request Validation Failure
|
|
6807
|
-
errors:
|
|
6808
|
-
- errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
6809
|
-
invalid range:
|
|
6810
|
-
value:
|
|
6811
|
-
message: Request Validation Failure
|
|
6812
|
-
errors:
|
|
6813
|
-
- errMsg: "`start_date` must be before or equal to `end_date`."
|
|
6814
|
-
"401":
|
|
6815
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
6816
|
-
"404":
|
|
6817
|
-
description: Not Found
|
|
6818
|
-
content:
|
|
6819
|
-
application/json:
|
|
6820
|
-
schema:
|
|
6821
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
6822
|
-
examples:
|
|
6823
|
-
manual not found:
|
|
6824
|
-
value:
|
|
6825
|
-
message: Not Found
|
|
6826
|
-
errors:
|
|
6827
|
-
- errMsg: "There is no manual account with the id: 99999999."
|
|
6828
|
-
deleted not found:
|
|
6829
|
-
value:
|
|
6830
|
-
message: Not Found
|
|
6831
|
-
errors:
|
|
6832
|
-
- errMsg: "Deleted balance history source 99999999 was not found."
|
|
6833
|
-
"429":
|
|
6834
|
-
$ref: "#/components/responses/rateLimited"
|
|
6835
|
-
"500":
|
|
6836
|
-
$ref: "#/components/responses/serverError"
|
|
6837
|
-
put:
|
|
6838
|
-
tags:
|
|
6839
|
-
- balance_history
|
|
6840
|
-
summary: Upsert balance history for an account
|
|
6841
|
-
description: |-
|
|
6842
|
-
Upsert one or more historical balance entries for a single manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
|
|
6843
|
-
The `account_type` path parameter identifies the type of account and the `account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6844
|
-
Submit one or more entries in the `balances` array. Each entry must specify a `date` and `balance` value.<br><br>
|
|
6845
|
-
Balance history is monthly. Each entry's `date` must be the first day of a month and must be in a past month.<br><br>
|
|
6846
|
-
`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>
|
|
6847
|
-
`symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`. It is optional for `crypto_manual` accounts and tolerated for `deleted` accounts.<br><br>
|
|
6848
|
-
`crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and `deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
6849
|
-
The response contains only the balance entries that were submitted in this request.
|
|
6850
|
-
operationId: upsertBalanceHistoryForAccount
|
|
6851
|
-
parameters:
|
|
6852
|
-
- name: account_type
|
|
6853
|
-
in: path
|
|
6854
|
-
required: true
|
|
6855
|
-
description: Source family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6856
|
-
schema:
|
|
6857
|
-
type: string
|
|
6858
|
-
enum: [manual, plaid, crypto_manual, deleted]
|
|
6859
|
-
- name: account_id
|
|
6860
|
-
in: path
|
|
6861
|
-
required: true
|
|
6862
|
-
description: Account or deleted-source identifier within the selected `account_type`.
|
|
6863
|
-
schema:
|
|
6864
|
-
type: integer
|
|
6865
|
-
format: int32
|
|
6866
|
-
requestBody:
|
|
6867
|
-
required: true
|
|
6868
|
-
content:
|
|
6869
|
-
application/json:
|
|
6870
|
-
schema:
|
|
6871
|
-
$ref: "#/components/schemas/upsertBalanceHistoryRequestObject"
|
|
6872
|
-
examples:
|
|
6873
|
-
manual account bulk upsert:
|
|
6874
|
-
value:
|
|
6875
|
-
balances:
|
|
6876
|
-
- date: "2026-03-01"
|
|
6877
|
-
balance: "41500.0000"
|
|
6878
|
-
- date: "2026-04-01"
|
|
6879
|
-
balance: "41625.5000"
|
|
6880
|
-
crypto manual balance with symbol:
|
|
6881
|
-
value:
|
|
6882
|
-
balances:
|
|
6883
|
-
- date: "2026-03-01"
|
|
6884
|
-
balance: "56011.1200"
|
|
6885
|
-
symbol: btc
|
|
6886
|
-
crypto_balance: "0.852341920145782301"
|
|
6887
|
-
deleted account bulk upsert:
|
|
6888
|
-
value:
|
|
6889
|
-
balances:
|
|
6890
|
-
- date: "2026-03-01"
|
|
6891
|
-
symbol: btc
|
|
6892
|
-
crypto_balance: "0.020000000000000000"
|
|
6893
|
-
currency: usd
|
|
6894
|
-
balance: "1255"
|
|
6895
|
-
get-shaped balance entry input:
|
|
6896
|
-
value:
|
|
6897
|
-
balances:
|
|
6898
|
-
- id: 601
|
|
6899
|
-
date: "2026-03-01"
|
|
6900
|
-
balance: "41500.0000"
|
|
6901
|
-
currency: usd
|
|
6902
|
-
to_base: 41500
|
|
6903
|
-
crypto_balance: null
|
|
6904
|
-
responses:
|
|
6905
|
-
"200":
|
|
6906
|
-
description: Returns the modified balance entries only. Other historical
|
|
6907
|
-
entries for the account are omitted from `balances`.
|
|
6908
|
-
content:
|
|
6909
|
-
application/json:
|
|
6910
|
-
schema:
|
|
6911
|
-
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
6912
|
-
examples:
|
|
6913
|
-
manual account bulk upsert:
|
|
6914
|
-
summary: Two upserted rows returned (not full account history)
|
|
6915
|
-
value:
|
|
6916
|
-
source:
|
|
6917
|
-
type: manual
|
|
6918
|
-
manual_account_id: 119807
|
|
6919
|
-
balances:
|
|
6920
|
-
- id: 601
|
|
6921
|
-
date: "2026-03-01"
|
|
6922
|
-
balance: "41500.0000"
|
|
6923
|
-
currency: usd
|
|
6924
|
-
to_base: 41500
|
|
6925
|
-
crypto_balance: null
|
|
6926
|
-
- id: 602
|
|
6927
|
-
date: "2026-04-01"
|
|
6928
|
-
balance: "41625.5000"
|
|
6929
|
-
currency: usd
|
|
6930
|
-
to_base: 41625.5
|
|
6931
|
-
crypto_balance: null
|
|
6932
|
-
crypto manual balance with symbol:
|
|
6933
|
-
summary: Single upserted row returned
|
|
6934
|
-
value:
|
|
6935
|
-
source:
|
|
6936
|
-
type: crypto_manual
|
|
6937
|
-
crypto_manual_id: 22001
|
|
6938
|
-
symbol: btc
|
|
6939
|
-
balances:
|
|
6940
|
-
- id: 603
|
|
6941
|
-
date: "2026-03-01"
|
|
6942
|
-
balance: "56011.1200"
|
|
6943
|
-
currency: usd
|
|
6944
|
-
to_base: 56011.12
|
|
6945
|
-
crypto_balance: "0.852341920145782301"
|
|
6946
|
-
deleted account bulk upsert:
|
|
6947
|
-
summary: Single upserted row returned
|
|
6948
|
-
value:
|
|
6949
|
-
source:
|
|
6950
|
-
type: deleted
|
|
6951
|
-
deleted_account_id: 91
|
|
6952
|
-
name: Savings
|
|
6953
|
-
institution_name: Old Bank
|
|
6954
|
-
display_name: Closed Savings
|
|
6955
|
-
account_type: savings
|
|
6956
|
-
subtype: savings
|
|
6957
|
-
mask: "1234"
|
|
6958
|
-
symbol: btc
|
|
6959
|
-
balances:
|
|
6960
|
-
- id: 504
|
|
6961
|
-
date: "2026-03-01"
|
|
6962
|
-
balance: "1255"
|
|
6963
|
-
currency: usd
|
|
6964
|
-
to_base: 1255
|
|
6965
|
-
crypto_balance: "0.020000000000000000"
|
|
6966
|
-
"400":
|
|
6967
|
-
description: Bad Request. The entire request is rejected if any row in
|
|
6968
|
-
`balances` fails validation; no rows are updated.
|
|
6969
|
-
content:
|
|
6970
|
-
application/json:
|
|
6971
|
-
schema:
|
|
6972
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
6973
|
-
examples:
|
|
6974
|
-
missing balances:
|
|
6975
|
-
value:
|
|
6976
|
-
message: Invalid Request Body
|
|
6977
|
-
errors:
|
|
6978
|
-
- errMsg: "Missing required property 'balances' in request body."
|
|
6979
|
-
empty balances array:
|
|
6980
|
-
value:
|
|
6981
|
-
message: Invalid Request Body
|
|
6982
|
-
errors:
|
|
6983
|
-
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
6984
|
-
invalid property:
|
|
6985
|
-
value:
|
|
6986
|
-
message: Invalid Request Body
|
|
6987
|
-
errors:
|
|
6988
|
-
- errMsg: "Invalid property 'foo' in request body."
|
|
6989
|
-
invalid date:
|
|
6990
|
-
value:
|
|
6991
|
-
message: Request Validation Failure
|
|
6992
|
-
errors:
|
|
6993
|
-
- errMsg: "`date` must be the first day of a month."
|
|
6994
|
-
request_balances_index: 0
|
|
6995
|
-
code: VALIDATION_ERROR
|
|
6996
|
-
future date:
|
|
6997
|
-
value:
|
|
6998
|
-
message: Request Validation Failure
|
|
6999
|
-
errors:
|
|
7000
|
-
- errMsg: "`date` must be in a past month."
|
|
7001
|
-
request_balances_index: 1
|
|
7002
|
-
crypto balance not allowed:
|
|
7003
|
-
value:
|
|
7004
|
-
message: Request Validation Failure
|
|
7005
|
-
errors:
|
|
7006
|
-
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual`, `crypto_synced`, or `deleted`."
|
|
7007
|
-
request_balances_index: 0
|
|
7008
|
-
invalid row in bulk request:
|
|
7009
|
-
value:
|
|
7010
|
-
message: Request Validation Failure
|
|
7011
|
-
errors:
|
|
7012
|
-
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`."
|
|
7013
|
-
request_balances_index: 1
|
|
7014
|
-
"401":
|
|
7015
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7016
|
-
"404":
|
|
7017
|
-
description: Not Found
|
|
7018
|
-
content:
|
|
7019
|
-
application/json:
|
|
7020
|
-
schema:
|
|
7021
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7022
|
-
example:
|
|
7023
|
-
message: Not Found
|
|
7024
|
-
errors:
|
|
7025
|
-
- errMsg: "There is no manual account with the id: 99999999."
|
|
7026
|
-
"429":
|
|
7027
|
-
$ref: "#/components/responses/rateLimited"
|
|
7028
|
-
"500":
|
|
7029
|
-
$ref: "#/components/responses/serverError"
|
|
7030
|
-
delete:
|
|
7031
|
-
tags:
|
|
7032
|
-
- balance_history
|
|
7033
|
-
summary: Delete all balance history for an account
|
|
7034
|
-
description: |-
|
|
7035
|
-
Delete all historical balance entries for a single manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
7036
|
-
operationId: deleteBalanceHistoryForAccount
|
|
7037
|
-
parameters:
|
|
7038
|
-
- name: account_type
|
|
7039
|
-
in: path
|
|
7040
|
-
required: true
|
|
7041
|
-
description: Source family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7042
|
-
schema:
|
|
7043
|
-
type: string
|
|
7044
|
-
enum: [manual, plaid, crypto_manual, deleted]
|
|
7045
|
-
- name: account_id
|
|
7046
|
-
in: path
|
|
7047
|
-
required: true
|
|
7048
|
-
description: Account or deleted-source identifier within the selected `account_type`.
|
|
7049
|
-
schema:
|
|
7050
|
-
type: integer
|
|
7051
|
-
format: int32
|
|
7052
|
-
responses:
|
|
7053
|
-
"204":
|
|
7054
|
-
description: All history for the account/source was deleted
|
|
7055
|
-
"401":
|
|
7056
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7057
|
-
"404":
|
|
7058
|
-
description: Not Found
|
|
7059
|
-
content:
|
|
7060
|
-
application/json:
|
|
7061
|
-
schema:
|
|
7062
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7063
|
-
examples:
|
|
7064
|
-
source not found:
|
|
7065
|
-
value:
|
|
7066
|
-
message: Not Found
|
|
7067
|
-
errors:
|
|
7068
|
-
- errMsg: "There is no manual account with the id: 99999999."
|
|
7069
|
-
"429":
|
|
7070
|
-
$ref: "#/components/responses/rateLimited"
|
|
7071
|
-
"500":
|
|
7072
|
-
$ref: "#/components/responses/serverError"
|
|
7073
|
-
/balance_history/crypto_synced/{account_id}/{symbol}:
|
|
7074
|
-
get:
|
|
7075
|
-
tags:
|
|
7076
|
-
- balance_history
|
|
7077
|
-
summary: Get balance history for a synced crypto symbol
|
|
7078
|
-
description: |-
|
|
7079
|
-
Retrieve historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7080
|
-
Use the `crypto_synced` account id together with a `symbol` path parameter to select one balance stream within that synced crypto account.<br><br>
|
|
7081
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available history for the symbol stream is returned.
|
|
7082
|
-
operationId: getBalanceHistoryForCryptoSynced
|
|
7083
|
-
parameters:
|
|
7084
|
-
- name: account_id
|
|
7085
|
-
in: path
|
|
7086
|
-
required: true
|
|
7087
|
-
description: Synced crypto account identifier.
|
|
7088
|
-
schema:
|
|
7089
|
-
type: integer
|
|
7090
|
-
format: int32
|
|
7091
|
-
- name: symbol
|
|
7092
|
-
in: path
|
|
7093
|
-
required: true
|
|
7094
|
-
description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7095
|
-
schema:
|
|
7096
|
-
type: string
|
|
7097
|
-
minLength: 1
|
|
7098
|
-
maxLength: 25
|
|
7099
|
-
- name: start_date
|
|
7100
|
-
in: query
|
|
7101
|
-
description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
7102
|
-
required: false
|
|
7103
|
-
schema:
|
|
7104
|
-
type: string
|
|
7105
|
-
format: date
|
|
7106
|
-
- name: end_date
|
|
7107
|
-
in: query
|
|
7108
|
-
description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
|
|
7109
|
-
required: false
|
|
7110
|
-
schema:
|
|
7111
|
-
type: string
|
|
7112
|
-
format: date
|
|
7113
|
-
responses:
|
|
7114
|
-
"200":
|
|
7115
|
-
description: Historical balance entries for the synced crypto symbol stream
|
|
7116
|
-
content:
|
|
7117
|
-
application/json:
|
|
7118
|
-
schema:
|
|
7119
|
-
$ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
7120
|
-
example:
|
|
7121
|
-
balance_history:
|
|
7122
|
-
- source:
|
|
7123
|
-
type: crypto_synced
|
|
7124
|
-
crypto_synced_id: 33004
|
|
7125
|
-
symbol: btc
|
|
7126
|
-
balances:
|
|
7127
|
-
- id: 401
|
|
7128
|
-
date: "2026-02-01"
|
|
7129
|
-
balance: "6231.2800"
|
|
7130
|
-
currency: usd
|
|
7131
|
-
to_base: 6231.28
|
|
7132
|
-
crypto_balance: "0.100020003000400050"
|
|
7133
|
-
"400":
|
|
7134
|
-
description: Bad Request
|
|
7135
|
-
content:
|
|
7136
|
-
application/json:
|
|
7137
|
-
schema:
|
|
7138
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7139
|
-
examples:
|
|
7140
|
-
missing paired date:
|
|
7141
|
-
value:
|
|
7142
|
-
message: Request Validation Failure
|
|
7143
|
-
errors:
|
|
7144
|
-
- errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
7145
|
-
invalid range:
|
|
7146
|
-
value:
|
|
7147
|
-
message: Request Validation Failure
|
|
7148
|
-
errors:
|
|
7149
|
-
- errMsg: "`start_date` must be before or equal to `end_date`."
|
|
7150
|
-
"401":
|
|
7151
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7152
|
-
"404":
|
|
7153
|
-
description: Not Found
|
|
7154
|
-
content:
|
|
7155
|
-
application/json:
|
|
7156
|
-
schema:
|
|
7157
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7158
|
-
examples:
|
|
7159
|
-
source not found:
|
|
7160
|
-
value:
|
|
7161
|
-
message: Not Found
|
|
7162
|
-
errors:
|
|
7163
|
-
- errMsg: "There is no synced crypto account with the id: 99999999."
|
|
7164
|
-
symbol not found:
|
|
7165
|
-
value:
|
|
7166
|
-
message: Not Found
|
|
7167
|
-
errors:
|
|
7168
|
-
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7169
|
-
"429":
|
|
7170
|
-
$ref: "#/components/responses/rateLimited"
|
|
7171
|
-
"500":
|
|
7172
|
-
$ref: "#/components/responses/serverError"
|
|
7173
|
-
put:
|
|
7174
|
-
tags:
|
|
7175
|
-
- balance_history
|
|
7176
|
-
summary: Upsert balance history for a synced crypto symbol
|
|
7177
|
-
description: |-
|
|
7178
|
-
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7179
|
-
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7180
|
-
Submit one or more entries in the `balances` array. Each entry must specify a `date` and `balance` value.<br><br>
|
|
7181
|
-
Balance history is monthly. Each entry's `date` must be the first day of a month and must be in a past month.<br><br>
|
|
7182
|
-
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>
|
|
7183
|
-
`currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7184
|
-
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7185
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7186
|
-
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7187
|
-
parameters:
|
|
7188
|
-
- name: account_id
|
|
7189
|
-
in: path
|
|
7190
|
-
required: true
|
|
7191
|
-
description: Synced crypto account identifier to update.
|
|
7192
|
-
schema:
|
|
7193
|
-
type: integer
|
|
7194
|
-
format: int32
|
|
7195
|
-
- name: symbol
|
|
7196
|
-
in: path
|
|
7197
|
-
required: true
|
|
7198
|
-
description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7199
|
-
schema:
|
|
7200
|
-
type: string
|
|
7201
|
-
minLength: 1
|
|
7202
|
-
maxLength: 25
|
|
7203
|
-
requestBody:
|
|
7204
|
-
required: true
|
|
7205
|
-
content:
|
|
7206
|
-
application/json:
|
|
7207
|
-
schema:
|
|
7208
|
-
$ref: "#/components/schemas/upsertBalanceHistoryRequestObject"
|
|
7209
|
-
examples:
|
|
7210
|
-
synced crypto bulk upsert:
|
|
7211
|
-
value:
|
|
7212
|
-
balances:
|
|
7213
|
-
- date: "2026-03-01"
|
|
7214
|
-
balance: "6400.0000"
|
|
7215
|
-
crypto_balance: "0.100020003000400050"
|
|
7216
|
-
- date: "2026-04-01"
|
|
7217
|
-
balance: "6500.0000"
|
|
7218
|
-
crypto_balance: "0.100020003000400050"
|
|
7219
|
-
responses:
|
|
7220
|
-
"200":
|
|
7221
|
-
description: Returns the modified balance entries only. Other historical
|
|
7222
|
-
entries for the symbol stream are omitted from `balances`.
|
|
7223
|
-
content:
|
|
7224
|
-
application/json:
|
|
7225
|
-
schema:
|
|
7226
|
-
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7227
|
-
examples:
|
|
7228
|
-
synced crypto bulk upsert:
|
|
7229
|
-
summary: Two upserted rows returned (not full symbol history)
|
|
7230
|
-
value:
|
|
7231
|
-
source:
|
|
7232
|
-
type: crypto_synced
|
|
7233
|
-
crypto_synced_id: 33004
|
|
7234
|
-
symbol: btc
|
|
7235
|
-
balances:
|
|
7236
|
-
- id: 604
|
|
7237
|
-
date: "2026-03-01"
|
|
7238
|
-
balance: "6400.0000"
|
|
7239
|
-
currency: usd
|
|
7240
|
-
to_base: 6400
|
|
7241
|
-
crypto_balance: "0.100020003000400050"
|
|
7242
|
-
- id: 605
|
|
7243
|
-
date: "2026-04-01"
|
|
7244
|
-
balance: "6500.0000"
|
|
7245
|
-
currency: usd
|
|
7246
|
-
to_base: 6500
|
|
7247
|
-
crypto_balance: "0.100020003000400050"
|
|
7248
|
-
"400":
|
|
7249
|
-
description: Bad Request. The entire request is rejected if any row in
|
|
7250
|
-
`balances` fails validation; no rows are updated.
|
|
7251
|
-
content:
|
|
7252
|
-
application/json:
|
|
7253
|
-
schema:
|
|
7254
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7255
|
-
examples:
|
|
7256
|
-
missing balances:
|
|
7257
|
-
value:
|
|
7258
|
-
message: Invalid Request Body
|
|
7259
|
-
errors:
|
|
7260
|
-
- errMsg: "Missing required property 'balances' in request body."
|
|
7261
|
-
empty balances array:
|
|
7262
|
-
value:
|
|
7263
|
-
message: Invalid Request Body
|
|
7264
|
-
errors:
|
|
7265
|
-
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7266
|
-
invalid date:
|
|
7267
|
-
value:
|
|
7268
|
-
message: Request Validation Failure
|
|
7269
|
-
errors:
|
|
7270
|
-
- errMsg: "`date` must be the first day of a month."
|
|
7271
|
-
request_balances_index: 0
|
|
7272
|
-
future date:
|
|
7273
|
-
value:
|
|
7274
|
-
message: Request Validation Failure
|
|
7275
|
-
errors:
|
|
7276
|
-
- errMsg: "`date` must be in a past month."
|
|
7277
|
-
request_balances_index: 1
|
|
7278
|
-
symbol mismatch:
|
|
7279
|
-
value:
|
|
7280
|
-
message: Request Validation Failure
|
|
7281
|
-
errors:
|
|
7282
|
-
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7283
|
-
request_balances_index: 0
|
|
7284
|
-
invalid row in bulk request:
|
|
7285
|
-
value:
|
|
7286
|
-
message: Request Validation Failure
|
|
7287
|
-
errors:
|
|
7288
|
-
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7289
|
-
request_balances_index: 1
|
|
7290
|
-
"401":
|
|
7291
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7292
|
-
"404":
|
|
7293
|
-
description: Not Found
|
|
7294
|
-
content:
|
|
7295
|
-
application/json:
|
|
7296
|
-
schema:
|
|
7297
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7298
|
-
examples:
|
|
7299
|
-
source not found:
|
|
7300
|
-
value:
|
|
7301
|
-
message: Not Found
|
|
7302
|
-
errors:
|
|
7303
|
-
- errMsg: "There is no synced crypto account with the id: 99999999."
|
|
7304
|
-
symbol not found:
|
|
7305
|
-
value:
|
|
7306
|
-
message: Not Found
|
|
7307
|
-
errors:
|
|
7308
|
-
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7309
|
-
"429":
|
|
7310
|
-
$ref: "#/components/responses/rateLimited"
|
|
7311
|
-
"500":
|
|
7312
|
-
$ref: "#/components/responses/serverError"
|
|
7313
|
-
delete:
|
|
7314
|
-
tags:
|
|
7315
|
-
- balance_history
|
|
7316
|
-
summary: Delete all balance history for a synced crypto symbol
|
|
7317
|
-
description: |-
|
|
7318
|
-
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7319
|
-
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7320
|
-
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7321
|
-
parameters:
|
|
7322
|
-
- name: account_id
|
|
7323
|
-
in: path
|
|
7324
|
-
required: true
|
|
7325
|
-
description: Synced crypto account identifier.
|
|
7326
|
-
schema:
|
|
7327
|
-
type: integer
|
|
7328
|
-
format: int32
|
|
7329
|
-
- name: symbol
|
|
7330
|
-
in: path
|
|
7331
|
-
required: true
|
|
7332
|
-
description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7333
|
-
schema:
|
|
7334
|
-
type: string
|
|
7335
|
-
minLength: 1
|
|
7336
|
-
maxLength: 25
|
|
7337
|
-
responses:
|
|
7338
|
-
"204":
|
|
7339
|
-
description: All history for the synced crypto symbol stream was deleted
|
|
7340
|
-
"401":
|
|
7341
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7342
|
-
"404":
|
|
7343
|
-
description: Not Found
|
|
7344
|
-
content:
|
|
7345
|
-
application/json:
|
|
7346
|
-
schema:
|
|
7347
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7348
|
-
example:
|
|
7349
|
-
message: Not Found
|
|
7350
|
-
errors:
|
|
7351
|
-
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7352
|
-
"429":
|
|
7353
|
-
$ref: "#/components/responses/rateLimited"
|
|
7354
|
-
"500":
|
|
7355
|
-
$ref: "#/components/responses/serverError"
|
|
7356
|
-
/balance_history/entries/{id}:
|
|
7357
|
-
delete:
|
|
7358
|
-
tags:
|
|
7359
|
-
- balance_history
|
|
7360
|
-
summary: Delete a balance history entry
|
|
7361
|
-
description: |-
|
|
7362
|
-
Delete a single monthly balance history entry by its id.
|
|
7363
|
-
operationId: deleteBalanceHistoryEntry
|
|
7364
|
-
parameters:
|
|
7365
|
-
- name: id
|
|
7366
|
-
in: path
|
|
7367
|
-
required: true
|
|
7368
|
-
description: Balance history row identifier to delete.
|
|
7369
|
-
schema:
|
|
7370
|
-
type: integer
|
|
7371
|
-
format: int32
|
|
7372
|
-
responses:
|
|
7373
|
-
"204":
|
|
7374
|
-
description: The balance history entry was deleted
|
|
7375
|
-
"400":
|
|
7376
|
-
description: Bad Request
|
|
7377
|
-
content:
|
|
7378
|
-
application/json:
|
|
7379
|
-
schema:
|
|
7380
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7381
|
-
example:
|
|
7382
|
-
message: Request Validation Failure
|
|
7383
|
-
errors:
|
|
7384
|
-
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
7385
|
-
"401":
|
|
7386
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7387
|
-
"404":
|
|
7388
|
-
description: Not Found
|
|
7389
|
-
content:
|
|
7390
|
-
application/json:
|
|
7391
|
-
schema:
|
|
7392
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7393
|
-
example:
|
|
7394
|
-
message: Not Found
|
|
7395
|
-
errors:
|
|
7396
|
-
- errMsg: "There is no balance history entry with the id: 99999999."
|
|
7397
|
-
"429":
|
|
7398
|
-
$ref: "#/components/responses/rateLimited"
|
|
7399
|
-
"500":
|
|
7400
|
-
$ref: "#/components/responses/serverError"
|
|
7401
|
-
/balance_history/deleted/{account_id}/details:
|
|
7402
|
-
put:
|
|
7403
|
-
tags:
|
|
7404
|
-
- balance_history
|
|
7405
|
-
summary: Update details for a deleted account
|
|
7406
|
-
description: |-
|
|
7407
|
-
Update archived metadata for a deleted balance history source.<br><br>
|
|
7408
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`. This endpoint updates the stored deleted-source metadata used for all historical entries associated with that deleted source.
|
|
7409
|
-
operationId: updateBalanceHistoryDetails
|
|
7410
|
-
parameters:
|
|
7411
|
-
- name: account_id
|
|
7412
|
-
in: path
|
|
7413
|
-
required: true
|
|
7414
|
-
description: Deleted account history source identifier to update.
|
|
7415
|
-
schema:
|
|
7416
|
-
type: integer
|
|
7417
|
-
format: int32
|
|
7418
|
-
requestBody:
|
|
7419
|
-
required: true
|
|
7420
|
-
content:
|
|
7421
|
-
application/json:
|
|
7422
|
-
schema:
|
|
7423
|
-
$ref: "#/components/schemas/updateBalanceHistoryDetailsRequestObject"
|
|
7424
|
-
examples:
|
|
7425
|
-
update deleted source details:
|
|
7426
|
-
value:
|
|
7427
|
-
name: Savings
|
|
7428
|
-
institution_name: Old Bank
|
|
7429
|
-
display_name: Old Savings Account
|
|
7430
|
-
account_type: savings
|
|
7431
|
-
subtype: savings
|
|
7432
|
-
mask: "1234"
|
|
7433
|
-
responses:
|
|
7434
|
-
"200":
|
|
7435
|
-
description: Updated deleted source details
|
|
7436
|
-
content:
|
|
7437
|
-
application/json:
|
|
7438
|
-
schema:
|
|
7439
|
-
$ref: "#/components/schemas/updateBalanceHistoryDetailsResponseObject"
|
|
7440
|
-
example:
|
|
7441
|
-
name: Savings
|
|
7442
|
-
institution_name: Old Bank
|
|
7443
|
-
display_name: Old Savings Account
|
|
7444
|
-
account_type: savings
|
|
7445
|
-
subtype: savings
|
|
7446
|
-
mask: "1234"
|
|
7447
|
-
"400":
|
|
7448
|
-
description: Bad Request
|
|
7449
|
-
content:
|
|
7450
|
-
application/json:
|
|
7451
|
-
schema:
|
|
7452
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7453
|
-
example:
|
|
7454
|
-
message: Invalid Request Body
|
|
7455
|
-
errors:
|
|
7456
|
-
- errMsg: "At least one property must be provided: name, institution_name, display_name, account_type, subtype, mask."
|
|
7457
|
-
"401":
|
|
7458
|
-
$ref: "#/components/responses/unauthorizedToken"
|
|
7459
|
-
"404":
|
|
7460
|
-
description: Not Found
|
|
7461
|
-
content:
|
|
7462
|
-
application/json:
|
|
7463
|
-
schema:
|
|
7464
|
-
$ref: "#/components/schemas/errorResponseObject"
|
|
7465
|
-
example:
|
|
7466
|
-
message: Not Found
|
|
7467
|
-
errors:
|
|
7468
|
-
- errMsg: "Deleted balance history source 99999999 was not found."
|
|
7469
|
-
"429":
|
|
7470
|
-
$ref: "#/components/responses/rateLimited"
|
|
7471
|
-
"500":
|
|
7472
|
-
$ref: "#/components/responses/serverError"
|
|
6502
|
+
# /balance_history:
|
|
6503
|
+
# get:
|
|
6504
|
+
# tags:
|
|
6505
|
+
# - balance_history
|
|
6506
|
+
# summary: Get balance history
|
|
6507
|
+
# description: |-
|
|
6508
|
+
# Retrieve historical balance entries.<br><br>
|
|
6509
|
+
# Balance history is monthly. When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available balance history is returned.<br><br>
|
|
6510
|
+
# The response groups entries by source account. Each item in `balance_history` contains a `source` object plus a `balances` array containing one balance entry per month in the requested range, or all stored entries when no range is provided.<br><br>
|
|
6511
|
+
# Historical entries for accounts that have been deleted may still be returned. These entries use `source.type: deleted` and include `deleted_account_id`, archived display fields, and account metadata on the `source` object.
|
|
6512
|
+
# operationId: getBalanceHistory
|
|
6513
|
+
# parameters:
|
|
6514
|
+
# - name: start_date
|
|
6515
|
+
# in: query
|
|
6516
|
+
# description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
6517
|
+
# required: false
|
|
6518
|
+
# schema:
|
|
6519
|
+
# type: string
|
|
6520
|
+
# format: date
|
|
6521
|
+
# examples:
|
|
6522
|
+
# range start:
|
|
6523
|
+
# summary: Start date
|
|
6524
|
+
# value: "2026-01-01"
|
|
6525
|
+
# - name: end_date
|
|
6526
|
+
# in: query
|
|
6527
|
+
# description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month. For a single month, set this to the same first-of-month date as `start_date`.
|
|
6528
|
+
# required: false
|
|
6529
|
+
# schema:
|
|
6530
|
+
# type: string
|
|
6531
|
+
# format: date
|
|
6532
|
+
# examples:
|
|
6533
|
+
# range end:
|
|
6534
|
+
# summary: End date
|
|
6535
|
+
# value: "2026-03-01"
|
|
6536
|
+
# responses:
|
|
6537
|
+
# "200":
|
|
6538
|
+
# description: Historical balance entries for the requested date range
|
|
6539
|
+
# content:
|
|
6540
|
+
# application/json:
|
|
6541
|
+
# schema:
|
|
6542
|
+
# $ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
6543
|
+
# examples:
|
|
6544
|
+
# all account types:
|
|
6545
|
+
# value:
|
|
6546
|
+
# balance_history:
|
|
6547
|
+
# - source:
|
|
6548
|
+
# type: manual
|
|
6549
|
+
# manual_account_id: 119807
|
|
6550
|
+
# balances:
|
|
6551
|
+
# - id: 101
|
|
6552
|
+
# date: "2026-01-01"
|
|
6553
|
+
# balance: "41000.0000"
|
|
6554
|
+
# currency: usd
|
|
6555
|
+
# to_base: 41000
|
|
6556
|
+
# crypto_balance: null
|
|
6557
|
+
# - id: 102
|
|
6558
|
+
# date: "2026-02-01"
|
|
6559
|
+
# balance: "41211.8000"
|
|
6560
|
+
# currency: usd
|
|
6561
|
+
# to_base: 41211.8
|
|
6562
|
+
# crypto_balance: null
|
|
6563
|
+
# - source:
|
|
6564
|
+
# type: plaid
|
|
6565
|
+
# plaid_account_id: 119808
|
|
6566
|
+
# balances:
|
|
6567
|
+
# - id: 103
|
|
6568
|
+
# date: "2026-01-01"
|
|
6569
|
+
# balance: "5498.2800"
|
|
6570
|
+
# currency: usd
|
|
6571
|
+
# to_base: 5498.28
|
|
6572
|
+
# crypto_balance: null
|
|
6573
|
+
# - source:
|
|
6574
|
+
# type: crypto_manual
|
|
6575
|
+
# crypto_manual_id: 22001
|
|
6576
|
+
# symbol: btc
|
|
6577
|
+
# balances:
|
|
6578
|
+
# - id: 104
|
|
6579
|
+
# date: "2026-01-01"
|
|
6580
|
+
# balance: "53124.7200"
|
|
6581
|
+
# currency: usd
|
|
6582
|
+
# to_base: 53124.72
|
|
6583
|
+
# crypto_balance: "0.852341920145782301"
|
|
6584
|
+
# - source:
|
|
6585
|
+
# type: crypto_synced
|
|
6586
|
+
# crypto_synced_id: 33004
|
|
6587
|
+
# symbol: btc
|
|
6588
|
+
# balances:
|
|
6589
|
+
# - id: 105
|
|
6590
|
+
# date: "2026-01-01"
|
|
6591
|
+
# balance: "6231.2800"
|
|
6592
|
+
# currency: usd
|
|
6593
|
+
# to_base: 6231.28
|
|
6594
|
+
# crypto_balance: "0.100020003000400050"
|
|
6595
|
+
# - source:
|
|
6596
|
+
# type: deleted
|
|
6597
|
+
# deleted_account_id: 91
|
|
6598
|
+
# name: Savings
|
|
6599
|
+
# institution_name: Old Bank
|
|
6600
|
+
# display_name: Closed Savings
|
|
6601
|
+
# account_type: savings
|
|
6602
|
+
# subtype: savings
|
|
6603
|
+
# mask: "1234"
|
|
6604
|
+
# symbol: null
|
|
6605
|
+
# balances:
|
|
6606
|
+
# - id: 106
|
|
6607
|
+
# date: "2026-01-01"
|
|
6608
|
+
# balance: "1250.0000"
|
|
6609
|
+
# currency: usd
|
|
6610
|
+
# to_base: 1250
|
|
6611
|
+
# crypto_balance: null
|
|
6612
|
+
# manual account history:
|
|
6613
|
+
# value:
|
|
6614
|
+
# balance_history:
|
|
6615
|
+
# - source:
|
|
6616
|
+
# type: manual
|
|
6617
|
+
# manual_account_id: 119807
|
|
6618
|
+
# balances:
|
|
6619
|
+
# - id: 201
|
|
6620
|
+
# date: "2026-01-01"
|
|
6621
|
+
# balance: "41000.0000"
|
|
6622
|
+
# currency: usd
|
|
6623
|
+
# to_base: 41000
|
|
6624
|
+
# crypto_balance: null
|
|
6625
|
+
# - id: 202
|
|
6626
|
+
# date: "2026-02-01"
|
|
6627
|
+
# balance: "41211.8000"
|
|
6628
|
+
# currency: usd
|
|
6629
|
+
# to_base: 41211.8
|
|
6630
|
+
# crypto_balance: null
|
|
6631
|
+
# plaid account history:
|
|
6632
|
+
# value:
|
|
6633
|
+
# balance_history:
|
|
6634
|
+
# - source:
|
|
6635
|
+
# type: plaid
|
|
6636
|
+
# plaid_account_id: 119808
|
|
6637
|
+
# balances:
|
|
6638
|
+
# - id: 301
|
|
6639
|
+
# date: "2026-02-01"
|
|
6640
|
+
# balance: "5498.2800"
|
|
6641
|
+
# currency: usd
|
|
6642
|
+
# to_base: 5498.28
|
|
6643
|
+
# crypto_balance: null
|
|
6644
|
+
# synced crypto history:
|
|
6645
|
+
# value:
|
|
6646
|
+
# balance_history:
|
|
6647
|
+
# - source:
|
|
6648
|
+
# type: crypto_synced
|
|
6649
|
+
# crypto_synced_id: 33004
|
|
6650
|
+
# symbol: btc
|
|
6651
|
+
# balances:
|
|
6652
|
+
# - id: 401
|
|
6653
|
+
# date: "2026-02-01"
|
|
6654
|
+
# balance: "6231.2800"
|
|
6655
|
+
# currency: usd
|
|
6656
|
+
# to_base: 6231.28
|
|
6657
|
+
# crypto_balance: "0.100020003000400050"
|
|
6658
|
+
# deleted account history:
|
|
6659
|
+
# value:
|
|
6660
|
+
# balance_history:
|
|
6661
|
+
# - source:
|
|
6662
|
+
# type: deleted
|
|
6663
|
+
# deleted_account_id: 91
|
|
6664
|
+
# name: Savings
|
|
6665
|
+
# institution_name: Old Bank
|
|
6666
|
+
# display_name: Closed Savings
|
|
6667
|
+
# account_type: savings
|
|
6668
|
+
# subtype: savings
|
|
6669
|
+
# mask: "1234"
|
|
6670
|
+
# symbol: null
|
|
6671
|
+
# balances:
|
|
6672
|
+
# - id: 501
|
|
6673
|
+
# date: "2026-01-01"
|
|
6674
|
+
# balance: "1250.0000"
|
|
6675
|
+
# currency: usd
|
|
6676
|
+
# to_base: 1250
|
|
6677
|
+
# crypto_balance: null
|
|
6678
|
+
# "400":
|
|
6679
|
+
# description: Bad Request
|
|
6680
|
+
# content:
|
|
6681
|
+
# application/json:
|
|
6682
|
+
# schema:
|
|
6683
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
6684
|
+
# examples:
|
|
6685
|
+
# missing paired date:
|
|
6686
|
+
# value:
|
|
6687
|
+
# message: Request Validation Failure
|
|
6688
|
+
# errors:
|
|
6689
|
+
# - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
6690
|
+
# invalid range:
|
|
6691
|
+
# value:
|
|
6692
|
+
# message: Request Validation Failure
|
|
6693
|
+
# errors:
|
|
6694
|
+
# - errMsg: "`start_date` must be before or equal to `end_date`."
|
|
6695
|
+
# not first of month:
|
|
6696
|
+
# value:
|
|
6697
|
+
# message: Request Validation Failure
|
|
6698
|
+
# errors:
|
|
6699
|
+
# - errMsg: "`start_date` and `end_date` must both be the first day of a month."
|
|
6700
|
+
# future start date:
|
|
6701
|
+
# value:
|
|
6702
|
+
# message: Request Validation Failure
|
|
6703
|
+
# errors:
|
|
6704
|
+
# - errMsg: "`start_date` must not be in the future."
|
|
6705
|
+
# "401":
|
|
6706
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
6707
|
+
# "429":
|
|
6708
|
+
# $ref: "#/components/responses/rateLimited"
|
|
6709
|
+
# "500":
|
|
6710
|
+
# $ref: "#/components/responses/serverError"
|
|
6711
|
+
# /balance_history/{account_type}/{account_id}:
|
|
6712
|
+
# get:
|
|
6713
|
+
# tags:
|
|
6714
|
+
# - balance_history
|
|
6715
|
+
# summary: Get balance history for an account
|
|
6716
|
+
# description: |-
|
|
6717
|
+
# Retrieve historical balance entries for one manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
|
|
6718
|
+
# The `account_type` path parameter identifies the type of account and the `account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6719
|
+
# When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available history for the source is returned.
|
|
6720
|
+
# operationId: getBalanceHistoryForAccount
|
|
6721
|
+
# parameters:
|
|
6722
|
+
# - name: account_type
|
|
6723
|
+
# in: path
|
|
6724
|
+
# required: true
|
|
6725
|
+
# description: Source family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6726
|
+
# schema:
|
|
6727
|
+
# type: string
|
|
6728
|
+
# enum: [manual, plaid, crypto_manual, deleted]
|
|
6729
|
+
# - name: account_id
|
|
6730
|
+
# in: path
|
|
6731
|
+
# required: true
|
|
6732
|
+
# description: Account or deleted-source identifier within the selected `account_type`.
|
|
6733
|
+
# schema:
|
|
6734
|
+
# type: integer
|
|
6735
|
+
# format: int32
|
|
6736
|
+
# - name: start_date
|
|
6737
|
+
# in: query
|
|
6738
|
+
# description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
6739
|
+
# required: false
|
|
6740
|
+
# schema:
|
|
6741
|
+
# type: string
|
|
6742
|
+
# format: date
|
|
6743
|
+
# - name: end_date
|
|
6744
|
+
# in: query
|
|
6745
|
+
# description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
|
|
6746
|
+
# required: false
|
|
6747
|
+
# schema:
|
|
6748
|
+
# type: string
|
|
6749
|
+
# format: date
|
|
6750
|
+
# responses:
|
|
6751
|
+
# "200":
|
|
6752
|
+
# description: Historical balance entries for the requested source
|
|
6753
|
+
# content:
|
|
6754
|
+
# application/json:
|
|
6755
|
+
# schema:
|
|
6756
|
+
# $ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
6757
|
+
# examples:
|
|
6758
|
+
# manual account history:
|
|
6759
|
+
# value:
|
|
6760
|
+
# balance_history:
|
|
6761
|
+
# - source:
|
|
6762
|
+
# type: manual
|
|
6763
|
+
# manual_account_id: 119807
|
|
6764
|
+
# balances:
|
|
6765
|
+
# - id: 201
|
|
6766
|
+
# date: "2026-01-01"
|
|
6767
|
+
# balance: "41000.0000"
|
|
6768
|
+
# currency: usd
|
|
6769
|
+
# to_base: 41000
|
|
6770
|
+
# crypto_balance: null
|
|
6771
|
+
# - id: 202
|
|
6772
|
+
# date: "2026-02-01"
|
|
6773
|
+
# balance: "41211.8000"
|
|
6774
|
+
# currency: usd
|
|
6775
|
+
# to_base: 41211.8
|
|
6776
|
+
# crypto_balance: null
|
|
6777
|
+
# deleted account history:
|
|
6778
|
+
# value:
|
|
6779
|
+
# balance_history:
|
|
6780
|
+
# - source:
|
|
6781
|
+
# type: deleted
|
|
6782
|
+
# deleted_account_id: 91
|
|
6783
|
+
# name: Savings
|
|
6784
|
+
# institution_name: Old Bank
|
|
6785
|
+
# display_name: Closed Savings
|
|
6786
|
+
# account_type: savings
|
|
6787
|
+
# subtype: savings
|
|
6788
|
+
# mask: "1234"
|
|
6789
|
+
# symbol: null
|
|
6790
|
+
# balances:
|
|
6791
|
+
# - id: 501
|
|
6792
|
+
# date: "2026-01-01"
|
|
6793
|
+
# balance: "1250.0000"
|
|
6794
|
+
# currency: usd
|
|
6795
|
+
# to_base: 1250
|
|
6796
|
+
# crypto_balance: null
|
|
6797
|
+
# "400":
|
|
6798
|
+
# description: Bad Request
|
|
6799
|
+
# content:
|
|
6800
|
+
# application/json:
|
|
6801
|
+
# schema:
|
|
6802
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
6803
|
+
# examples:
|
|
6804
|
+
# missing paired date:
|
|
6805
|
+
# value:
|
|
6806
|
+
# message: Request Validation Failure
|
|
6807
|
+
# errors:
|
|
6808
|
+
# - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
6809
|
+
# invalid range:
|
|
6810
|
+
# value:
|
|
6811
|
+
# message: Request Validation Failure
|
|
6812
|
+
# errors:
|
|
6813
|
+
# - errMsg: "`start_date` must be before or equal to `end_date`."
|
|
6814
|
+
# "401":
|
|
6815
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
6816
|
+
# "404":
|
|
6817
|
+
# description: Not Found
|
|
6818
|
+
# content:
|
|
6819
|
+
# application/json:
|
|
6820
|
+
# schema:
|
|
6821
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
6822
|
+
# examples:
|
|
6823
|
+
# manual not found:
|
|
6824
|
+
# value:
|
|
6825
|
+
# message: Not Found
|
|
6826
|
+
# errors:
|
|
6827
|
+
# - errMsg: "There is no manual account with the id: 99999999."
|
|
6828
|
+
# deleted not found:
|
|
6829
|
+
# value:
|
|
6830
|
+
# message: Not Found
|
|
6831
|
+
# errors:
|
|
6832
|
+
# - errMsg: "Deleted balance history source 99999999 was not found."
|
|
6833
|
+
# "429":
|
|
6834
|
+
# $ref: "#/components/responses/rateLimited"
|
|
6835
|
+
# "500":
|
|
6836
|
+
# $ref: "#/components/responses/serverError"
|
|
6837
|
+
# put:
|
|
6838
|
+
# tags:
|
|
6839
|
+
# - balance_history
|
|
6840
|
+
# summary: Upsert balance history for an account
|
|
6841
|
+
# description: |-
|
|
6842
|
+
# Upsert one or more historical balance entries for a single manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
|
|
6843
|
+
# The `account_type` path parameter identifies the type of account and the `account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6844
|
+
# Submit one or more entries in the `balances` array. Each entry must specify a `date` and `balance` value.<br><br>
|
|
6845
|
+
# Balance history is monthly. Each entry's `date` must be the first day of a month and must be in a past month.<br><br>
|
|
6846
|
+
# `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>
|
|
6847
|
+
# `symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`. It is optional for `crypto_manual` accounts and tolerated for `deleted` accounts.<br><br>
|
|
6848
|
+
# `crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and `deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
6849
|
+
# The response contains only the balance entries that were submitted in this request.
|
|
6850
|
+
# operationId: upsertBalanceHistoryForAccount
|
|
6851
|
+
# parameters:
|
|
6852
|
+
# - name: account_type
|
|
6853
|
+
# in: path
|
|
6854
|
+
# required: true
|
|
6855
|
+
# description: Source family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6856
|
+
# schema:
|
|
6857
|
+
# type: string
|
|
6858
|
+
# enum: [manual, plaid, crypto_manual, deleted]
|
|
6859
|
+
# - name: account_id
|
|
6860
|
+
# in: path
|
|
6861
|
+
# required: true
|
|
6862
|
+
# description: Account or deleted-source identifier within the selected `account_type`.
|
|
6863
|
+
# schema:
|
|
6864
|
+
# type: integer
|
|
6865
|
+
# format: int32
|
|
6866
|
+
# requestBody:
|
|
6867
|
+
# required: true
|
|
6868
|
+
# content:
|
|
6869
|
+
# application/json:
|
|
6870
|
+
# schema:
|
|
6871
|
+
# $ref: "#/components/schemas/upsertBalanceHistoryRequestObject"
|
|
6872
|
+
# examples:
|
|
6873
|
+
# manual account bulk upsert:
|
|
6874
|
+
# value:
|
|
6875
|
+
# balances:
|
|
6876
|
+
# - date: "2026-03-01"
|
|
6877
|
+
# balance: "41500.0000"
|
|
6878
|
+
# - date: "2026-04-01"
|
|
6879
|
+
# balance: "41625.5000"
|
|
6880
|
+
# crypto manual balance with symbol:
|
|
6881
|
+
# value:
|
|
6882
|
+
# balances:
|
|
6883
|
+
# - date: "2026-03-01"
|
|
6884
|
+
# balance: "56011.1200"
|
|
6885
|
+
# symbol: btc
|
|
6886
|
+
# crypto_balance: "0.852341920145782301"
|
|
6887
|
+
# deleted account bulk upsert:
|
|
6888
|
+
# value:
|
|
6889
|
+
# balances:
|
|
6890
|
+
# - date: "2026-03-01"
|
|
6891
|
+
# symbol: btc
|
|
6892
|
+
# crypto_balance: "0.020000000000000000"
|
|
6893
|
+
# currency: usd
|
|
6894
|
+
# balance: "1255"
|
|
6895
|
+
# get-shaped balance entry input:
|
|
6896
|
+
# value:
|
|
6897
|
+
# balances:
|
|
6898
|
+
# - id: 601
|
|
6899
|
+
# date: "2026-03-01"
|
|
6900
|
+
# balance: "41500.0000"
|
|
6901
|
+
# currency: usd
|
|
6902
|
+
# to_base: 41500
|
|
6903
|
+
# crypto_balance: null
|
|
6904
|
+
# responses:
|
|
6905
|
+
# "200":
|
|
6906
|
+
# description: Returns the modified balance entries only. Other historical
|
|
6907
|
+
# entries for the account are omitted from `balances`.
|
|
6908
|
+
# content:
|
|
6909
|
+
# application/json:
|
|
6910
|
+
# schema:
|
|
6911
|
+
# $ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
6912
|
+
# examples:
|
|
6913
|
+
# manual account bulk upsert:
|
|
6914
|
+
# summary: Two upserted rows returned (not full account history)
|
|
6915
|
+
# value:
|
|
6916
|
+
# source:
|
|
6917
|
+
# type: manual
|
|
6918
|
+
# manual_account_id: 119807
|
|
6919
|
+
# balances:
|
|
6920
|
+
# - id: 601
|
|
6921
|
+
# date: "2026-03-01"
|
|
6922
|
+
# balance: "41500.0000"
|
|
6923
|
+
# currency: usd
|
|
6924
|
+
# to_base: 41500
|
|
6925
|
+
# crypto_balance: null
|
|
6926
|
+
# - id: 602
|
|
6927
|
+
# date: "2026-04-01"
|
|
6928
|
+
# balance: "41625.5000"
|
|
6929
|
+
# currency: usd
|
|
6930
|
+
# to_base: 41625.5
|
|
6931
|
+
# crypto_balance: null
|
|
6932
|
+
# crypto manual balance with symbol:
|
|
6933
|
+
# summary: Single upserted row returned
|
|
6934
|
+
# value:
|
|
6935
|
+
# source:
|
|
6936
|
+
# type: crypto_manual
|
|
6937
|
+
# crypto_manual_id: 22001
|
|
6938
|
+
# symbol: btc
|
|
6939
|
+
# balances:
|
|
6940
|
+
# - id: 603
|
|
6941
|
+
# date: "2026-03-01"
|
|
6942
|
+
# balance: "56011.1200"
|
|
6943
|
+
# currency: usd
|
|
6944
|
+
# to_base: 56011.12
|
|
6945
|
+
# crypto_balance: "0.852341920145782301"
|
|
6946
|
+
# deleted account bulk upsert:
|
|
6947
|
+
# summary: Single upserted row returned
|
|
6948
|
+
# value:
|
|
6949
|
+
# source:
|
|
6950
|
+
# type: deleted
|
|
6951
|
+
# deleted_account_id: 91
|
|
6952
|
+
# name: Savings
|
|
6953
|
+
# institution_name: Old Bank
|
|
6954
|
+
# display_name: Closed Savings
|
|
6955
|
+
# account_type: savings
|
|
6956
|
+
# subtype: savings
|
|
6957
|
+
# mask: "1234"
|
|
6958
|
+
# symbol: btc
|
|
6959
|
+
# balances:
|
|
6960
|
+
# - id: 504
|
|
6961
|
+
# date: "2026-03-01"
|
|
6962
|
+
# balance: "1255"
|
|
6963
|
+
# currency: usd
|
|
6964
|
+
# to_base: 1255
|
|
6965
|
+
# crypto_balance: "0.020000000000000000"
|
|
6966
|
+
# "400":
|
|
6967
|
+
# description: Bad Request. The entire request is rejected if any row in
|
|
6968
|
+
# `balances` fails validation; no rows are updated.
|
|
6969
|
+
# content:
|
|
6970
|
+
# application/json:
|
|
6971
|
+
# schema:
|
|
6972
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
6973
|
+
# examples:
|
|
6974
|
+
# missing balances:
|
|
6975
|
+
# value:
|
|
6976
|
+
# message: Invalid Request Body
|
|
6977
|
+
# errors:
|
|
6978
|
+
# - errMsg: "Missing required property 'balances' in request body."
|
|
6979
|
+
# empty balances array:
|
|
6980
|
+
# value:
|
|
6981
|
+
# message: Invalid Request Body
|
|
6982
|
+
# errors:
|
|
6983
|
+
# - errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
6984
|
+
# invalid property:
|
|
6985
|
+
# value:
|
|
6986
|
+
# message: Invalid Request Body
|
|
6987
|
+
# errors:
|
|
6988
|
+
# - errMsg: "Invalid property 'foo' in request body."
|
|
6989
|
+
# invalid date:
|
|
6990
|
+
# value:
|
|
6991
|
+
# message: Request Validation Failure
|
|
6992
|
+
# errors:
|
|
6993
|
+
# - errMsg: "`date` must be the first day of a month."
|
|
6994
|
+
# request_balances_index: 0
|
|
6995
|
+
# code: VALIDATION_ERROR
|
|
6996
|
+
# future date:
|
|
6997
|
+
# value:
|
|
6998
|
+
# message: Request Validation Failure
|
|
6999
|
+
# errors:
|
|
7000
|
+
# - errMsg: "`date` must be in a past month."
|
|
7001
|
+
# request_balances_index: 1
|
|
7002
|
+
# crypto balance not allowed:
|
|
7003
|
+
# value:
|
|
7004
|
+
# message: Request Validation Failure
|
|
7005
|
+
# errors:
|
|
7006
|
+
# - errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual`, `crypto_synced`, or `deleted`."
|
|
7007
|
+
# request_balances_index: 0
|
|
7008
|
+
# invalid row in bulk request:
|
|
7009
|
+
# value:
|
|
7010
|
+
# message: Request Validation Failure
|
|
7011
|
+
# errors:
|
|
7012
|
+
# - errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`."
|
|
7013
|
+
# request_balances_index: 1
|
|
7014
|
+
# "401":
|
|
7015
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7016
|
+
# "404":
|
|
7017
|
+
# description: Not Found
|
|
7018
|
+
# content:
|
|
7019
|
+
# application/json:
|
|
7020
|
+
# schema:
|
|
7021
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7022
|
+
# example:
|
|
7023
|
+
# message: Not Found
|
|
7024
|
+
# errors:
|
|
7025
|
+
# - errMsg: "There is no manual account with the id: 99999999."
|
|
7026
|
+
# "429":
|
|
7027
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7028
|
+
# "500":
|
|
7029
|
+
# $ref: "#/components/responses/serverError"
|
|
7030
|
+
# delete:
|
|
7031
|
+
# tags:
|
|
7032
|
+
# - balance_history
|
|
7033
|
+
# summary: Delete all balance history for an account
|
|
7034
|
+
# description: |-
|
|
7035
|
+
# Delete all historical balance entries for a single manual, Plaid, manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
7036
|
+
# operationId: deleteBalanceHistoryForAccount
|
|
7037
|
+
# parameters:
|
|
7038
|
+
# - name: account_type
|
|
7039
|
+
# in: path
|
|
7040
|
+
# required: true
|
|
7041
|
+
# description: Source family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7042
|
+
# schema:
|
|
7043
|
+
# type: string
|
|
7044
|
+
# enum: [manual, plaid, crypto_manual, deleted]
|
|
7045
|
+
# - name: account_id
|
|
7046
|
+
# in: path
|
|
7047
|
+
# required: true
|
|
7048
|
+
# description: Account or deleted-source identifier within the selected `account_type`.
|
|
7049
|
+
# schema:
|
|
7050
|
+
# type: integer
|
|
7051
|
+
# format: int32
|
|
7052
|
+
# responses:
|
|
7053
|
+
# "204":
|
|
7054
|
+
# description: All history for the account/source was deleted
|
|
7055
|
+
# "401":
|
|
7056
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7057
|
+
# "404":
|
|
7058
|
+
# description: Not Found
|
|
7059
|
+
# content:
|
|
7060
|
+
# application/json:
|
|
7061
|
+
# schema:
|
|
7062
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7063
|
+
# examples:
|
|
7064
|
+
# source not found:
|
|
7065
|
+
# value:
|
|
7066
|
+
# message: Not Found
|
|
7067
|
+
# errors:
|
|
7068
|
+
# - errMsg: "There is no manual account with the id: 99999999."
|
|
7069
|
+
# "429":
|
|
7070
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7071
|
+
# "500":
|
|
7072
|
+
# $ref: "#/components/responses/serverError"
|
|
7073
|
+
# /balance_history/crypto_synced/{account_id}/{symbol}:
|
|
7074
|
+
# get:
|
|
7075
|
+
# tags:
|
|
7076
|
+
# - balance_history
|
|
7077
|
+
# summary: Get balance history for a synced crypto symbol
|
|
7078
|
+
# description: |-
|
|
7079
|
+
# Retrieve historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7080
|
+
# Use the `crypto_synced` account id together with a `symbol` path parameter to select one balance stream within that synced crypto account.<br><br>
|
|
7081
|
+
# When `start_date` and `end_date` are both provided, they must be first-of-month dates. `start_date` must not be in the future, while `end_date` may be in the future. If one of `start_date` or `end_date` is provided, the other is required. If neither is provided, all available history for the symbol stream is returned.
|
|
7082
|
+
# operationId: getBalanceHistoryForCryptoSynced
|
|
7083
|
+
# parameters:
|
|
7084
|
+
# - name: account_id
|
|
7085
|
+
# in: path
|
|
7086
|
+
# required: true
|
|
7087
|
+
# description: Synced crypto account identifier.
|
|
7088
|
+
# schema:
|
|
7089
|
+
# type: integer
|
|
7090
|
+
# format: int32
|
|
7091
|
+
# - name: symbol
|
|
7092
|
+
# in: path
|
|
7093
|
+
# required: true
|
|
7094
|
+
# description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7095
|
+
# schema:
|
|
7096
|
+
# type: string
|
|
7097
|
+
# minLength: 1
|
|
7098
|
+
# maxLength: 25
|
|
7099
|
+
# - name: start_date
|
|
7100
|
+
# in: query
|
|
7101
|
+
# description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
|
|
7102
|
+
# required: false
|
|
7103
|
+
# schema:
|
|
7104
|
+
# type: string
|
|
7105
|
+
# format: date
|
|
7106
|
+
# - name: end_date
|
|
7107
|
+
# in: query
|
|
7108
|
+
# description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
|
|
7109
|
+
# required: false
|
|
7110
|
+
# schema:
|
|
7111
|
+
# type: string
|
|
7112
|
+
# format: date
|
|
7113
|
+
# responses:
|
|
7114
|
+
# "200":
|
|
7115
|
+
# description: Historical balance entries for the synced crypto symbol stream
|
|
7116
|
+
# content:
|
|
7117
|
+
# application/json:
|
|
7118
|
+
# schema:
|
|
7119
|
+
# $ref: "#/components/schemas/balanceHistoryListResponseObject"
|
|
7120
|
+
# example:
|
|
7121
|
+
# balance_history:
|
|
7122
|
+
# - source:
|
|
7123
|
+
# type: crypto_synced
|
|
7124
|
+
# crypto_synced_id: 33004
|
|
7125
|
+
# symbol: btc
|
|
7126
|
+
# balances:
|
|
7127
|
+
# - id: 401
|
|
7128
|
+
# date: "2026-02-01"
|
|
7129
|
+
# balance: "6231.2800"
|
|
7130
|
+
# currency: usd
|
|
7131
|
+
# to_base: 6231.28
|
|
7132
|
+
# crypto_balance: "0.100020003000400050"
|
|
7133
|
+
# "400":
|
|
7134
|
+
# description: Bad Request
|
|
7135
|
+
# content:
|
|
7136
|
+
# application/json:
|
|
7137
|
+
# schema:
|
|
7138
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7139
|
+
# examples:
|
|
7140
|
+
# missing paired date:
|
|
7141
|
+
# value:
|
|
7142
|
+
# message: Request Validation Failure
|
|
7143
|
+
# errors:
|
|
7144
|
+
# - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
|
|
7145
|
+
# invalid range:
|
|
7146
|
+
# value:
|
|
7147
|
+
# message: Request Validation Failure
|
|
7148
|
+
# errors:
|
|
7149
|
+
# - errMsg: "`start_date` must be before or equal to `end_date`."
|
|
7150
|
+
# "401":
|
|
7151
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7152
|
+
# "404":
|
|
7153
|
+
# description: Not Found
|
|
7154
|
+
# content:
|
|
7155
|
+
# application/json:
|
|
7156
|
+
# schema:
|
|
7157
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7158
|
+
# examples:
|
|
7159
|
+
# source not found:
|
|
7160
|
+
# value:
|
|
7161
|
+
# message: Not Found
|
|
7162
|
+
# errors:
|
|
7163
|
+
# - errMsg: "There is no synced crypto account with the id: 99999999."
|
|
7164
|
+
# symbol not found:
|
|
7165
|
+
# value:
|
|
7166
|
+
# message: Not Found
|
|
7167
|
+
# errors:
|
|
7168
|
+
# - errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7169
|
+
# "429":
|
|
7170
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7171
|
+
# "500":
|
|
7172
|
+
# $ref: "#/components/responses/serverError"
|
|
7173
|
+
# put:
|
|
7174
|
+
# tags:
|
|
7175
|
+
# - balance_history
|
|
7176
|
+
# summary: Upsert balance history for a synced crypto symbol
|
|
7177
|
+
# description: |-
|
|
7178
|
+
# Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7179
|
+
# The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7180
|
+
# Submit one or more entries in the `balances` array. Each entry must specify a `date` and `balance` value.<br><br>
|
|
7181
|
+
# Balance history is monthly. Each entry's `date` must be the first day of a month and must be in a past month.<br><br>
|
|
7182
|
+
# 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>
|
|
7183
|
+
# `currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7184
|
+
# `crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7185
|
+
# The response contains only the balance entries that were submitted in this request.
|
|
7186
|
+
# operationId: upsertBalanceHistoryForCryptoSynced
|
|
7187
|
+
# parameters:
|
|
7188
|
+
# - name: account_id
|
|
7189
|
+
# in: path
|
|
7190
|
+
# required: true
|
|
7191
|
+
# description: Synced crypto account identifier to update.
|
|
7192
|
+
# schema:
|
|
7193
|
+
# type: integer
|
|
7194
|
+
# format: int32
|
|
7195
|
+
# - name: symbol
|
|
7196
|
+
# in: path
|
|
7197
|
+
# required: true
|
|
7198
|
+
# description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7199
|
+
# schema:
|
|
7200
|
+
# type: string
|
|
7201
|
+
# minLength: 1
|
|
7202
|
+
# maxLength: 25
|
|
7203
|
+
# requestBody:
|
|
7204
|
+
# required: true
|
|
7205
|
+
# content:
|
|
7206
|
+
# application/json:
|
|
7207
|
+
# schema:
|
|
7208
|
+
# $ref: "#/components/schemas/upsertBalanceHistoryRequestObject"
|
|
7209
|
+
# examples:
|
|
7210
|
+
# synced crypto bulk upsert:
|
|
7211
|
+
# value:
|
|
7212
|
+
# balances:
|
|
7213
|
+
# - date: "2026-03-01"
|
|
7214
|
+
# balance: "6400.0000"
|
|
7215
|
+
# crypto_balance: "0.100020003000400050"
|
|
7216
|
+
# - date: "2026-04-01"
|
|
7217
|
+
# balance: "6500.0000"
|
|
7218
|
+
# crypto_balance: "0.100020003000400050"
|
|
7219
|
+
# responses:
|
|
7220
|
+
# "200":
|
|
7221
|
+
# description: Returns the modified balance entries only. Other historical
|
|
7222
|
+
# entries for the symbol stream are omitted from `balances`.
|
|
7223
|
+
# content:
|
|
7224
|
+
# application/json:
|
|
7225
|
+
# schema:
|
|
7226
|
+
# $ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7227
|
+
# examples:
|
|
7228
|
+
# synced crypto bulk upsert:
|
|
7229
|
+
# summary: Two upserted rows returned (not full symbol history)
|
|
7230
|
+
# value:
|
|
7231
|
+
# source:
|
|
7232
|
+
# type: crypto_synced
|
|
7233
|
+
# crypto_synced_id: 33004
|
|
7234
|
+
# symbol: btc
|
|
7235
|
+
# balances:
|
|
7236
|
+
# - id: 604
|
|
7237
|
+
# date: "2026-03-01"
|
|
7238
|
+
# balance: "6400.0000"
|
|
7239
|
+
# currency: usd
|
|
7240
|
+
# to_base: 6400
|
|
7241
|
+
# crypto_balance: "0.100020003000400050"
|
|
7242
|
+
# - id: 605
|
|
7243
|
+
# date: "2026-04-01"
|
|
7244
|
+
# balance: "6500.0000"
|
|
7245
|
+
# currency: usd
|
|
7246
|
+
# to_base: 6500
|
|
7247
|
+
# crypto_balance: "0.100020003000400050"
|
|
7248
|
+
# "400":
|
|
7249
|
+
# description: Bad Request. The entire request is rejected if any row in
|
|
7250
|
+
# `balances` fails validation; no rows are updated.
|
|
7251
|
+
# content:
|
|
7252
|
+
# application/json:
|
|
7253
|
+
# schema:
|
|
7254
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7255
|
+
# examples:
|
|
7256
|
+
# missing balances:
|
|
7257
|
+
# value:
|
|
7258
|
+
# message: Invalid Request Body
|
|
7259
|
+
# errors:
|
|
7260
|
+
# - errMsg: "Missing required property 'balances' in request body."
|
|
7261
|
+
# empty balances array:
|
|
7262
|
+
# value:
|
|
7263
|
+
# message: Invalid Request Body
|
|
7264
|
+
# errors:
|
|
7265
|
+
# - errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7266
|
+
# invalid date:
|
|
7267
|
+
# value:
|
|
7268
|
+
# message: Request Validation Failure
|
|
7269
|
+
# errors:
|
|
7270
|
+
# - errMsg: "`date` must be the first day of a month."
|
|
7271
|
+
# request_balances_index: 0
|
|
7272
|
+
# future date:
|
|
7273
|
+
# value:
|
|
7274
|
+
# message: Request Validation Failure
|
|
7275
|
+
# errors:
|
|
7276
|
+
# - errMsg: "`date` must be in a past month."
|
|
7277
|
+
# request_balances_index: 1
|
|
7278
|
+
# symbol mismatch:
|
|
7279
|
+
# value:
|
|
7280
|
+
# message: Request Validation Failure
|
|
7281
|
+
# errors:
|
|
7282
|
+
# - errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7283
|
+
# request_balances_index: 0
|
|
7284
|
+
# invalid row in bulk request:
|
|
7285
|
+
# value:
|
|
7286
|
+
# message: Request Validation Failure
|
|
7287
|
+
# errors:
|
|
7288
|
+
# - errMsg: "`balance` must be a valid numeric string or number."
|
|
7289
|
+
# request_balances_index: 1
|
|
7290
|
+
# "401":
|
|
7291
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7292
|
+
# "404":
|
|
7293
|
+
# description: Not Found
|
|
7294
|
+
# content:
|
|
7295
|
+
# application/json:
|
|
7296
|
+
# schema:
|
|
7297
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7298
|
+
# examples:
|
|
7299
|
+
# source not found:
|
|
7300
|
+
# value:
|
|
7301
|
+
# message: Not Found
|
|
7302
|
+
# errors:
|
|
7303
|
+
# - errMsg: "There is no synced crypto account with the id: 99999999."
|
|
7304
|
+
# symbol not found:
|
|
7305
|
+
# value:
|
|
7306
|
+
# message: Not Found
|
|
7307
|
+
# errors:
|
|
7308
|
+
# - errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7309
|
+
# "429":
|
|
7310
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7311
|
+
# "500":
|
|
7312
|
+
# $ref: "#/components/responses/serverError"
|
|
7313
|
+
# delete:
|
|
7314
|
+
# tags:
|
|
7315
|
+
# - balance_history
|
|
7316
|
+
# summary: Delete all balance history for a synced crypto symbol
|
|
7317
|
+
# description: |-
|
|
7318
|
+
# Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7319
|
+
# The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7320
|
+
# operationId: deleteBalanceHistoryForCryptoSynced
|
|
7321
|
+
# parameters:
|
|
7322
|
+
# - name: account_id
|
|
7323
|
+
# in: path
|
|
7324
|
+
# required: true
|
|
7325
|
+
# description: Synced crypto account identifier.
|
|
7326
|
+
# schema:
|
|
7327
|
+
# type: integer
|
|
7328
|
+
# format: int32
|
|
7329
|
+
# - name: symbol
|
|
7330
|
+
# in: path
|
|
7331
|
+
# required: true
|
|
7332
|
+
# description: Crypto symbol identifying one balance stream within the synced crypto account.
|
|
7333
|
+
# schema:
|
|
7334
|
+
# type: string
|
|
7335
|
+
# minLength: 1
|
|
7336
|
+
# maxLength: 25
|
|
7337
|
+
# responses:
|
|
7338
|
+
# "204":
|
|
7339
|
+
# description: All history for the synced crypto symbol stream was deleted
|
|
7340
|
+
# "401":
|
|
7341
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7342
|
+
# "404":
|
|
7343
|
+
# description: Not Found
|
|
7344
|
+
# content:
|
|
7345
|
+
# application/json:
|
|
7346
|
+
# schema:
|
|
7347
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7348
|
+
# example:
|
|
7349
|
+
# message: Not Found
|
|
7350
|
+
# errors:
|
|
7351
|
+
# - errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7352
|
+
# "429":
|
|
7353
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7354
|
+
# "500":
|
|
7355
|
+
# $ref: "#/components/responses/serverError"
|
|
7356
|
+
# /balance_history/entries/{id}:
|
|
7357
|
+
# delete:
|
|
7358
|
+
# tags:
|
|
7359
|
+
# - balance_history
|
|
7360
|
+
# summary: Delete a balance history entry
|
|
7361
|
+
# description: |-
|
|
7362
|
+
# Delete a single monthly balance history entry by its id.
|
|
7363
|
+
# operationId: deleteBalanceHistoryEntry
|
|
7364
|
+
# parameters:
|
|
7365
|
+
# - name: id
|
|
7366
|
+
# in: path
|
|
7367
|
+
# required: true
|
|
7368
|
+
# description: Balance history row identifier to delete.
|
|
7369
|
+
# schema:
|
|
7370
|
+
# type: integer
|
|
7371
|
+
# format: int32
|
|
7372
|
+
# responses:
|
|
7373
|
+
# "204":
|
|
7374
|
+
# description: The balance history entry was deleted
|
|
7375
|
+
# "400":
|
|
7376
|
+
# description: Bad Request
|
|
7377
|
+
# content:
|
|
7378
|
+
# application/json:
|
|
7379
|
+
# schema:
|
|
7380
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7381
|
+
# example:
|
|
7382
|
+
# message: Request Validation Failure
|
|
7383
|
+
# errors:
|
|
7384
|
+
# - errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
7385
|
+
# "401":
|
|
7386
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7387
|
+
# "404":
|
|
7388
|
+
# description: Not Found
|
|
7389
|
+
# content:
|
|
7390
|
+
# application/json:
|
|
7391
|
+
# schema:
|
|
7392
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7393
|
+
# example:
|
|
7394
|
+
# message: Not Found
|
|
7395
|
+
# errors:
|
|
7396
|
+
# - errMsg: "There is no balance history entry with the id: 99999999."
|
|
7397
|
+
# "429":
|
|
7398
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7399
|
+
# "500":
|
|
7400
|
+
# $ref: "#/components/responses/serverError"
|
|
7401
|
+
# /balance_history/deleted/{account_id}/details:
|
|
7402
|
+
# put:
|
|
7403
|
+
# tags:
|
|
7404
|
+
# - balance_history
|
|
7405
|
+
# summary: Update details for a deleted account
|
|
7406
|
+
# description: |-
|
|
7407
|
+
# Update archived metadata for a deleted balance history source.<br><br>
|
|
7408
|
+
# Pass the `deleted` source id returned on `source.deleted_account_id`. This endpoint updates the stored deleted-source metadata used for all historical entries associated with that deleted source.
|
|
7409
|
+
# operationId: updateBalanceHistoryDetails
|
|
7410
|
+
# parameters:
|
|
7411
|
+
# - name: account_id
|
|
7412
|
+
# in: path
|
|
7413
|
+
# required: true
|
|
7414
|
+
# description: Deleted account history source identifier to update.
|
|
7415
|
+
# schema:
|
|
7416
|
+
# type: integer
|
|
7417
|
+
# format: int32
|
|
7418
|
+
# requestBody:
|
|
7419
|
+
# required: true
|
|
7420
|
+
# content:
|
|
7421
|
+
# application/json:
|
|
7422
|
+
# schema:
|
|
7423
|
+
# $ref: "#/components/schemas/updateBalanceHistoryDetailsRequestObject"
|
|
7424
|
+
# examples:
|
|
7425
|
+
# update deleted source details:
|
|
7426
|
+
# value:
|
|
7427
|
+
# name: Savings
|
|
7428
|
+
# institution_name: Old Bank
|
|
7429
|
+
# display_name: Old Savings Account
|
|
7430
|
+
# account_type: savings
|
|
7431
|
+
# subtype: savings
|
|
7432
|
+
# mask: "1234"
|
|
7433
|
+
# responses:
|
|
7434
|
+
# "200":
|
|
7435
|
+
# description: Updated deleted source details
|
|
7436
|
+
# content:
|
|
7437
|
+
# application/json:
|
|
7438
|
+
# schema:
|
|
7439
|
+
# $ref: "#/components/schemas/updateBalanceHistoryDetailsResponseObject"
|
|
7440
|
+
# example:
|
|
7441
|
+
# name: Savings
|
|
7442
|
+
# institution_name: Old Bank
|
|
7443
|
+
# display_name: Old Savings Account
|
|
7444
|
+
# account_type: savings
|
|
7445
|
+
# subtype: savings
|
|
7446
|
+
# mask: "1234"
|
|
7447
|
+
# "400":
|
|
7448
|
+
# description: Bad Request
|
|
7449
|
+
# content:
|
|
7450
|
+
# application/json:
|
|
7451
|
+
# schema:
|
|
7452
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7453
|
+
# example:
|
|
7454
|
+
# message: Invalid Request Body
|
|
7455
|
+
# errors:
|
|
7456
|
+
# - errMsg: "At least one property must be provided: name, institution_name, display_name, account_type, subtype, mask."
|
|
7457
|
+
# "401":
|
|
7458
|
+
# $ref: "#/components/responses/unauthorizedToken"
|
|
7459
|
+
# "404":
|
|
7460
|
+
# description: Not Found
|
|
7461
|
+
# content:
|
|
7462
|
+
# application/json:
|
|
7463
|
+
# schema:
|
|
7464
|
+
# $ref: "#/components/schemas/errorResponseObject"
|
|
7465
|
+
# example:
|
|
7466
|
+
# message: Not Found
|
|
7467
|
+
# errors:
|
|
7468
|
+
# - errMsg: "Deleted balance history source 99999999 was not found."
|
|
7469
|
+
# "429":
|
|
7470
|
+
# $ref: "#/components/responses/rateLimited"
|
|
7471
|
+
# "500":
|
|
7472
|
+
# $ref: "#/components/responses/serverError"
|
|
7473
7473
|
/manual_accounts:
|
|
7474
7474
|
get:
|
|
7475
7475
|
tags:
|