curl --request GET \
--url https://api.rheon.io/v1/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rheon.io/v1/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rheon.io/v1/config', 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.rheon.io/v1/config",
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.rheon.io/v1/config"
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.rheon.io/v1/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rheon.io/v1/config")
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_body{
"environment": "sandbox",
"products": [
"deposits",
"cards"
],
"maxExecutionUsd": null,
"crypto": {
"chains": [
{
"id": 42161,
"name": "Arbitrum One",
"source": true,
"destination": true,
"explorerTxUrl": "https://arbiscan.io/tx/",
"tokens": [
{
"symbol": "USDC",
"name": "USD Coin",
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"decimals": 6
}
]
}
]
},
"card": {
"cryptoCurrency": "ETH",
"network": "arbitrum"
},
"bank": {
"fiatCurrency": "EUR",
"fiatRail": "bank_sepa",
"cryptoCurrency": "USDC",
"network": "base-sepolia"
},
"virtualAccounts": {
"fiatCurrency": "EUR",
"readBack": true
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}What this key may use
One section per product - crypto (the catalogue of chains and tokens, narrowed to the calling key), card, bank, virtualAccounts - plus the key’s own products and maxExecutionUsd. Call it first and build your corridor list from it instead of keeping a copy. A product section is present only when that vertical is configured on this deployment; whether YOUR key may call it is products.
curl --request GET \
--url https://api.rheon.io/v1/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rheon.io/v1/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rheon.io/v1/config', 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.rheon.io/v1/config",
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.rheon.io/v1/config"
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.rheon.io/v1/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rheon.io/v1/config")
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_body{
"environment": "sandbox",
"products": [
"deposits",
"cards"
],
"maxExecutionUsd": null,
"crypto": {
"chains": [
{
"id": 42161,
"name": "Arbitrum One",
"source": true,
"destination": true,
"explorerTxUrl": "https://arbiscan.io/tx/",
"tokens": [
{
"symbol": "USDC",
"name": "USD Coin",
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"decimals": 6
}
]
}
]
},
"card": {
"cryptoCurrency": "ETH",
"network": "arbitrum"
},
"bank": {
"fiatCurrency": "EUR",
"fiatRail": "bank_sepa",
"cryptoCurrency": "USDC",
"network": "base-sepolia"
},
"virtualAccounts": {
"fiatCurrency": "EUR",
"readBack": true
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}{
"environment": "sandbox",
"error": {
"code": "invalid_request",
"message": "amount must be a decimal string of the token's smallest unit.",
"fields": {
"applicantInfo.nationality": "iso3166_1_alpha2"
}
}
}Authorizations
Your API key, issued by us and shown once at creation.
Response
What this key may use, by product.
What this key may use and how each product is configured here: the key's products and ceiling, then one section per product - crypto (the catalogue narrowed to the key), card, bank, virtualAccounts. A product section is present only when that vertical is configured on this deployment; presence says nothing about the key's permission (read products for that).
Which environment answered. sandbox: at least one money upstream is the provider's sandbox - no real money moves there, and the card corridor is the sandbox's asset (read GET /v1/config), not the documented production one. production: every configured upstream is real. Derived from the configured upstream hosts at boot, never a flag.
sandbox, production "sandbox"
The products THIS key may call, exactly as granted: deposits (the crypto product), cards, bank, virtual-accounts. A product not listed answers 403 permission_denied on its endpoints. Keys issued before per-product permissions carry deposits only.
deposits, cards, bank, virtual-accounts ["deposits", "cards"]
This key's execution ceiling: the largest transfer it may BUILD, in USD (the catalogue is USD-pegged stablecoins). null means no ceiling. Quoting is never capped; over it, /v1/deposit/transaction answers 403 execution_capped.
0 < x <= 9007199254740991null
The crypto deposit product: the catalogue narrowed to the calling key.
Show child attributes
Show child attributes
The configured card corridor. Absent when this deployment has no card vertical configured (the /v1/card/* lookups answer 503 not_configured there).
Show child attributes
Show child attributes
The configured bank corridor. Absent when this deployment has no bank vertical configured.
Show child attributes
Show child attributes
The virtual-account product. Absent when this deployment has no bank vertical configured (virtual accounts open on the bank corridor).
Show child attributes
Show child attributes