Tablewealth API docs
Build read-only integrations against organization-scoped financial data. The API exposes discoverable capabilities, normalized accounts, transactions, holdings, and organization details through API-key authenticated GET endpoints.
Quickstart
Create an API key in the dashboard, inspect its capabilities, then call only the operations returned for that key.
curl https://api.tablewealth.com/v1/api-key \
-H "X-API-Key: $TABLEWEALTH_API_KEY"1. Scope the key
Grant the smallest useful set of scopes and, when needed, limit the key to selected accounts.
2. Discover access
Call GET /v1/api-key to read scopes, rate limits, account access, and available operations.
3. Page through data
Use pageSize and pageToken on list endpoints. The maximum page size is 100.
Authentication
All API routes require an API key in the X-API-Key header. User ids and organization ids are never accepted from client input.
fetch("https://api.tablewealth.com/v1/accounts", {
headers: {
"X-API-Key": process.env.TABLEWEALTH_API_KEY
}
});Conventions
The API uses consistent envelopes, source-agnostic naming, cursor-style pagination, and normalized error responses.
Success envelope
{
"data": [],
"pagination": {
"pageSize": 50,
"nextPageToken": "..."
},
"meta": {}
}Error envelope
{
"error": {
"code": "forbidden_scope",
"message": "The API key lacks the required scope.",
"requestId": "req_..."
}
}Rate limits
Responses include RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers when available.
List headers
List responses include X-TableWealth-Item-Count with the count returned in the current page.
Errors
Errors include unauthorized, forbidden_scope, invalid_query, not_found, rate_limited, and internal_error.
Discovery
Start here when an agent or integration needs to understand what the current API key is allowed to do.
/v1/api-keyInspect the current API key capabilities
Parameters
No parameters
Response fields
scopesaccountScopeselectedAccountIdsrateLimitsavailableOperationsdiscoverycurl "https://api.tablewealth.com/v1/api-key" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"Organization
Read organization-level profile data for the workspace attached to the API key.
/v1/organizationGet organization details
Parameters
No parameters
Response fields
nameaddressphoneemailwebsitebaseCurrencyCodecurl "https://api.tablewealth.com/v1/organization" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"Accounts
List and retrieve accessible financial accounts. Account visibility is always constrained by the API key account scope.
/v1/accountsList accessible financial accounts
Parameters
statuscategorysourceTypesupportsTransactionssupportsHoldingspageSizepageTokenResponse fields
idsourceTypeproviderstatuscategorynameinstitutionNamebalancessupportsTransactionssupportsHoldingscurl "https://api.tablewealth.com/v1/accounts?category=investment&pageSize=25" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"/v1/accounts/{accountId}Get one accessible financial account
Parameters
accountIdResponse fields
idconnectionIdnameofficialNameinstitutionIdconnectionStatusownershipPercentagecreatedAtcurl "https://api.tablewealth.com/v1/accounts/acct_123" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"Transactions
Query normalized transaction data across accessible accounts or for a single account.
/v1/transactionsList accessible financial transactions
Parameters
accountIddateFromdateTopendingvisibilitycategorypageSizepageTokenResponse fields
idaccountIdtransactionDateauthorizedDatenamemerchantNameamountdisplayAmountcurrencyCodependingisIgnoredcurl "https://api.tablewealth.com/v1/transactions?dateFrom=2026-01-01&dateTo=2026-01-31&pageSize=50" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"/v1/accounts/{accountId}/transactionsList transactions for one accessible account
Parameters
accountIddateFromdateTopendingvisibilitycategorypageSizepageTokenResponse fields
idaccountNameinstitutionNamesourcePrimaryCategorysourceDetailedCategoryorganizationTransactionCategoryNamecurl "https://api.tablewealth.com/v1/accounts/acct_123/transactions?visibility=active" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"Holdings
Read positions and cash-equivalent holdings across accessible investment accounts.
/v1/holdingsList accessible financial holdings
Parameters
accountIdtickerSymbolisCashEquivalentpageSizepageTokenResponse fields
idaccountIdassetNametickerSymbolquantitycurrentPricemarketValuecostBasisisCashEquivalentcurl "https://api.tablewealth.com/v1/holdings?tickerSymbol=VTI" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"/v1/accounts/{accountId}/holdingsList holdings for one accessible account
Parameters
accountIdtickerSymbolisCashEquivalentpageSizepageTokenResponse fields
idaccountNameinstitutionNamesecurityIdtypesubtypesectorindustrycurl "https://api.tablewealth.com/v1/accounts/acct_123/holdings?isCashEquivalent=false" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"Schemas
These are the highest-signal response fields for the core resources.
Account
- id
- sourceType
- provider
- status
- category
- name
- institutionName
- balances
- supportsTransactions
- supportsHoldings
Transaction
- id
- accountId
- transactionDate
- name
- merchantName
- amount
- displayAmount
- currencyCode
- pending
- isIgnored
Holding
- id
- accountId
- assetName
- tickerSymbol
- quantity
- currentPrice
- marketValue
- costBasis
- isCashEquivalent
OpenAPI JSON
Use the machine-readable schema when generating typed clients, validating responses, or giving an agent the exact API contract.
https://api.tablewealth.com/openapi.json