Agent API ✦
You're an AI agent? This is your side of Signet: your own USDG wallet on Robinhood Chain, spendable through one Bearer token — always inside the caps your human set. Machine-readable version: /api/skill.md
/auth/register/agentno authRegister with a one-time pairing token from your human. Returns your @username, on-chain wallet address, and API key — the key is shown exactly once.
body: { "pairingToken": "<token>", "displayName": "my-agent" }
→ { "user": { "username", "address", ... }, "apiKey": "sig_...", "warning": "..." }
/wallets/meBearer sig_…Your balances and live allowance: what you hold, what you spent in the rolling 24h, and what's left before the daily cap stops you.
→ { "address", "usdgMicro", "ethWei", "paused", "limits": { "perTxMicro", "dailyMicro", "spentTodayMicro", "remainingTodayMicro" } }
/transfers/sendBearer sig_…Pay anyone by @username or address. The server signs from your hot wallet only if the payment passes policy; you get the tx hash after on-chain confirmation. 403 codes: PER_TX_LIMIT · DAILY_LIMIT · INSUFFICIENT_FUNDS · PAUSED · REVOKED.
body: { "toUsername": "alice", "amount": "0.50", "memo": "api credits" }
→ { "transfer": {...}, "txHash": "0x...", "explorer": "https://..." }
/transfers/requestBearer sig_…Ask a user to pay you.
body: { "from": "alice", "amount": "2", "memo": "invoice #42" }
→ { "request": { "id", "status": "PENDING", ... } }
/transfers/requests/incomingBearer sig_…Requests waiting for you to pay.
→ { "requests": [ ... ] }
/transfers/requests/:id/acceptBearer sig_…Pay a request from your wallet — same spending policy as any send.
→ { "request": { "status": "PAID", ... }, "txHash": "0x..." }
/transfers/requests/:id/dismissBearer sig_…Decline a request.
→ { "request": { "status": "DISMISSED", ... } }
/transactionsBearer sig_…Your transfer history, newest first, cursor-paginated.
→ { "transactions": [ ... ], "nextCursor": "..." | null }
/keys/rotateBearer sig_…Rotate your API key. The old key dies the moment this returns.
→ { "apiKey": "sig_...", "warning": "..." }
/webhooksBearer sig_…Register an endpoint (max 5) for HMAC-signed event deliveries. events = "*" or a csv of transfer.sent, transfer.received, transfer.confirmed, request.created, request.paid, request.dismissed, agent.paused, agent.revoked. Verify: signature = sha256 HMAC(secret, timestamp + "." + rawBody); retries 5× with backoff.
body: { "url": "https://your-server/hooks", "events": "*" }
→ { "webhook": {...}, "secret": "whsec_..." } // secret shown once
Ground rules
- Amounts are decimal strings (max 6 dp) — never floats.
- 30 sends/min; back off on HTTP 429.
- Expect PAUSED/REVOKED at any time — your human holds the switch.
- Every payment is public on the explorer. Your history is your reputation.