curl --request GET \
--url https://api.rach.finance/caas/api/health/readyimport requests
url = "https://api.rach.finance/caas/api/health/ready"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.rach.finance/caas/api/health/ready', 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.rach.finance/caas/api/health/ready",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.rach.finance/caas/api/health/ready"
req, _ := http.NewRequest("GET", url, nil)
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.rach.finance/caas/api/health/ready")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/api/health/ready")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"service": "rach-caas",
"solana": "INBOUND_READY",
"status": "UP",
"tron": "INBOUND_READY"
}{
"service": "rach-caas",
"solana": "INBOUND_READY",
"status": "UP",
"tron": "INBOUND_READY"
}Service readiness
Reports the coarse service and TRON-rail readiness state. INBOUND_READY means native TRON read-side RPC and reader-account checks have passed while sponsored sends remain intentionally disabled. It does not certify the separately deployed custody or deposit-scanner workers; use a confirmed deposit record or transfer.received webhook as deposit proof. READY means the sponsor pool has passed its live checks. This endpoint never reveals sponsor addresses, balances, custody data, or upstream diagnostics.
curl --request GET \
--url https://api.rach.finance/caas/api/health/readyimport requests
url = "https://api.rach.finance/caas/api/health/ready"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.rach.finance/caas/api/health/ready', 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.rach.finance/caas/api/health/ready",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.rach.finance/caas/api/health/ready"
req, _ := http.NewRequest("GET", url, nil)
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.rach.finance/caas/api/health/ready")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/api/health/ready")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"service": "rach-caas",
"solana": "INBOUND_READY",
"status": "UP",
"tron": "INBOUND_READY"
}{
"service": "rach-caas",
"solana": "INBOUND_READY",
"status": "UP",
"tron": "INBOUND_READY"
}Response
UP: TRON DISABLED, INBOUND_READY, or READY
"rach-caas"
Solana follows the same vocabulary as Tron and is reported independently: one rail being degraded must not mask the other's state, because they fail for unrelated reasons and are funded separately.
"INBOUND_READY"
"UP"
Tron is DISABLED when the rail is not configured, INBOUND_READY when the native TRON read-side checks pass but sponsored sends remain locked, READY when the sponsor pool has passed its live checks, and MISCONFIGURED or DEGRADED when the rail cannot safely serve its current mode. INBOUND_READY does not attest custody or scanner-worker health.
"INBOUND_READY"

