curl --request GET \
--url https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance', 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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance",
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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance"
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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance")
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_bodyGet an address balance
Returns the balance of a custodial wallet address or a Plaid-linked bank address. Provide transfer_type and value_type as query parameters.
curl --request GET \
--url https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance', 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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance",
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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance"
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.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brale.xyz/accounts/{account_id}/addresses/{address_id}/balance")
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_bodyQuery parameters by address type
Bothtransfer_type and value_type are required.
| Address type | transfer_type | value_type |
|---|---|---|
Custodial wallet (type=internal) | Blockchain network, such as base | Token ticker, such as SBC |
| Plaid-linked bank address | ach_debit | USD |
Plaid-linked bank balances
curl --request GET \
--url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses/${ADDRESS_ID}/balance?transfer_type=ach_debit&value_type=USD" \
--header "Authorization: Bearer ${AUTH_TOKEN}"
{
"address": {
"id": "34yknnMShvDbSW6tQg4HLlN41QO",
"address": null,
"account_number": "****1234"
},
"balance": {
"value": "1250.42",
"currency": "USD"
},
"value_type": "USD",
"transfer_type": "ach_debit"
}
- Brale uses Plaid’s available balance when Plaid supplies it. Otherwise, Brale uses the current balance.
- Successful reads may be cached for up to 30 seconds.
- The balance is a point-in-time snapshot. It does not guarantee that an ACH debit will settle.
- Brale never returns the full bank account number.
account_numberis masked. - Only Plaid-linked USD bank addresses support balance lookup. Bank addresses created through Direct bank entry do not.
Errors
| Status | type | Meaning |
|---|---|---|
400 | invalid_address | A bank balance request did not use transfer_type=ach_debit. |
400 | invalid_value_type | A bank balance request did not use value_type=USD. |
400 | balance_not_supported_for_address | The address is not Plaid-linked, or the currency is not supported. |
400 | plaid_error (code: plaid_item_login_required) | The user must relink the bank account through Plaid. |
503 | service_unavailable | Plaid returned an error or balance data is unavailable. |
service_unavailable does not mean the balance is zero or insufficient.Authorizations
Use the Bearer token returned from the Auth endpoint via OAuth2 client_credentials flow. Include the token in the "Authorization: Bearer " header.
Path Parameters
The ID of the account
^[a-zA-Z0-9]{26}$"2VcUIIsgARwVbEGlIYbhg6fGG57"
The ID of the address
^[a-zA-Z0-9]{26}$"2VcUIIsgARwVbEGlIYbhg6fGG57"
Query Parameters
Blockchain network for wallets (for example, solana, base, ethereum), or ach_debit for a Plaid-linked bank.
Token ticker for wallets (for example, SBC, USDC), or USD for a Plaid-linked bank.
Response
The address details and balance info
Balance of one token on one chain for a custodial wallet, or the USD balance of a Plaid-linked bank address.
Show child attributes
Show child attributes
Monetary value with explicit currency
Show child attributes
Show child attributes
Blockchain network for wallets (for example, solana or base), or ach_debit for a Plaid-linked bank.
"solana"
Token ticker for wallets (for example, SBC), or USD for a Plaid-linked bank.
"SBC"
Was this page helpful?