On this page
- Base URL
- Pagination
- Status
- Chains
- Contracts
- Contract detail
- Asset resolution
- Assets
- Asset page data
- Transfers
- Transfer leaderboard
- Orders
- Omnibook orderbook snapshot
- Realtime Omnibook updates
- Omnibook market quote
- Omnibook trades
- Omnibook candles
- Crossed Omnibook orders
- Wallet points
- Wallet transactions
- Operational notes
API
The Omnisea API exposes indexed protocol data for the app and for external integrations. It is useful for discovery, dashboards, asset pages, transfer history, leaderboard rankings, order tables, wallet activity, and wallet points.
On-chain state remains authoritative. API responses can lag behind the latest block, may be affected by reorgs, and may evolve during beta.
Base URL
Use the API origin configured for the current environment. Production integrations should use the public Omnisea API origin exposed by the app environment.
Pagination
List endpoints use cursor pagination.
Common query parameters:
| Parameter | Description |
|---|---|
limit | Number of items to return. Defaults vary by endpoint and are capped by the API. |
cursor | Cursor returned by the previous response. |
Common response shape:
{
"items": [],
"page": {
"nextCursor": "cursor-value",
"hasMore": true
}
}Status
GET /statusReturns API health and basic service status.
Chains
GET /chainsReturns supported chains, chain IDs, LayerZero endpoint IDs, RPC-facing metadata, and explorer links used by the Omnisea app.
Contracts
GET /contractsOptional filters:
| Parameter | Description |
|---|---|
chainId | Return contracts for one chain. |
kind | Return contracts of a specific kind, such as omnisea or omnisea_router. |
Contract detail
GET /contracts/:chainId/:addressReturns one indexed contract record by chain and address when it is known to Omnisea.
Asset resolution
GET /assets/resolve?chainId=8453&token=0x...Resolves a token address on a given chain into Omnisea asset context when available.
Resolution may identify:
- the original chain and original token
- the representation address for the current chain
- deterministic route metadata
- asset page context
Assets
GET /assetsReturns indexed Omnisea asset routes.
Common filters:
| Parameter | Description |
|---|---|
assetKind | erc20 or erc721. |
originalChainId | Original token chain ID. |
originalToken | Original token address. |
limit | Row limit. |
cursor | Pagination cursor. |
Asset page data
GET /assets/:chainId/:addressReturns indexed asset data for a token route, including transfer history and representation context when available.
Common query parameters:
| Parameter | Description |
|---|---|
limit | Transfer row limit. |
cursor | Transfer cursor. |
Transfers
GET /transfersCommon filters:
| Parameter | Description |
|---|---|
assetKind | Filter by asset kind. |
chainId | Filter by source or destination chain depending on API behavior. |
originalChainId | Filter by original chain. |
originalToken | Filter by original token address. |
status | Filter by indexed transfer status. |
txHash | Filter by source transaction hash. |
fromDate | ISO timestamp lower bound. |
toDate | ISO timestamp upper bound. |
limit | Row limit. |
cursor | Pagination cursor. |
Transfer status is derived from indexed core actions, Router transport state, LayerZero message state, destination execution, retry, and restore events. Core and Router contracts are indexed separately on every active EVM chain. lzCompose application execution remains independent from the bridge-credit status.
Transfer leaderboard
GET /leaderboards/transfersReturns the seasonal wallet ranking by unique, successfully completed transfer GUIDs.
Common query parameters:
| Parameter | Description |
|---|---|
season | Leaderboard season. Defaults to 1. |
limit | Row limit. Defaults to 50. |
cursor | Opaque composite cursor returned by the previous response. |
Each completed GUID counts once for its source-sender wallet. Pending, failed, and restored transfers are excluded.
Orders
GET /ordersReturns indexed Omnibook orders.
Common filters:
| Parameter | Description |
|---|---|
chainId | Omnibook settlement chain ID. |
side | buy or sell. |
status | open, filled, cancelled, or expired. |
originalChainId | Original token chain ID. |
originalToken | Original token address. |
maker | Maker wallet address. |
txHash | Order creation, fill, or cancellation transaction hash. |
fromDate | ISO timestamp lower bound. |
toDate | ISO timestamp upper bound. |
limit | Row limit. |
cursor | Pagination cursor. |
Expired status is materialized by the API from the order expiry timestamp. The Omnibook contract remains authoritative for fills and cancellations.
Order rows are keyed by settlement chain, contract address, and order ID. They include quote-token metadata, cumulative fill and taker-fee amounts, lastFillTxHash, and the cancellation transaction when indexed.
Omnibook orderbook snapshot
GET /orders/bookReturns up to 500 active orders for one exact indexed Omnibook market. For an independently deployed book, use this endpoint as its indexed initial state and verify the contract address separately.
Required parameters:
| Parameter | Description |
|---|---|
chainId | Omnibook settlement chain ID. |
contractAddress | Omnibook deployment address on that chain. |
originalChainId | Market's original token chain ID. |
originalToken | Market's original token address. |
limit is optional and cannot exceed 500. The response contains items and an asOf timestamp. It excludes cancelled, filled, expired, and zero-remaining orders.
Realtime Omnibook updates
wss://<api-origin>/ws/omnibookThe WebSocket feed tells a client when an indexed book has changed. Connect and subscribe first, then load /orders/book as the initial snapshot:
{
"type": "subscribe",
"chainId": "8453",
"contractAddress": "0x..."
}After the subscription is accepted, the API sends an orderbook.changed message whenever an OrderCreated, OrderAssetResolved, OrderFilled, OrderCancelled, or TradeExecuted event is committed for that book. Removed logs caused by a reorg also produce an update with removed: true.
{
"type": "orderbook.changed",
"sequence": 42,
"chainId": "8453",
"contractAddress": "0x...",
"eventNames": ["OrderFilled"],
"transactionHashes": ["0x..."],
"blockNumber": "12345678",
"removed": false,
"publishedAt": "2026-07-30T12:00:00.000Z"
}Treat this message as an invalidation signal and reload the affected snapshot. Also reload after the server confirms a subscription, including after reconnecting. REST remains canonical, which keeps clients correct across partial fills, batched fills, matching, duplicate webhook deliveries, and chain reorganizations.
The server sends application-level ping messages. Reply with {"type":"pong"} to keep the connection active. Reconnect with backoff after a disconnect.
Omnibook market quote
GET /orders/market-quoteBuilds a best-price fill plan for one atomic market order.
Required parameters:
| Parameter | Description |
|---|---|
chainId | Omnibook settlement chain ID. |
contractAddress | Omnibook deployment address on that chain. |
originalChainId | Market's original token chain ID. |
originalToken | Market's original token address. |
side | Taker action: buy consumes sell orders; sell consumes buy orders. |
amount | Requested Omniasset amount in raw token units. |
maxOrders is optional, defaults to 32, and cannot exceed the contract maximum of 64.
The response includes fills, filledAmount, quoteAmount, and complete. Each fill contains the exact orderId, raw fillAmount, and raw quoteAmount selected by the planner. Prices are ordered exactly with integer arithmetic; equal-price orders use the oldest order ID first. Oversized all-or-none orders are skipped.
This endpoint does not reserve liquidity. Refresh the plan immediately before submission, read the live taker fee from the contract, and pass a suitable quoteBound to batchFillOrders. If the indexed plan is stale, the on-chain batch reverts atomically.
Omnibook trades
GET /orders/tradesReturns cursor-paginated TradeExecuted records for one exact market. Required parameters are chainId, contractAddress, originalChainId, and originalToken. Each row includes raw fill and quote units, fee, participants, transaction metadata, token decimals, and quote-token metadata.
One crossed-order match produces one trade record.
Omnibook candles
GET /orders/candlesReturns OHLCV buckets derived from indexed trades. It requires the same exact-market parameters as /orders/trades.
| Parameter | Description |
|---|---|
interval | 1m, 5m, 15m, 1h, 4h, or 1d. Defaults to 1h. |
limit | Number of buckets, subject to the endpoint limit. |
Prices are adjusted for Omniasset and quote-token decimals. Volume and quote volume remain raw integer token units.
Crossed Omnibook orders
GET /orders/crossedReturns candidate buy/sell pairs for a permissionless matcher. Required parameters are chainId and contractAddress; limit is optional.
The endpoint excludes self-matches, expired orders, non-crossing prices, and incompatible all-or-none sizes. It does not reserve either order. A matcher must call previewMatch and simulate batchMatchOrders before submitting.
Wallet points
GET /wallets/:address/pointsReturns the indexed Points balance for a wallet address.
Points are program accounting, not on-chain balances. See Points & rewards.
Wallet transactions
GET /wallets/:address/transactionsReturns indexed transfer activity associated with a wallet address.
Common query parameters:
| Parameter | Description |
|---|---|
limit | Row limit. |
cursor | Pagination cursor. |
Operational notes
The API is intended for reasonable public use. We may rate-limit, restrict, change, or discontinue endpoints during beta. Integrations that need strong settlement guarantees should verify final state on-chain.