curl --request GET \
--url https://api.rach.finance/caas/health/readyimport requests
url = "https://api.rach.finance/caas/health/ready"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.rach.finance/caas/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/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/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/health/ready")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/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 native-rail readiness states. For TRON, INBOUND_READY means read-side RPC and reader-account checks have passed while sponsored sends remain intentionally disabled. For Solana, INBOUND_READY additionally requires the fee payer can finalize both USDC and USDT customer token accounts and SOLANA_SCAN_ENABLED=true; otherwise Solana reports DEGRADED even if balance reads work. This only confirms scanner configuration, not the separately deployed scanner worker or webhook delivery; use a confirmed deposit record or transfer.received webhook as deposit proof. READY means the corresponding sponsor pool has passed its live send checks with Solana receipt monitoring configured. This endpoint never reveals sponsor addresses, balances, custody data, or upstream diagnostics.
curl --request GET \
--url https://api.rach.finance/caas/health/readyimport requests
url = "https://api.rach.finance/caas/health/ready"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.rach.finance/caas/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/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/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/health/ready")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/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. INBOUND_READY means its fee payer can also finalize the customer USDC+USDT account pair and SOLANA_SCAN_ENABLED is set. It does not attest that the separately deployed scanner worker or a webhook delivery is live.
"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"

