Endpoint reference

Every endpoint, its parameters and its response fields, generated directly from the API schema so it always matches the current version.

OpenAPI specification

This reference is generated from our machine-readable OpenAPI 3 schema, which you can use directly in your own tools: Postman and Insomnia import it via Import → link, and it works with Swagger UI and any OpenAPI code generator.

https://api.endute.com/v1/openapi.json

Base URL: https://api.endute.com/v1. Every path below is relative to it, and every request carries your API key in the Authorization header. Paths are exact and have no trailing slash.

Accounts

GET/v1/accounts

List the bank accounts the key's user has connected.

Response Account[]

FieldTypeNullableDescription
idstring (uuid)no-
institutionstringno-
namestringnoThe account display name: the name set in the portal when one is set, otherwise the name the bank reports.
masked_identifierstringyesLast 4 of the IBAN, else last 4 of the BBAN, else null.
account_typestringyesThe account type: current, savings, credit_card, cash, loan or investment. Derived from what the bank reports and correctable in the portal (some banks omit type metadata entirely). For credit_card accounts the balance endpoint serves the amount OWED (negative), not the available credit — if a card's balance looks like remaining credit, its type needs correcting in the portal. Nullable.
currencystringno-
statusstringnoAccount status as reported by the bank (e.g. enabled).
sandboxbooleanno-
last_synced_atstring (date-time)noWhen transaction DATA was last received for this account. Honest caveat: this is the last successful data delivery, not the last poll attempt -- a quiet account with no new transactions keeps an older stamp.
oldest_booking_datestring (date)noBooking date of the earliest transaction served for this account: the stored feed spans this date to now and only ever grows (history is never trimmed or expired). Use it with the transactions from/to filters to pull the window you want. Null until the first transaction lands.
consent_renewal_duestring (date-time)noWhen bank access for this account's connection next needs renewing (UTC). For UK connections this is a periodic confirmation checkpoint (renewed in the portal without a bank sign-in); for EU connections it is the consent end date and renewal is a full reconnect with a bank sign-in. After this passes without renewal, the feed stops receiving new data until the connection is renewed. Null for connections whose access does not time-expire (e.g. US and Canadian connections) and for the sandbox.
available_history_daysintegernoThe approximate number of days of transaction history this bank serves when an account is FIRST linked (90 for most banks; some card providers serve less, some banks more). The stored feed only ever grows from that starting window, so oldest_booking_date-to-now can exceed this figure over time.
GET/v1/accounts/{id}

Retrieve a single connected bank account by its id.

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes-

Response Account

FieldTypeNullableDescription
idstring (uuid)no-
institutionstringno-
namestringnoThe account display name: the name set in the portal when one is set, otherwise the name the bank reports.
masked_identifierstringyesLast 4 of the IBAN, else last 4 of the BBAN, else null.
account_typestringyesThe account type: current, savings, credit_card, cash, loan or investment. Derived from what the bank reports and correctable in the portal (some banks omit type metadata entirely). For credit_card accounts the balance endpoint serves the amount OWED (negative), not the available credit — if a card's balance looks like remaining credit, its type needs correcting in the portal. Nullable.
currencystringno-
statusstringnoAccount status as reported by the bank (e.g. enabled).
sandboxbooleanno-
last_synced_atstring (date-time)noWhen transaction DATA was last received for this account. Honest caveat: this is the last successful data delivery, not the last poll attempt -- a quiet account with no new transactions keeps an older stamp.
oldest_booking_datestring (date)noBooking date of the earliest transaction served for this account: the stored feed spans this date to now and only ever grows (history is never trimmed or expired). Use it with the transactions from/to filters to pull the window you want. Null until the first transaction lands.
consent_renewal_duestring (date-time)noWhen bank access for this account's connection next needs renewing (UTC). For UK connections this is a periodic confirmation checkpoint (renewed in the portal without a bank sign-in); for EU connections it is the consent end date and renewal is a full reconnect with a bank sign-in. After this passes without renewal, the feed stops receiving new data until the connection is renewed. Null for connections whose access does not time-expire (e.g. US and Canadian connections) and for the sandbox.
available_history_daysintegernoThe approximate number of days of transaction history this bank serves when an account is FIRST linked (90 for most banks; some card providers serve less, some banks more). The stored feed only ever grows from that starting window, so oldest_booking_date-to-now can exceed this figure over time.
GET/v1/accounts/{id}/balances

Get the current balances for one bank account, each stamped with when it was last fetched.

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes-

Response Balance

FieldTypeNullableDescription
account_idstring (uuid)no-
balancestring (decimal)noDecimal string, 4 decimal places as stored.
currencystringno-
fetched_atstring (date-time)no-

Transactions

GET/v1/accounts/{account_id}/transactions

List an account's transactions, newest first, with cursor pagination.

Parameters

NameInTypeRequiredDescription
account_idpathstring (uuid)yes-
cursorquerystringnoOpaque pagination cursor from the previous response's "next" URL. Newest first; treat transaction ids as the idempotency key when walking the feed.
fromquerystring (date)noOnly transactions with booking_date on or after this date. Strictly YYYY-MM-DD.
toquerystring (date)noOnly transactions with booking_date on or before this date. Strictly YYYY-MM-DD.

Response PaginatedTransactionList (results: Transaction[])

FieldTypeNullableDescription
idstring (uuid)no-
booking_datestring (date)no-
value_datestring (date)no-
amountstring (decimal)noSigned, as the bank reported: negative = outflow.
currencystringno-
descriptionstringno-
counterpartystringyes-
enrichmentTransactionEnrichmentno-
sandboxbooleanno-
upstream_transaction_idstringyesThe transaction id assigned by the BANK itself, when it assigns one -- stable at the bank across fetches, so use it for reconciliation against statements or other tools. Distinct from id (our stable identifier). Nullable.
merchant_category_codestringyesFour-digit card Merchant Category Code, where the bank supplies it (mostly card issuers). Nullable.
bank_transaction_codestringyesISO 20022 bank transaction code (domain-family-subfamily, e.g. PMNT-CCRD-POSD), where the bank supplies it. Nullable.
proprietary_bank_transaction_codestringyesThe bank's own transaction-type code, verbatim (vocabulary varies per bank). The most widely supplied of the code fields. Nullable.
end_to_end_idstringyesPSD2 end-to-end payment identifier, where the bank supplies it. Nullable.
mandate_idstringyesDirect Debit mandate identifier, where the bank supplies it. Useful for grouping recurring payments. Nullable.
entry_referencestringyesThe bank's ledger entry reference, where the bank supplies it. Nullable.

Connections

GET/v1/connections

List the user's bank connections and their status.

Response Connection[]

FieldTypeNullableDescription
idstring (uuid)no-
institutionstringno-
statusstringno-
expires_atstring (date-time)noWhen the underlying bank consent expires; null for connections without consent expiry (e.g. sandbox).
sandboxbooleanno-
GET/v1/connections/{id}

Retrieve a single bank connection by its id.

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes-

Response Connection

FieldTypeNullableDescription
idstring (uuid)no-
institutionstringno-
statusstringno-
expires_atstring (date-time)noWhen the underlying bank consent expires; null for connections without consent expiry (e.g. sandbox).
sandboxbooleanno-

Export

GET/v1/export

Response none

See the schema for the full response body.

Investments

GET/v1/investment-accounts

List the user's connected investment accounts.

Response InvestmentAccount[]

FieldTypeNullableDescription
idintegerno-
namestringno-
numberstringyesMasked/partial account number as the provider supplied it (provider_metadata); null when unavailable.
currencystringyes-
connection_idintegerno-
sandboxbooleanno-
last_holdings_sync_atstring (date-time)noWhen holdings were last successfully synced for this account; null until the first sync.
GET/v1/investment-accounts/{account_id}/activities

List an investment account's activity (trades and cash events), newest first.

Parameters

NameInTypeRequiredDescription
account_idpathintegeryes-
fromquerystring (date)noOnly activities with trade_date on or after this date. Strictly YYYY-MM-DD. Cash-only rows (null trade_date) are excluded when this filter is set.
toquerystring (date)noOnly activities with trade_date on or before this date. Strictly YYYY-MM-DD. Cash-only rows (null trade_date) are excluded when this filter is set.

Response InvestmentActivities (results: InvestmentActivity[])

FieldTypeNullableDescription
idintegerno-
typestringnoProvider activity type (e.g. BUY, SELL, DIVIDEND).
symbolstringnoProvider ticker; "" for cash-only rows.
unitsstring (decimal)noQuantity, Decimal string; null for cash-only rows.
pricestring (decimal)noPer-unit price, Decimal string; null for cash-only rows.
amountstring (decimal)noTotal cash amount, Decimal string; signed as the provider reported.
currencystringno-
trade_datestring (date)noTrade/settlement date; null for cash-only rows.
sandboxbooleanno-
GET/v1/investment-accounts/{account_id}/positions

Get the latest holdings for one investment account, with the snapshot date.

Parameters

NameInTypeRequiredDescription
account_idpathintegeryes-

Response InvestmentPositions

FieldTypeNullableDescription
as_ofstring (date-time)noProvider data timestamp the snapshot reflects; null when no snapshot exists yet.
positionsInvestmentPosition[]no-
GET/v1/investment-connections

List the user's investment connections and their status.

Response InvestmentConnection[]

FieldTypeNullableDescription
idintegerno-
brokerstringnoThe user-facing brokerage name (e.g. "Interactive Brokers"). Never an aggregation provider identity.
statusstringno-
sandboxbooleanno-
last_synced_atstring (date-time)noWhen the most recent successful sync completed; null until the first sync.