Skip to content

Your first Monvera API call

Two public GETs need no token; two authenticated POSTs build and commit a plan.

Run this now. No account, no key, no header:

Terminal window
curl "https://monvera.best/api/market"

That returns the catalog of 95 real tokenized stocks and ETFs with live prices — the same numbers the app shows. Reads are public. Anything that builds a plan or spends money needs a Privy bearer token, and this page walks both halves in four calls.

GET /api/market is the source of truth for symbols, names, live prices, and token addresses on chain 4663. Pass symbol for one asset and range for a price window:

Terminal window
curl "https://monvera.best/api/market?symbol=AAPL&range=1y"

GET /api/screener ranks that same catalog by four figures computed from real price history — one-year return (ret1yPct), three-month return (ret3mPct), volatility (volPct), and maximum drawdown (maxDrawdownPct). Assets with no history are flagged, not scored:

Terminal window
curl "https://monvera.best/api/screener"

Sort and filter the rows client-side. A ranking you compute from this response matches what a user sees in the app.

Monvera is a conversation. Nobody in the app calls an endpoint — they say what they want, and Vera’s router resolves it into one of 26 intents and opens a panel beside the chat:

You
Put $250 into something steady for the long run
Vera
Here’s a plan — Apple, Nvidia, the S&P 500, and US Treasuries, about $62 each. Nothing moves until you confirm.

POST /api/allocate is that same step over HTTP. The rest of this page uses that plan, “Steady Growth”, as its worked example.

Sign in at https://monvera.best, then read the Privy access token from the client SDK and export it:

Terminal window
export PRIVY_TOKEN="<your-privy-access-token>"

Authentication covers where the token comes from and which routes require it.

POST /api/allocate takes a plain-language goal and a USDG amount and returns a named draft: legs with an asset, a weight, a one-line reason, and a plain risk read, plus a planId, an assessedRisk, and a maxRisk ceiling.

Terminal window
curl -X POST "https://monvera.best/api/allocate" \
-H "Authorization: Bearer $PRIVY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"goal":"grow my money steadily for five years","amountUsdg":"250"}'

Nothing is signed or spent at this point. You can start from $1 and no venue enforces a minimum, though each leg is a separately sponsored transaction, so very small slices are inefficient. Amounts are strings of 6-decimal USDG units.

POST /api/commit-plan executes the plan and records Vera’s signed EIP-712 risk assessment on-chain in the same transaction that buys the stocks — one atomic record anyone can verify on the explorer. Gas is sponsored through ERC-4337 — the account never holds a gas token.

Terminal window
curl -X POST "https://monvera.best/api/commit-plan" \
-H "Authorization: Bearer $PRIVY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"planId":"0x9f2c...a41b","address":"0xYourSmartAccountAddress"}'

You get a transaction hash back. Open it on https://robinhoodchain.blockscout.com and you will find a RecommendationCommitted log and an AllocationExecuted log emitted by 0x7ff1a5ee19330c165146488a7ad8af6cb41da1df. That is the checkable record; verify Vera reproduces the signature from it yourself.

Allocate and commit close together. The on-chain verify path reverts the whole transaction if the assessment has expired, if assessedRisk exceeds maxRisk, if the recovered signer is not the current agentSigner(), or if the same planId was already recorded — a failed commit spends nothing.

Every leg settles atomically in its own sponsored transaction — the position is held and sellable immediately. It is already bought and already the holder’s, and it counts in the balance the whole time — it just cannot be sold until it lands. Nothing is stuck.

There is no route that quotes a whole plan at once. Firm per-leg quotes come from POST /api/quote, one leg at a time as you execute it — quote the whole plan upfront and the tail legs go stale before they settle.

Every route, request body, and response shape is in the API reference. Nothing here is investment advice, and backtests are history, not promises.

© 2026 Aibora · Documentation interface. Original Monvera materials retain their upstream attribution andMIT license.