S2S Stocks
The tradable stock catalogue
Every stock Restake currently lists, ordered as the catalogue is — tokenized equities and tokenized commodities alike, told apart by assetType; pass ?assetType= for one kind only. Each row carries its slug — the handle every other endpoint takes — the live price with a 24h series, and whether its market is open right now. Prices are cached for a minute and the series is refreshed hourly per stock, so polling faster than that returns the same numbers. Stocks your team has switched off in the partner panel are left out.
query Parameters
assetTypeLimit the list to one kind of asset. Omit it for the whole catalogue.
The tradable stock catalogue › Responses
One stock’s price
The same price, series and 24h change the list carries, for a single stock — so a detail screen does not have to read the whole catalogue.
path Parameters
slugOne stock’s price › Responses
Approximate fee for a buy or sell amount
The platform fee and the gas fee on amount, and what is left once they are taken (finalAmount) — no wallet and no route involved. A sale is valued at the venue spot price, before the route’s spread. The construct call charges the exact figure; send maxAmount: true there to trade the largest amount a wallet can afford.
path Parameters
slugquery Parameters
sideamountbuy: payment-token units; sell: stock-token units — the unit of the matching construct amount.
Approximate fee for a buy or sell amount › Responses
What an amount would trade at
A route price for one side and one amount, with no wallet and no transaction involved. amount is in the token going in: the payment token on a buy, shares on a sell. Indicative — the number a trade executes at is the quote returned beside the batch it builds.
path Parameters
slugquery Parameters
sideamountHuman-readable source token amount, for example 100 or 0.5
What an amount would trade at › Responses
Price history of one stock
Ascending by time, over period (defaults to 24H). An empty array is a real answer, not an error: the venue does not chart every stock, and one whose market has never opened has nothing to draw.
path Parameters
slugquery Parameters
periodPrice history of one stock › Responses
Ascending by time.
Build an unsigned buy
Returns an EIP-7702 batch user operation for the partner user's wallet, plus an intentId and the quote it was built against. amount is in payment-token (USD stablecoin) units — what the user is spending; send maxAmount: true instead to spend the largest amount the wallet covers, fee included (quote.sourceAmount says how much). The user op itself stays server-side: the wallet signs bundle.userOpHash and the authorization tuple, then posts them back to transaction/batch/send.
Build an unsigned buy › Request Body
sluguserIdPublic uuid of the partner user the trade is built for.
amountHuman-readable source token amount, for example 100 or 0.5. Required unless maxAmount is true.
maxAmountTrade the largest amount the wallet can right now, fee included; amount is then ignored. A buy keeps back the fee; a sale sells every share and pays the fee from the proceeds. The amount used is the returned quote.sourceAmount.
slippageMaximum slippage, in percent. Capped at 5: on Ethereum the batch goes through the public mempool and can be sandwiched up to this bound.
Build an unsigned buy › Responses
Build an unsigned sell
As the buy counterpart, but amount is in share units — a sale is denominated in the stock token the user holds, not in the stablecoin the proceeds arrive in. The two tokens have different decimals; the catalogue carries both. maxAmount: true sells every share; the fee comes out of the proceeds.
Build an unsigned sell › Request Body
sluguserIdPublic uuid of the partner user the trade is built for.
amountHuman-readable source token amount, for example 100 or 0.5. Required unless maxAmount is true.
maxAmountTrade the largest amount the wallet can right now, fee included; amount is then ignored. A buy keeps back the fee; a sale sells every share and pays the fee from the proceeds. The amount used is the returned quote.sourceAmount.
slippageMaximum slippage, in percent. Capped at 5: on Ethereum the batch goes through the public mempool and can be sandwiched up to this bound.
Build an unsigned sell › Responses
Submit a signed trade
Pairs the wallet signatures with the intent built earlier and submits it to the bundler. The intent is single-use and short-lived, so a replayed or late call is rejected. A separate endpoint from staking’s because a client is pointed at one surface — the intent store behind both is the same.
Submit a signed trade › Request Body
intentIdsignatureWallet signature over userOpHash, 0x-prefixed hex.
userIdPublic uuid of the partner user the trade is built for.
Signature over bundle.authorization. Required when the bundle carried one; must be omitted when it was null.
