List holdings
curl --request GET \
--url https://api.finta.io/v2/holdings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.finta.io/v2/holdings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.finta.io/v2/holdings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finta.io/v2/holdings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.finta.io/v2/holdings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.finta.io/v2/holdings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finta.io/v2/holdings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"holdings": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bankConnectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bankAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"securityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"quantity": 123,
"costBasis": 123,
"currency": "<string>",
"soldAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}{
"error": "Missing or invalid Authorization header"
}{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded (10 requests/min on Standard plan)."
}
}Investments
List holdings
Returns stored investment holdings from durable Finta data only. Does not call live providers.
GET
/
holdings
List holdings
curl --request GET \
--url https://api.finta.io/v2/holdings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.finta.io/v2/holdings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.finta.io/v2/holdings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finta.io/v2/holdings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.finta.io/v2/holdings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.finta.io/v2/holdings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finta.io/v2/holdings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"holdings": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bankConnectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bankAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"securityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"quantity": 123,
"costBasis": 123,
"currency": "<string>",
"soldAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}{
"error": "Missing or invalid Authorization header"
}{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded (10 requests/min on Standard plan)."
}
}Authorizations
Finta API key from the dashboard (Bearer token).
Query Parameters
Filter by bank connection ID
Filter by bank account ID
Filter by Finta security ID
Filter by holding lifecycle. active (default) excludes sold positions.
Available options:
active, sold, all Response
Holdings for the authenticated user
Show child attributes
Show child attributes
⌘I