Skip to main content

On-Chain Query Endpoints

Public endpoints that query the on-chain referral contracts. No authentication required.


User On-Chain Rebate Info

Read the user's complete rebate status from the ReferralRebate contract.

GET /referral/on-chain/user-rebate/:address

Path Parameters

ParameterTypeDescription
addressstringEthereum address (0x format, 42 characters)

Response

{
"address": "0x29f721b203a9fc9c5dde35a739d8b8e0e4605489",
"claimed_usd": "0",
"nonce": 0,
"referral_code": "",
"referrer": "0x0000000000000000000000000000000000000000",
"tier_level": 0,
"tier_name": "Starter"
}
FieldTypeDescription
addressstringUser address (lowercase)
claimed_usdstringTotal claimed amount on-chain (USDT, 6-decimal string)
nonceuint64Current claim nonce (increments after each claim)
referral_codestringBound referral code (bytes32 decoded)
referrerstringReferrer address
tier_leveluint8Tier number (0=Starter … 4=Diamond)
tier_namestringTier name

Error Codes

HTTPCodeDescription
400INVALID_ADDRESSAddress format is invalid
500CHAIN_ERROROn-chain query failed

Trader On-Chain Referral Info

Read the trader's referral configuration (rebate BPS) from the ReferralRebate contract.

GET /referral/on-chain/referral-info/:address

Path Parameters

ParameterTypeDescription
addressstringEthereum address (0x format)

Response

{
"address": "0x29f721b203a9fc9c5dde35a739d8b8e0e4605489",
"code": "",
"referrer": "0x0000000000000000000000000000000000000000",
"total_rebate_bps": 0,
"trader_discount_bps": 0,
"affiliate_reward_bps": 0
}
FieldTypeDescription
codestringReferral code (bytes32 decoded)
referrerstringReferrer address
total_rebate_bpsuint16Total rebate basis points (1 bps = 0.01%)
trader_discount_bpsuint16Fee discount for the trader (bps)
affiliate_reward_bpsuint16Reward for the referrer (bps)

Error Codes

HTTPCodeDescription
400INVALID_ADDRESSAddress format is invalid
500CHAIN_ERROROn-chain query failed

On-Chain Claimed Amount

Query the total amount a user has claimed on-chain.

GET /referral/on-chain/claimed/:address

Path Parameters

ParameterTypeDescription
addressstringEthereum address (0x format)

Response

{
"address": "0x29f721b203a9fc9c5dde35a739d8b8e0e4605489",
"claimed_usd": "0"
}
FieldTypeDescription
addressstringUser address
claimed_usdstringTotal claimed amount (USDT)

Error Codes

HTTPCodeDescription
400INVALID_ADDRESSAddress format is invalid
500CHAIN_ERROROn-chain query failed

Operator Status

Check the backend signer address and its operator status in the contract. Useful for diagnosing on-chain signing service health.

GET /referral/on-chain/operator-status

Response

{
"operator_address": "0x...",
"is_operator": true,
"contract_address": "0x..."
}
FieldTypeDescription
operator_addressstringBackend signer's Ethereum address
is_operatorboolWhether this address is a contract operator (false means batchSyncRebates will fail)
contract_addressstringReferralRebate contract address

Code Examples

Python

import requests

BASE_URL = "https://api.ztdx.io"
address = "0x29f721b203a9fc9c5dde35a739d8b8e0e4605489"

# 1. User on-chain rebate info
resp = requests.get(f"{BASE_URL}/referral/on-chain/user-rebate/{address}")
data = resp.json()
print(f"Tier: {data['tier_name']} (Level {data['tier_level']}), Claimed: {data['claimed_usd']}")

# 2. Trader referral info
resp = requests.get(f"{BASE_URL}/referral/on-chain/referral-info/{address}")
data = resp.json()
print(f"Code: {data['code']}, Referrer: {data['referrer']}")
print(f"Rebate BPS: {data['total_rebate_bps']}, Discount: {data['trader_discount_bps']}, Reward: {data['affiliate_reward_bps']}")

# 3. On-chain claimed amount
resp = requests.get(f"{BASE_URL}/referral/on-chain/claimed/{address}")
data = resp.json()
print(f"Total claimed on-chain: {data['claimed_usd']} USDT")

# 4. Operator status
resp = requests.get(f"{BASE_URL}/referral/on-chain/operator-status")
data = resp.json()
print(f"Operator: {data['operator_address']}, Active: {data['is_operator']}")