The Trading API is the public interface of the Storm V3 sequencer. It accepts signed intents, bundles them, sends them on-chain and lets you follow the result. All reads are keyed by Smart Account address and need no authentication.
- Mainnet:
https://api.storm.tg/v3-node-0 - Stage:
https://api.stage.stormtrade.dev/v3-node-0 - Full schemas: Swagger
Read Architecture & Concepts first for Smart Accounts, intents, query ids and bundle states.
📤 Orders
Place an order
POST /order/place
{
"sa": "<smart-account-address>",
"message": "<base64 signed intent cell>",
"public_key": "<base64 public key>",
"signature": "<base64 signature>",
"builder": "<registered builder address, optional>"
}| Field | Notes |
|---|---|
sa | Smart Account address, raw or user-friendly |
message | The intent cell built by the SDK, base64 |
public_key, signature | Key that controls the Smart Account and its signature over the message |
builder | Optional. Attributes the order to a registered builder. See Builder Fees |
order_requests | Optional. Extra order requests bundled with the intent, for example SL/TP |
payment_mode | Optional. Selects how gas for the bundle is paid |
Response:
{
"ok": true,
"accepted": true,
"intent_hash": "<hex>",
"intent": { "...": "settled action" },
"trace": { "...": "emulation trace" }
}accepted: true means the intent passed emulation and is queued. Store intent_hash and poll the endpoints below for the on-chain result.
Cancel an order
POST /order/cancel takes the same sa, message, public_key and signature fields with a signed cancel intent.
Follow an intent
GET /intent/{hash}returns the intent by the hash from the place response.GET /smartaccount/{address}/bundles/{query_id}returns the bundle that carries the intent with that query id, including its status.
👛 Smart Account
| Method | Path | Returns |
|---|---|---|
| GET | /smartaccount/{address}/state | Account state |
| GET | /smartaccount/{address}/queryID | query_id to use next, plus executor_query_id and max_live_query_id |
| GET | /smartaccount/{address}/balance | Balance in the default collateral |
| GET | /smartaccount/{address}/balances | Balances in all collaterals |
| GET | /smartaccount/{address}/lockedBalance, /lockedBalances | Collateral locked by open orders and positions |
| GET | /smartaccount/{address}/positions | Open positions across all markets, each with market, direction and state |
| GET | /smartaccount/{address}/gasUnits | Prepaid gas units left |
| GET | /smartaccount/{address}/referral | Referral binding of the account |
| GET | /smartaccount/{address}/events | Event feed for the account |
| GET | /smartaccounts | Search Smart Accounts |
| POST | /smartaccount/self-deposit | Deposit into the caller's own Smart Account |
| POST | /position/sync | Force a re-read of a position from chain |
📦 Bundles
| Method | Path | Returns |
|---|---|---|
| GET | /smartaccount/{address}/bundles | All bundles of the account |
| GET | /smartaccount/{address}/bundles/{query_id} | One bundle |
| GET | /smartaccount/{address}/finalizing | Bundles awaiting on-chain finality |
| GET | /smartaccount/{address}/sent | Bundles broadcast but not yet confirmed |
| GET | /bundles, /bundles/{prepared,committed,finalizing,confirmed,failed} | Global bundle lists by state. Prefer the account-scoped endpoints |
Bundle statuses are pending, sealed, sent, confirmed, failed. See Architecture & Concepts.
📊 Orderbook
Limit and stop orders wait in the sequencer orderbook until their trigger price is reached. asset is the market address.
| Method | Path | Returns |
|---|---|---|
| GET | /orderbook/{asset}/depth?levels=10 | Aggregated price levels with order counts and total size |
| GET | /orderbook/{asset}/bids, /asks | Resting orders by side |
| GET | /orderbook/{asset}/pending | Orders waiting to be executed |
| GET | /orderbook/{asset}/stats | Orderbook summary |
| GET | /orderbook/orders | Orders across all markets |
⛽ Gasless
| Method | Path | Returns |
|---|---|---|
| GET | /gasless/balance/{address} | Gasless balance of the account |
| POST | /gasless/withdrawal | Request a gasless withdrawal |
| GET | /gasless/withdrawals/{address} | Withdrawal history |
🧩 Builders
GET /builders lists registered builders with their raw rebate rate, cumulative earnings and active flag. Field meanings and the rate scale are documented in Builder Fees.
🩺 Status and Volume
| Method | Path | Returns |
|---|---|---|
| GET | /status | ok, lag, last_processed_block, current_block, bundle counts by state, pending_intents |
| GET | /stats | System statistics |
| GET | /volume | Volume snapshot for all traders |
| GET | /volume/cumulative | Cumulative V3 trading volume |
| GET | /volume/{address} | Volume of one trader |
| GET | /healthz, /readyz | Liveness and readiness probes |
Check ok and lag from /status before submitting orders. A non-zero lag means the sequencer is behind the chain and acceptance may be delayed.
🪵 Logs and Events
GET /events, GET /logs/failed, GET /logs/type/{type}, GET /logs/vamm, GET /smartaccount/{address}/logs and GET /bundler/logs expose execution logs. They are useful for debugging a failed bundle. For production dashboards use the account-scoped endpoints.