Use the Addresses API to fetch your custodial address_id values. These are required for transfers and balance checks.
Prerequisite: get your account_id and a bearer token
curl --request POST \
--url https://auth.brale.xyz/oauth2/token \
--header 'Authorization: Basic ${BASE_64_OF(client_id:client_secret)}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials
Use Authorization: Bearer ${ACCESS_TOKEN} for the next call.List your addresses
Call GET /accounts/{account_id}/addresses to retrieve custodial and external addresses. Filter for type=internal to get custodial addresses managed by Brale.curl --request GET \
--url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses" \
--header "Authorization: Bearer ${ACCESS_TOKEN}"
Example response (truncated):{
"addresses": [
{
"id": "2MhCCIHulVdXrHiEuQDJvnKbSkl",
"name": "Custodial",
"status": "active",
"type": "internal",
"address": "0xB2952EDba91FeAeaDBeCC4030203367A5B9b4701",
"transfer_types": [
"avalanche",
"ethereum",
"base",
"polygon",
"solana"
]
}
// ...
]
}
Pick the right address_id
- Use
id from an entry with type=internal for onchain/offchain transfers and balance checks.
- Choose an address that supports the
transfer_type you need (e.g., base, solana, ethereum).
- Keep this
address_id for subsequent calls (e.g., transfers, balances).
For balances, pair the address_id with both transfer_type and value_type in GET /accounts/{account_id}/addresses/{address_id}/balance.