Documentation
Leverage API
List markets, open and close longs, and read position state through the Hono API.
Call Inferno's Hono API directly. Do not send a private key. Inferno returns an unsigned transaction — you sign and broadcast it from your wallet on Robinhood Chain (4663). Collateral is native ETH.
List leverage markets
Public. No auth. Returns every listed market, long-route readiness, and network metadata. Same payload is available at /api/leverage/markets from this origin.
curl -s https://inferno.trade/v1/marketsUse these fields when you open a long:
id— pass asmarketIdsymbol,name,tokenAddressmaxLeverage,limits.minCollateralWeth,limits.maxCollateralWethlistingStatus— tradeable whenactiveorlimitedroutes.long.executablemust betrue
Quote a long
Optional. Direction is always long. collateral and leverage are decimal strings.
{
"wallet": "0xYourWallet",
"marketId": "market-id-from-list",
"collateral": "0.05",
"leverage": "5"
}Open a long
Two steps. Inferno prepares the trade; you broadcast the returned transaction yourself.
1. Challenge
{
"wallet": "0xYourWallet",
"marketId": "market-id-from-list",
"collateral": "0.05",
"leverage": "5"
}Response includes challenge.message. Sign that exact string with EIP-191 personal_sign.
2. Prepare
{
"wallet": "0xYourWallet",
"marketId": "market-id-from-list",
"collateral": "0.05",
"leverage": "5",
"challengeId": "<id from challenge>",
"challengeExpiresAt": "<expiresAt from challenge>",
"signature": "0x…"
}The response includes quote and preparation.transaction (from, to, data, value in wei). Send that transaction from wallet on chain 4663. Inferno does not submit it for you.
curl -s -X POST https://inferno.trade/v1/leverage/open \
-H "content-type: application/json" \
-d '{
"wallet": "0xYourWallet",
"marketId": "market-id-from-list",
"collateral": "0.05",
"leverage": "5",
"challengeId": "<id>",
"challengeExpiresAt": "<expiresAt>",
"signature": "0x…"
}'Read positions
Public. No Inferno login. Returns live positions for that wallet plus settled rows (closes and liquidations).
curl -s "https://inferno.trade/v1/positions?wallet=0xYourWallet"Useful fields on each open position:
id— pass aspositionIdwhen closing or splittingunrealizedPnlEth,unrealizedPnlUsd,unrealizedPnlPercentliquidationPriceEth,currentPriceEthhealthPct— percent of mark remaining above (long) or below (short) liquidation.0or negative means at/through liqliquidated—truewhen Inferno marked it liquidated or health is gonestatus—open,closing,closed, orliquidated
settled[] is exit history Inferno reports (reason: "closed" | "liquidated").
Close a long
Full exit. Same challenge → prepare pattern as open. You broadcast the returned transaction.
Close challenge
{
"wallet": "0xYourWallet",
"positionId": "position-id-from-list"
}Close prepare
{
"wallet": "0xYourWallet",
"positionId": "position-id-from-list",
"challengeId": "<id from challenge>",
"challengeExpiresAt": "<expiresAt from challenge>",
"signature": "0x…"
}Response includes preparation.transaction. Send it from wallet on chain 4663.
Partial reduce (split)
Partial split will be enabled soon. The routes below are the contract to build against. Until they are live, close the full position with the close routes above.
Split carves sizeEth off an open long and leaves the rest. Same challenge → prepare pattern as close. You broadcast the returned transaction. sizeEth is notional ETH to reduce, not collateral.
Split challenge
{
"wallet": "0xYourWallet",
"positionId": "position-id-from-list",
"sizeEth": "0.05"
}Split prepare
{
"wallet": "0xYourWallet",
"positionId": "position-id-from-list",
"sizeEth": "0.05",
"challengeId": "<id from challenge>",
"challengeExpiresAt": "<expiresAt from challenge>",
"signature": "0x…"
}Response includes preparation.transaction. Send it from wallet on chain 4663.
App session routes
Logged-in Inferno users on the website use cookie session routes and the embedded wallet instead of /v1. Developers with their own key should use the endpoints above. See Getting Started for the UI flow.
GET /api/leverage/marketsPOST /api/leverage/quotePOST /api/leverage/preparethenPOST /api/leverage/broadcastGET /api/leverage/positionsPOST /api/leverage/close/preparethenPOST /api/leverage/close/broadcastPOST /api/leverage/split/preparethenPOST /api/leverage/split/broadcast