curl --request POST \
--url https://api.range.org/v2/accounts/refresh \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"account_ids": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
]
}
'import requests
url = "https://api.range.org/v2/accounts/refresh"
payload = { "account_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({account_ids: ['a1b2c3d4-e5f6-7890-abcd-ef1234567890']})
};
fetch('https://api.range.org/v2/accounts/refresh', 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.range.org/v2/accounts/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_ids' => [
'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v2/accounts/refresh"
payload := strings.NewReader("{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.range.org/v2/accounts/refresh")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/accounts/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"refreshed": 12,
"failed": 1,
"skipped": 2,
"failures": [
{
"account_id": "account-uuid-1",
"label": "Kraken treasury",
"reason": "Provider timed out",
"reason_code": "provider_timeout",
"ref": "a3f91c7e"
}
]
}Refresh account balances
Request a balance refresh for selected workspace accounts or the whole workspace.
curl --request POST \
--url https://api.range.org/v2/accounts/refresh \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"account_ids": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
]
}
'import requests
url = "https://api.range.org/v2/accounts/refresh"
payload = { "account_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({account_ids: ['a1b2c3d4-e5f6-7890-abcd-ef1234567890']})
};
fetch('https://api.range.org/v2/accounts/refresh', 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.range.org/v2/accounts/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_ids' => [
'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v2/accounts/refresh"
payload := strings.NewReader("{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.range.org/v2/accounts/refresh")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/accounts/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_ids\": [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"refreshed": 12,
"failed": 1,
"skipped": 2,
"failures": [
{
"account_id": "account-uuid-1",
"label": "Kraken treasury",
"reason": "Provider timed out",
"reason_code": "provider_timeout",
"ref": "a3f91c7e"
}
]
}Authorizations
Authorization method required to allow user to access the api endpoints.
Body
Limit the action to these workspace accounts. Omit to cover every account in the workspace. Every id must belong to the caller workspace or the request fails with 404.
["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
Response
Number of accounts whose balances were refreshed.
12
Number of accounts whose balance refresh failed (e.g. provider error).
1
Number of accounts whose holdings could not be read at all — their chain has no readable balance source, or their connection's provider is no longer supported. Neither refreshed nor failed, since there is nothing to retry and nothing actionable to report. refreshed + failed + skipped is the total number of accounts this pass considered. Additive field (RNG-5758); clients reading only the existing counts keep working unmodified.
2
Per-account detail, one entry per failed account; its length always matches failed. Always present — an empty array when nothing failed. Additive field, so older clients that only read the counts keep working.
Show child attributes
Show child attributes
Was this page helpful?