The REST API is in beta. This endpoint’s response shape may change.
Request
Headers
Trialing customers retain full API access, including brokerage endpoints, regardless of trial plan.
Query parameters
Use the List Accounts endpoint to get account IDs. Mixing a brokerage
accountId into the request fails the entire request, not per-account. To tell banking and brokerage accounts apart, join each account’s connectionId to List Connections and check the connection’s category; route brokerage IDs to /v1/holdings.Response
See Caching for provider-specific freshness, fallback, purge, and opt-out behaviour. Fiskil’s additive freshness fields prevent cached balances from being mistaken for new live observations. Results are not guaranteed to match the input order; join byaccountId.
Balance object
When Redbark caching is disabled, Fiskil live balance attempts are limited to once per account every 15 minutes. An account inside that limit comes back in the list with
freshness: "unavailable", null balances and retryAfterSec, the seconds until a live read is allowed again. The same applies when the account was not reached before the request ran out of time, or its connection is in a cooldown, deferred or temporarily unreachable. A call that runs out of time returns the accounts it did not reach this way, so merge results across calls. The other accounts in the call are returned normally. This endpoint never returns balance_refresh_limited.
Error responses
Errors use the standard envelope{ "error": { "message": string, "code"?: string, "details"?: string[] } }. The optional code field is set for the structured cases below — clients should branch on code rather than parsing message.
Example error body:

