Get balances
curl --request GET \
--url https://aropay.aro.media/api/v1/balances \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://aropay.aro.media/api/v1/balances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://aropay.aro.media/api/v1/balances"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"ok": true,
"data": {
"balances": [
{
"wallet": {
"id": "ckwlt0001abcd",
"address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
"type": "CUSTODIAL",
"label": "Payouts",
"isPrimary": true,
"createdAt": "2026-08-13T09:30:00.000Z"
},
"eth": {
"amount": "0.05"
},
"normal": {
"token": "AROUSD",
"amount": "890.00"
},
"confidential": {
"token": "cAROUSD",
"amount": "65.00",
"encrypted": false,
"handle": "0x1f8e…"
},
"total": {
"amount": "955.00",
"currency": "USD"
}
}
]
}
}{
"ok": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}{
"ok": false,
"error": {
"code": "account_disabled",
"message": "This account is disabled."
}
}{
"ok": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"ok": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Try again shortly."
}
}{
"ok": false,
"error": {
"code": "internal_error",
"message": "An unexpected error occurred."
}
}Balances
Get balances
Return the balance triple of normal (public stablecoin),
confidential (cAROUSD; decrypted server-side for custodial wallets),
and total, plus gas ETH, for every wallet or one wallet.
Confidential reads involve FHE decryption and are comparatively heavy;
for frequent polling use GET /gas instead.
GET
/
balances
Get balances
curl --request GET \
--url https://aropay.aro.media/api/v1/balances \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://aropay.aro.media/api/v1/balances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://aropay.aro.media/api/v1/balances"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"ok": true,
"data": {
"balances": [
{
"wallet": {
"id": "ckwlt0001abcd",
"address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
"type": "CUSTODIAL",
"label": "Payouts",
"isPrimary": true,
"createdAt": "2026-08-13T09:30:00.000Z"
},
"eth": {
"amount": "0.05"
},
"normal": {
"token": "AROUSD",
"amount": "890.00"
},
"confidential": {
"token": "cAROUSD",
"amount": "65.00",
"encrypted": false,
"handle": "0x1f8e…"
},
"total": {
"amount": "955.00",
"currency": "USD"
}
}
]
}
}{
"ok": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}{
"ok": false,
"error": {
"code": "account_disabled",
"message": "This account is disabled."
}
}{
"ok": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"ok": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Try again shortly."
}
}{
"ok": false,
"error": {
"code": "internal_error",
"message": "An unexpected error occurred."
}
}Authorizations
apiKeyAuthsessionCookie
AroPay API key, sent as Authorization: Bearer aro_sk_…. Created in
the dashboard under Settings → API keys. Takes precedence over a
session cookie when both are present.
Query Parameters
Restrict to a single wallet.