New Recipes: multiple X Layer endpoints chained into one call and one x402 payment. A full market read for a cent or two. Explore
Otto AI OKX
Live on X Layer · Chain 196 · EIP155:196

One HTTP call.
Autonomous DeFi.

Otto X is an agent-native DeFi platform. AI agents can swap, bridge, and invest on your behalf with a single wallet signature. No seed-phrase exposure. No gas management. No intermediate custody by Otto. The infrastructure composes three existing primitives — x402 + OKX Onchain OS + EIP-3009 — and the user feels magic.

65
paid endpoints live
4
Base · Arb · Polygon · X Layer
1
signature for full auto-exec
0
custody by Otto

We chain the endpoints —
one payment, one dose of alpha.

Recipes chain multiple of Otto's live X Layer endpoints into one high-signal report. You sign once — Otto runs the chain server-side and returns one answer.

ONE CALL YOU SIGN ONCE security markets liquidity sentiment yield OTTO RUNS THE STEPS SERVER-SIDE ONE COMPOSED RESULT ONE CALL YOU SIGN ONCE security markets liquidity sentiment yield OTTO RUNS THE STEPS SERVER-SIDE ONE COMPOSED RESULT

Five steps → one HTTP call.

Traditional agent-driven DeFi is a five-step gauntlet of approvals, gas estimations, and failure modes. Otto X collapses it into a single request with one wallet confirmation.

Before · Legacy flow

Agent tries to swap 10 USDC → WETH for you

1
Expose your private key to the agent somewhere it can reach. Immediate fail.
2
Approve the token to the router. Separate tx, user pays gas.
3
Submit the swap. Another gas fee. Agent or user signs.
4
Track the tx, handle reverts, monitor slippage, watch for frontrunning.
5
Every approval stays open forever. Every step is a failure mode.
After · Otto X

Same agent. Same swap. One HTTP call.

1
Bootstrap (once per payer). Your first paid /auto-* call provisions your TEE sub-wallet and returns its address in the 409 funds_required response. Cache it — same payer, same sub-wallet, forever. No provisioning without a real payment behind it.
2
One wallet confirmation. Sign x402 fee + an EIP-3009 TransferWithAuthorization note — exact amount, short time window, to = your sub-wallet. Modern wallets batch both into one prompt.
3
POST /auto-swap. Server pulls your USDC → your sub-wallet direct, tops up dust gas, executes via OKX DEX. HTTP 200 with every tx hash.

Three layers. Zero Otto-held funds.

The key insight: principal moves user → user's own sub-wallet, never through Otto. Otto pays gas + orchestrates, nothing more. You can empty the sub-wallet at any time via the escape hatch.

1
Your wallet
Holds your USDC / USDT principal. Your seed phrase, your keys — Otto cannot see or touch it. You sign EIP-3009 authorizations off-chain from here.
Self-custody · EOA / hardware wallet
2
Your Otto X sub-wallet
TEE-custodied inside OKX Onchain OS. The key never leaves the Trusted Execution Environment — neither Otto nor OKX staff can export it. Receives principal, executes ops, holds residuals.
TEE · idempotent · deterministic per payer
3
Otto X operator
Pays gas to broadcast your EIP-3009 authorization and dust gas top-ups. Never takes custody of your principal. The transfer is user → sub-wallet direct.
Hot wallet · gas-only · orchestration
Signer binding. principalAuth.from must equal the x402 payer. No impersonation.
Destination locked. principalAuth.to must equal your own sub-wallet. No drains.
Amount + time bound. Exact value, specific time window. No open allowances.
Replay protection. Nonce uniqueness enforced in DB + on-chain authorizationState.
Protocol allowlist. Sub-wallets can only touch Aave V3, Lido, Compound V3, Morpho on vetted chains.
Escape hatch. POST /auto-withdraw sweeps sub-wallet funds to any address, anytime.
Idempotency. Every op has a (payer, op_type, body_hash) key. Safe to retry.
409 fallback. Clients without EIP-3009 support still get a working two-step funds-required path.

Feel what your agent just learned.

Every endpoint below is a new skill an AI agent can earn the right to use for a fraction of a cent. Connect a wallet, sign one tiny USDT0 payment on X Layer, and watch the superpower light up in real time — live news, KOL sentiment, on-chain research, a TEE-custodied sub-wallet, even a DEX swap — all behind a single signature.

Wallet
Not connected
Network
USDT0 balance (X Layer)
Need USDT0 on X Layer? Bridge from any chain via OKX Bridge, or deposit from your OKX exchange account. Payments are ~$0.001–$0.01 each; a few dollars goes a long way.
Payment
$0.001 USDT0 (once)

Swap USDT0 → any X Layer asset.

Two prompts in your wallet, one HTTP call. The first signs the x402 fee — $0.05 USDT0 to Otto. The second signs an EIP-3009 principalAuth note that pulls your USDT0 principal directly into your TEE sub-wallet — never through Otto's hands. The server tops up dust gas, executes via OKX DEX, and returns every tx hash. Connect above first.

Wallet
Connect above ↑
Sub-wallet (X Layer)
We look up your sub-wallet via free /sub-wallet/preview as soon as you connect. If you don't have one yet, the panel above can provision it for $0.01 (select GET /sub-wallet and Pay & call).
USDT0 — X Layer's EIP-3009 principal asset
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total

Yield Copilot — put idle stablecoins to work.

Same one-call shape as the swap above. Sign the $0.05 x402 fee, sign an EIP-3009 principalAuth note that lands your USDT0 in your TEE sub-wallet — never through Otto's hands — and POST /yield-copilot. Otto picks the highest-APY Otto-allowlisted lending venue for that stablecoin on that chain (Aave V3 / Compound V3 / Morpho — Base, Arbitrum, Optimism, Ethereum, X Layer), supplies it, and hands back a before/after card. Connect above first.

Wallet
Connect above ↑
Sub-wallet (X Layer)
Same TEE sub-wallet as the swap panel. No sub-wallet yet? Provision it for $0.01 in the pay panel above (select GET /sub-wallet and Pay & call). Otto never pools or rehypothecates your funds — withdraw the position anytime via POST /auto-defi-withdraw, or sweep the whole sub-wallet via POST /auto-withdraw.
X Layer · USDT0 — the EIP-3009 principal asset on chain 196 (→ Aave V3 X Layer)
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total

Yield Watch — Otto rebalances for you.

One signature, 30 days of autonomous rebalancing. Otto watches your Aave V3 / Compound V3 positions across Base, Arbitrum, Optimism, Ethereum, and X Layer — when a better venue sustains a meaningful APY gap, Otto moves your funds. You stay in control: cap the maximum per move, cap the number of moves, pause or revoke any time. The delegation is scoped, on-chain-verifiable, and the worker only signs from your TEE sub-wallet (never from your external wallet).

Wallet
Connect above ↑
Sub-wallet
Same TEE sub-wallet as Swap + Yield Copilot. Yield Watch operates ON your sub-wallet's existing positions (deposit via /yield-copilot first if you haven't yet). Otto's worker runs hourly; auto-mode broadcasts only fire when a hysteresis-confirmed APY gap clears your signed thresholds.
Notify only. Otto Telegrams you when there's a better venue. You click the suggested two-call switch yourself. No on-chain delegation, no spending limits — just alerts.
You'll sign
Just a POST — no signature needed for Notify mode.
Pause / revoke an existing subscription
Auto mode requires a signed revoke (EIP-712); notify mode just sends a DELETE.

Free endpoints, right here.

All three below run against the live Otto X server — no API key, no payment, just click. Perfect for sanity-checking the service is alive before you wire up a paid call.

Look up a sub-wallet

Free · GET /sub-wallet/preview

Read-only DB lookup. Paste any EVM address to see whether Otto has already provisioned a TEE sub-wallet for it. Nothing is provisioned here — provisioning is tied to a real paid /auto-* call, not a button click.

Service health

Free · GET /health

One-click ping. Returns service name, chain, x402 network, and a timestamp. Useful as a canary during stress tests.

X Layer curated tokens

Free · GET /tokens

The on-the-house token registry Otto X uses for swap quoting on X Layer. Small, curated list with the native assets and stablecoins.

65 endpoints. One payment standard.

Every paid endpoint honors x402 Payment Required. Send a request without payment, receive a 402 with exact price + payment address. Pay, retry, get data. No API keys.

GET
/vet-token?address=0x...
Token Safety & Tradeability Vetting — one-call X Layer token check: GoPlus contract security (honeypot, tax, mint/ownership flags) + holder concentration + live OKX DEX tradeability & price. Refuses (unpaid) if the security scan is empty.
$0.01
GET
/token-deep-dive?symbol=BTC
Token Deep-Dive — full-picture briefing for a major token: price & market cap + contract security + derivatives funding/OI + market KOL context + OKX DEX price. Unresolved legs labelled unavailable, never faked. Refuses (unpaid) if core token details are missing.
$0.05
GET
/rwa-pulse
RWA Market Pulse — a pulse on the real-world-asset market: TradFi macro (indices, VIX, DXY, yields, commodities) + live tokenized-RWA perps (equities like AAPL/TSLA/NVDA, commodities, FX) from Hyperliquid + crypto market news. Live legs only; any reading that would fabricate is omitted and named. Refuses (unpaid) if the macro core is empty.
$0.05
POST
/auto-swap
Execute an in-chain swap on your Otto X sub-wallet via OKX DEX aggregator
$0.05
POST
/auto-bridge
Execute a cross-chain bridge from your Otto X sub-wallet (17 chains supported)
$0.05
POST
/auto-defi-invest
Deposit into a whitelisted DeFi protocol (Aave V3, Lido, Compound V3, Morpho) from your Otto X sub-wallet
$0.05
POST
/auto-defi-withdraw
Redeem an active DeFi position from your Otto X sub-wallet
$0.05
POST
/yield-copilot
One-call yield: deploy your idle stablecoins into the highest-APY Otto-allowlisted lending venue (Aave V3 / Compound V3 / Morpho) on Base, Arbitrum, Optimism, Ethereum, or X Layer — accepts principalAuth; returns a before/after APY + projected yield artifact
$0.05
POST
/auto-withdraw
Escape hatch — sweep funds from your Otto X sub-wallet to any external address
$0.05
GET
/sub-wallet
Resolve (or auto-provision) your Otto X sub-wallet — bound to the verified x402 payer
$0.01
GET
/idle-capital
Detect undeployed tokens that could earn yield
$0.001
GET
/yield-recommendations
Personalized yield vault recommendations
$0.001
POST
/yield-watch
Register or update a yield-watch subscription. mode=auto: signed EIP-712 30-day delegation authorizing Otto to auto-rebalance between Aave V3 and Compound V3 (Morpho ships v1.1). mode=notify: free observation alerts only.
$0.001
DELETE
/yield-watch
Revoke an active yield-watch subscription — requires a signed YieldWatchRevocation typed-data note (different primaryType from the registration delegation)
$0.001
GET
/yield-watch
Read the caller's current yield-watch subscription state (mode, scope, policy knobs, move counter, next nonce)
$0.001
GET
/yield-watch/audit
Read the caller's yield-watch audit trail — registrations, revocations, observation starts/resets, auto-move attempts/results
$0.001
GET
/crypto-news
Importance-ranked crypto headlines with per-article source links and publish times, plus a sentiment-scored market brief. Regenerated hourly; meta carries the snapshot's age and a fresh/stale verdict.
$0.001
GET
/token-alpha?symbol=BTC
Premium token intelligence — news, Twitter sentiment, futures data
$0.001
GET
/kol-sentiment
Aggregated sentiment from top 50 crypto KOLs
$0.003
GET
/trending-altcoins
Top 3 trending altcoins with analysis
$0.001
GET
/mega-report
Alpha & Intel Report — comprehensive daily market briefing — headlines, sentiment, KOL alpha, trending, yield
$0.05
GET
/token-security?address=0x...
Token contract security audit — honeypot detection, rug pull risk, tax analysis
$0.001
GET
/funding-rates
Derivatives dashboard — funding rates, open interest, long/short ratios
$0.001
GET
/defi-analytics
DeFi protocol analytics — TVL rankings, chain breakdown, gainers/losers
$0.001
GET
/filtered-news?topic=DeFi
AI-filtered news by topic (DeFi, NFTs, Layer2, etc.)
$0.001
GET
/twitter-summary
Curated crypto Twitter/X digest from top KOLs
$0.001
GET
/token-details?symbol=BTC
Token price, market cap, 24h change
$0.001
GET
/yield-alpha
Top DeFi yield opportunities across chains
$0.001
GET
/tradfi-data
TradFi macro intelligence — indices, VIX, DXY, yields, commodities
$0.001
GET
/stablecoin-watch
Is USDC/USDT/DAI holding its $1 peg, and is stablecoin supply growing or shrinking (risk-on vs risk-off)? Live peg deviation (bps), circulating supply + 1d/7d/30d flow, market dominance and chain spread for the top 30 USD stablecoins, plus downside depeg alerts for any coin trading >0.5% below peg. Sourced from DefiLlama (public). Served from a cached snapshot while fresh (≤1h) and regenerated on demand when a read finds it stale.
$0.001
GET
/protocol-revenue-leaders
Which protocols earn the most — and who is accelerating? Top 30 DeFi protocols by 24h fees, each with revenue, take-rate (the cut the protocol keeps vs fees users pay), 7d/30d trend and category, plus total DeFi fees & revenue. A fundamentals screen (fee/revenue economics), distinct from TVL. Sourced from DefiLlama (public). Served from a cached snapshot while fresh (DefiLlama fees are daily aggregates) and regenerated on demand when a read find…
$0.001
GET
/market-risk
Composite crypto market-stress digest: a 0-100 score (low/moderate/elevated/high) blended from global USD-stablecoin depeg health (DefiLlama) and Base on-chain DEX exit-liquidity, with a per-leg breakdown and an AI risk line. Both legs required for a score. Every read older than an hour regenerates the score inline. Fresh-or-refuse: if a current score can't be computed, the call refuses (uncharged) rather than return an older reading.
$0.002
GET
/news-recaps
A tight 4-6 sentence crypto market recap an agent can ingest whole: overall direction and why, the 2-3 developments that matter, and anything notable on the top-10 board — distilled hourly from the same live news engine behind Otto's top-ranked /crypto-news feed. The one-paragraph state-of-market; buy /crypto-news when you want the full report.
$0.003
GET
/fx-rates
Live + reference foreign-exchange (forex) rates, base USD. LIVE near-real-time mid quotes for the 12 most-traded currencies (EUR, GBP, JPY, CHF, CAD, AUD, NZD, CNY, HKD, SGD, SEK, KRW), refreshed every minute with an honest market-open/stale flag, PLUS the official ECB daily reference table for ~30 currencies. Derive any cross-rate or pair. Keyless, pay-per-call.
$0.001
GET
/pm-markets
Top Polymarket prediction markets right now: the 25 highest-volume open markets with live odds (outcome probabilities), best bid/ask, spread, last trade, 24h + total volume, liquidity, 1d/7d price change, end date and event link. Flat JSON, refreshed every 5 minutes.
$0.001
GET
/pm-crypto
Crypto prediction markets on Polymarket: the highest-volume open BTC, ETH and crypto markets with live odds (outcome probabilities), best bid/ask, spread, 24h + total volume, liquidity, price change and end date. 'Bitcoin above X', price targets, ETF and protocol events — what the market actually prices in, as flat JSON refreshed every 5 minutes.
$0.001
GET
/rh-season
Robinhood Chain memecoin intelligence: the rug-screened RH Chain (chainId 4663) movers. Hard liquidity + wash-volume gates filter $0-liquidity honeypots faking $1M volumes; every survivor carries rug-risk flags (thin liquidity, vol/liquidity anomaly, pool age, CoinGecko listing) plus trusted-KOL mentions with verbatim quotes and a synthesized RH sentiment read. What is pumping AND whether it is real. Served from a cached snapshot while fresh (≤1…
$0.001
GET
/tokenized-equities
The live registry of tokenized US equities & ETFs on Robinhood Chain (chainId 4663): symbol, canonical token address, decimals, listed-on-rail routability, and the EXECUTABLE buy price — what a $100 buy pays per token at the route's minimum output — published next to the catalog reference price and the deviation between them. Every served address is bound to a hand-verified identity pin. The on-chain settlement layer for tokenized-equity exposur…
$0.001
GET
/earnings-calendar?ticker=...
Earnings calendar + surprise history for a vendor-resolved equity or ETF: next report date and session (before-open / after-close) with EPS & revenue estimates, latest reported EPS versus estimate with surprise %, and a four-quarter history. Licensed Finnhub feed; monetary values keep vendor payload units. Event-window price drift is marked unavailable, never inferred. Pass ?ticker= (e.g. AAPL). Refreshed daily.
$0.003
GET
/analyst-ratings?ticker=...
Analyst consensus for a vendor-resolved equity: the latest buy/hold/sell distribution (strong buy · buy · hold · sell · strong sell counts, total, and a deterministic consensus label) plus up to six months of the same distribution so an agent can read the drift — is the street moving toward or away from the name. Vendor counts (Finnhub), label rule stated in the payload. No price targets and no per-analyst grade actions are served.
$0.003
GET
/equity-news?ticker=...
Company news for a vendor-resolved equity: licensed Finnhub headlines from the trailing 7 days with publish time, source and summary. Only articles that name the company are served — labelled primary (headline names it) or mentioned (only the summary does) — so a symbol-tagged story about another company never fills the list. No sentiment is fabricated. Pass ?ticker= (e.g. TSLA). Refreshed hourly.
$0.003
GET
/dividend-intel?ticker=...
Cash-dividend intelligence for a vendor-resolved equity from the licensed Tiingo end-of-day feed: TTM dividend/share and yield against the latest close, latest dividend, split-adjusted complete-year growth, the last eight payments, split events, and a cut-detection checklist with explicit coverage. Payout ratio, forward ex-dates and declaration/record/payment dates are not served (not in the Tiingo feed); non-payers return status no-cash-dividen…
$0.003
GET
/macro-regime
Daily US macro-regime snapshot from licensed Alpha Vantage series: 10-year Treasury yield, effective federal funds rate, 3-month rate changes, CPI index and YoY inflation, plus a mechanical rate-direction / inflation-direction label with disclosed thresholds. Scanner context, no query param. Refreshed daily.
$0.003
GET
/technical-signals?ticker=...
Daily technical snapshot for a vendor-resolved equity from licensed Tiingo adjusted closes: Wilder RSI-14 with state, 20-session momentum, SMA-20 / SMA-50, price distance from each average, above / below / mixed trend state, and the latest observed golden / death cross. Price and averages keep vendor payload units. Pass ?ticker= (e.g. MSFT). Refreshed daily.
$0.003
GET
/insider-trades?ticker=...
SEC Form 4 insider trades for any US-listed company: who bought and sold (officer / director / 10% owner), purchase vs sale counts and dollar values (SEC codes P/S), net purchase-sale balance, shares held after each transaction, and filing links. An hourly snapshot straight from the primary source — public-domain SEC EDGAR. Pass ?ticker= (e.g. AAPL). Refreshed hourly.
$0.003
GET
/institutional-holdings?manager=...
Latest 13F-HR holdings for any SEC-filing manager (hedge funds, asset managers): top 20 positions by value with issuer, CUSIP, value in whole USD, share / principal amount (SH/PRN), put/call flag and position count, amendments applied. Whale-tracking straight from the primary source — public-domain SEC EDGAR. Pass ?manager= a CIK or manager ticker (e.g. 1067983 for Berkshire, or BLK). Refreshed hourly.
$0.003
GET
/pm-search?query=...
Search Polymarket prediction markets by free text — elections, Fed rates, crypto prices, sports, geopolitics, AI. Returns the top matching open markets with live odds (outcome probabilities), best bid/ask, spread, volume, liquidity, end date and event link as flat JSON. Pass ?query= (e.g. "fed rate cut"). Live odds on a ~10-minute cadence.
$0.001
GET
/equity-smart-money?ticker=...
Smart-money bundle for any US-listed company in ONE call: SEC Form 4 insider activity (purchases vs sales, SEC codes P/S, net purchase-sale balance, who filed and their roles) PLUS trailing-twelve-month fundamentals — revenue + YoY, net income + YoY, diluted EPS — from XBRL filings. Insider conviction and the financials behind it, together. Public-domain SEC EDGAR. Pass ?ticker= (e.g. NVDA). Refreshed hourly.
$0.006
GET
/tweet-search?query=...
Search X / Twitter for any query and get the actual matching tweets — keyword, $CASHTAG, from:handle, @handle mentions, or boolean OR. Each tweet returns author, full text (long-form notes included), timestamp, likes and retweets. Most-recent-first for real-time monitoring. Structured JSON, pay-per-call. Pass ?query= (e.g. $BTC). Live X search, ~5-minute recency.
$0.005
GET
/generate-meme?prompt=...
AI image generation via fal.ai (gpt-image-2 default, nano-banana-pro alt)
$0.15
GET
/llm-research?prompt=...
AI research assistant with web search via Gemini 3.1 Flash-Lite
$0.10
GET
/tx-explainer?txHash=0x...
Decode & explain EVM transactions across 11 chains
$0.01
GET
/portfolio
Multi-chain token balances for your Otto X sub-wallet (or ?address=0x...)
$0.001
GET
/supported-tokens?chainId=8453&search=USDC
Search tokens by symbol on chain
$0.001
GET
/hyperliquid-account
Hyperliquid perpetual futures account info — defaults to your Otto X sub-wallet
$0.001
GET
/hyperliquid-market
Perpetual market data & funding rates
$0.001
GET
/hl-transaction-history
Hyperliquid trade history — defaults to your Otto X sub-wallet
$0.001
GET
/yield-markets
Blue-chip supply APYs from each protocol's authoritative source — Aave V3 + Compound V3 (on-chain), Morpho (official GraphQL), Syrup (ERC-4626 trailing)
$0.001
GET
/yield-farming-active
Active yield positions for a wallet — Otto-allowlisted lending positions also get a rebalance recommendation (current APY vs. the highest-rated allowlisted protocol alternative + the action calls to switch) and a portfolio yield summary
$0.001
GET
/yield-farming-historical
Yield op history for a wallet — deposit/redeem timeline with exact Otto fees and a totals summary
$0.001
POST
/swap
Get swap quote + calldata on X Layer via OKX DEX (V1: not broadcast)
$0.01
GET
/market-alpha
X Layer token market intelligence — live pricing for curated tokens
$0.005
GET
/price?token=0x...
Single token USD price via OKX DEX quote
$0.002
GET
/all-tokens
Full list of all tokens supported on X Layer DEX
$0.002
GET
/approve?token=0x...&amount=N
ERC-20 approval calldata for DEX router (needed before swap)
$0.005
GET
/
This landing page (HTML) or JSON service discovery (Accept: application/json).
Free
GET
/health
Service health check.
Free
GET
/tokens
Curated X Layer token registry.
Free
GET
/llm.txt
AI-readable service catalog.
Free
GET
/llms.txt
Long-form AI-readable catalog.
Free
GET
/.well-known/x402
x402 discovery document (JSON).
Free
GET
/openapi.json
OpenAPI 3.1 description — the machine invocation contract (method, query params, body schema, price).
Free
GET
/otto.md
Otto Intelligence Plugin skill file.
Free
GET
/supported-protocols
DeFi allowlist — protocol × chain × token combinations Otto will execute against.
Free
GET
/sub-wallet/preview?address=0x...
Read-only lookup — is a sub-wallet already provisioned for this address? Never provisions; provisioning is triggered by your first paid /auto-* call.
Free
GET
/defi-positions?address=0x...
Read active DeFi positions for a sub-wallet.
Free

Hit your first endpoint in 30 seconds.

Every example below is copy-paste runnable against the live service. The one-call /auto-swap flow is documented in full detail in the docs.

# Look up your sub-wallet — read-only, never provisions
curl "https://xlayer.ottoai.services/sub-wallet/preview?address=0xYOUR_WALLET"

# Service discovery (x402scan-compatible)
curl "https://xlayer.ottoai.services/.well-known/x402"
# Step 1 — get the price
curl -i "https://xlayer.ottoai.services/portfolio"
# < HTTP/1.1 402 Payment Required
# < PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi4uLg==

# Step 2 — pay + retry (use x402 client lib or browser wallet)
curl -H "PAYMENT-SIGNATURE: $SIGNED_402" \
     "https://xlayer.ottoai.services/portfolio"
# One-call autonomous swap — principalAuth collapses fund + execute
curl -X POST "https://xlayer.ottoai.services/auto-swap" \
  -H "PAYMENT-SIGNATURE: $X402_FEE" \
  -H "Content-Type: application/json" \
  -d '{
    "fromToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
    "toToken":   "0x4200000000000000000000000000000000000006",
    "amount":    "10",
    "chain":     "base",
    "principalAuth": {
      "from":        "0xYOUR_WALLET",
      "to":          "0xYOUR_SUB_WALLET",
      "value":       "10000000",
      "validBefore": 1776973646,
      "nonce":       "0x...",
      "signature":   "0x..."
    }
  }'

# < HTTP/1.1 200 OK
# < {
# <   "status": "success",
# <   "data": {
# <     "approveTxHash": "0x752564d8...",
# <     "swapTxHash":    "0x8d57950c...",
# <     "fromAmount":    "10000000",
# <     "toAmount":      "...",
# <     "priceImpact":   "-0.16%"
# <   }
# < }