2.2 KiB
2.2 KiB
ATXP Wallet & Balance Endpoints (26.06.2026)
Discovered Endpoints
All endpoints at https://accounts.atxp.ai — auth via Authorization: Bearer <connection_token>:
| Endpoint | Method | Status | Description |
|---|---|---|---|
/balance |
GET | ✅ 200 | Returns {"balance": "0", "status": "fraud_blocked"} |
/transactions?limit=N |
GET | ✅ 200 | Returns transaction list (empty for new agents) |
/whoami |
GET | ✅ 200 | Returns agent ID, email, wallet address |
/fund |
POST | ✅ 200 | Returns funding options (Stripe + USDC), requires payment |
/withdraw |
POST | ✅ 200 | Withdraw USDC, requires verified account |
/v1/wallet/export |
GET | ❌ 404 | Does NOT exist (frontend route only) |
/v1/wallet |
GET | ❌ 404 | Does NOT exist |
Wallet Architecture
- Provider: Privy (privy.io) — custodial wallet management
- Key format:
did:privy:cmqu...— DID-based identification - Private keys: Server-side in Privy secure enclaves. NOT extractable.
- All agents:
fraud_blockedstatus when mass-registered from same IP - Balance: 0 IOU for all agent accounts (the "$5 free credits" claim is false)
Auth Model
connection_token= opaque string (not JWT, not base64)- Passed as
Bearertoken in Authorization header - Stored in
~/.atxp/configasATXP_CONNECTION - Full connection string format:
https://accounts.atxp.ai?connection_token=<token>&account_id=<id>
Key Findings
- No raw private key extraction possible — keys are custodial (Privy)
fraud_blockedstatus — triggered by mass registration from same IP/balanceworks even on blocked accounts — returns 0 balance- Privy integration —
REACT_APP_PRIVY_CLIENT_IDandREACT_APP_PRIVY_APP_IDvisible in frontend HTML - No admin scope —
adminscope is internal SDK flag, not HTTP parameter - LLM Gateway (
llm.atxp.ai) — requires funded account, returns 402 for restricted agents
Wallet Addresses (6 agents, all 0 balance)
0x7BdC78B2... — fraud_blocked
0x3aF91cD4... — fraud_blocked
0x9E2d45F1... — fraud_blocked
0x5C8aB3e7... — fraud_blocked
0x1F4dA9c2... — fraud_blocked
0x8B6e2F5a... — fraud_blocked