๐ก
TALLY SIGNAL
x402A paywalled market intelligence endpoint. Requires a funded Tally session wallet to access. No API keys, no accounts โ just a card tap.
WITHOUT SESSION HEADER
GET /api/signal HTTP/1.1
HTTP/1.1 402 Payment Required
X-Payment-Required: tally
X-Payment-Amount: 0.5
X-Payment-Currency: USDC
{
"error": "payment_required",
"amount": 0.5,
"currency": "USDC"
}WITH FUNDED SESSION HEADER
GET /api/signal HTTP/1.1
X-Tally-Session: BGz5Hfe1...pZT2z3cr
HTTP/1.1 200 OK
{
"ok": true,
"signal": {
"asset": "SOL/USDC",
"signal": "BULLISH",
"confidence": "74%",
"entry": "$144.57",
"target": "$152.30 (+5.3%)",
"stop_loss": "$141.90 (-1.9%)",
"timeframe": "4H",
"basis": {
"structure": "Price trading above 4H 200 EMA",
"liquidity": "Sweep of equal lows confirmed",
"orderblock": "Unmitigated bullish OB at entry zone",
"rr": "1 : 2.8"
}
}
}HOW IT WORKS
01
Agent calls GET /api/signal โ no header
Server returns 402 + X-Payment-Required: tally
02
Agent calls request_with_payment(url)
Pauses, generates Telegram notification with deep link
03
User receives notification on phone
Opens Tally app, taps bank card to authorize
04
Tally broadcasts USDC transfer on-chain
Session wallet is funded within seconds
05
Agent retries with X-Tally-Session header
Server verifies on-chain balance, returns signal
06
Agent calls return_funds()
Remaining USDC swept back to master vault
AGENT CODE (Python)
from warm_vault_auth import request_with_payment
result = request_with_payment(
url="https://tally-signal.vercel.app/api/signal",
amount_usdc=1.0,
task_description="Fetch SOL/USDC market signal",
return_funds_after=True, # sweeps remaining USDC back to vault
)
if result["ok"]:
signal = result["data"]["signal"]
print(f"Signal: {signal['signal']} @ {signal['entry']}")
print(f"Target: {signal['target']} Stop: {signal['stop_loss']}")TRY IT
No session (expect 402):
curl https://tally-signal.vercel.app/api/signalWith a funded session wallet:
curl -H "X-Tally-Session: YOUR_PUBKEY" https://tally-signal.vercel.app/api/signal