cURL
curl --request GET \
--url https://external.vin.gs/api/v1/portfolio \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://external.vin.gs/api/v1/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://external.vin.gs/api/v1/portfolio"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://external.vin.gs/api/v1/portfolio"
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))
}{
"total": {
"amount_cents": 123,
"currency": "<string>"
},
"items": [
{
"id": "<string>",
"total": {
"amount_cents": 123,
"currency": "<string>"
},
"currency": "<string>",
"accounts": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>",
"subtype": "<string>",
"balance_cents": 123,
"currency": "<string>",
"updated_at": "<string>",
"has_holdings": true
}
],
"bank_name": "<string>",
"needs_update": true,
"new_accounts_available": true
}
],
"wallets": [
{}
],
"paper_accounts": [
{}
],
"securitiesByItem": {}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}Portfolio
Get v1portfolio
GET
/
v1
/
portfolio
cURL
curl --request GET \
--url https://external.vin.gs/api/v1/portfolio \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://external.vin.gs/api/v1/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://external.vin.gs/api/v1/portfolio"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://external.vin.gs/api/v1/portfolio"
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))
}{
"total": {
"amount_cents": 123,
"currency": "<string>"
},
"items": [
{
"id": "<string>",
"total": {
"amount_cents": 123,
"currency": "<string>"
},
"currency": "<string>",
"accounts": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>",
"subtype": "<string>",
"balance_cents": 123,
"currency": "<string>",
"updated_at": "<string>",
"has_holdings": true
}
],
"bank_name": "<string>",
"needs_update": true,
"new_accounts_available": true
}
],
"wallets": [
{}
],
"paper_accounts": [
{}
],
"securitiesByItem": {}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing bearer token",
"details": null,
"requestId": "<string>"
}
}Authorizations
Vings OAuth access token or personal access token (vng_pat_…). Use Authorization: Bearer ….
Response
Redacted portfolio snapshot (no Plaid secrets; wallets and securities may use generic object maps)
⌘I