Skip to main content
Mainnet currently supports Spot DEX only. Perpetuals, Oracle, Margin Trading, Lending, and Vaults are Testnet-Only. Use Testnet endpoints and assets for those products.
If the Ault DEX API is delayed or unavailable, most of the same market, order, balance, and fee data can be read directly from the chain. This page lists those paths. Hosts are the Cosmos REST and EVM JSON-RPC endpoints published on Mainnet and Testnet. Examples use mainnet.

What Has a Chain Fallback

The right column requires indexing the chain’s event stream, which is what this API’s indexer does. There is no chain-level substitute short of replaying the events yourself.

Field Conventions

Chain queries differ from this API in three ways that break clients if missed:
  • market_id, order_id, and cloid are raw bytes on the wire, and the REST gateway encodes them as base64, so they appear as opaque blobs. This API returns market_id as hex.
  • Prices and quantities are decimal strings, not JSON numbers.
  • List endpoints use Cosmos-standard pagination.key, pagination.limit, and pagination.offset, and return one page per call.

Markets

Module x/market.
Fallback for GET /api/v1/markets and GET /api/v1/fees. market_id here is the same binary identifier this API returns as hex on Market Data, base64-encoded instead.

Tokens and Currencies

Modules x/tokenregistry and x/bank.
Fallback for GET /api/v1/currencies.

Fees

Module x/accountx.
Per-market trading fee rates come from the market detail response as maker_fee_rate and taker_fee_rate, and defaults from market module params. The x/clob params do not carry fee rates. For account-specific discounts, query /ault/accountx/v1/fee_tier/{address} and /ault/reward/v1/fee_tier_discounts. The fee-tier schedule’s discounts array starts with tier 1 at index 0. Base market rates alone are not the account’s final fee quote; referral and approved builder settings can also affect the order’s fee information.

Orders and Order Book

Module x/clob. The chain exposes resting orders, not price-level depth.
Each order carries its id, orderer, market_id, is_buy, price, tick, quantity, open_quantity, remaining_deposit, deadline, post_only, fee info, and cloid. Fallback for GET /api/v1/orders, and a partial fallback for GET /api/v1/orderbook/{symbol}. This API returns price-level aggregates, which the chain does not. Reproducing the depth book means aggregating these resting orders yourself.
Swagger marks market_id as optional on the orders endpoint, but the endpoint returns 400 {"message":"market_id is required"} without it. Always include it.

TWAP Parents

Testnet-Only. Use https://test-api.cloud.aultblockchain.xyz for these native queries. Native Order and OrderByCloid queries can return a twap result containing the parent order and schedule. GET /ault/clob/v1/twap-orders lists active parents and accepts orderer plus standard pagination. Use the account actually holding the parent when filtering. After cancelling a parent, verify its committed close result and absence from active parents, then reconcile any already-created slices. Checking the ordinary resting-order list alone does not confirm that a TWAP schedule has stopped.

Order Validation and Throughput

Use the field encodings above with the selected network’s Cosmos REST endpoint. The CLOB grid is defined by native tick_precision, not the Spot API’s fixed decimal compatibility field. See Protocol Constraints for preflight rules and Trading Operations for the separate read, transaction, gas, and order-capacity budgets.

Perpetual Account and Price Queries

Testnet-Only. Use https://test-api.cloud.aultblockchain.xyz for these native queries. These are native chain query names and fields, separate from the DEX API’s Spot REST and WebSocket routes. They require a node implementing the corresponding Perpetual module. Existing byte/base64 conventions apply; an empty market_id selects cross for account queries, while a market ID selects its isolated account. Prices can omit an unavailable effective index while still returning a stored mark. Price-state and funding timestamps above use Unix seconds; they are not interchangeable with DEX API millisecond timestamps. EMA stored values require division by their corresponding weights. AccountRisk.available_margin is not the maximum withdrawal, and a false ordinary-liquidation flag does not mean a negative-equity account is safe, because ADL handles those accounts. For calculation rules, see Perpetuals and Oracle. For metal market units, see Perpetuals.

Trade and Fill Data

There is no native chain query for historical CLOB fills or tickers. Collect native fill events from Cosmos RPC and use a decoder compatible with the chain version. The native order_filled event emits maker updates during matching and an aggregate taker update after that taker’s matching run. Its accumulated quantities, payments, and fees are not a universal one-event-per-match trade feed. Do not sum raw cumulative fields as independent fills. DEX API fill records are built by its indexer and can differ from these raw events.
tx_search filtering by event key, such as message.sender, returns nothing on the public RPC even for senders that provably emitted it. Only tx.hash and tx.height queries are dependable, since event-key indexing depends on node configuration. To follow one account, walk blocks by height instead.
For contract and precompile actions, EVM JSON-RPC also exposes logs. Those logs are a separate data source and do not replace native CLOB fill events:
eth_getLogs is functional and public. See the JSON-RPC compatibility matrix. Historical trades and 24-hour statistics are exactly what this API’s indexer computes from these events. See Market Data.

Balances

Module x/bank, plus EVM JSON-RPC for the EVM side.
Native EVM balance, and an ERC20 balance through balanceOf(address):
Fallback for GET /api/v1/balance. Moving assets between EVM and Core is a transaction, not a query. See Transfer Assets.
For ordinary Spot orders, payment escrow moves from the account to the market’s escrow address, so it is absent from both bank balance endpoints. The endpoints differ on vesting and other locked coins. Neither bank query substitutes for Perpetual equity or Lending-backed Margin collateral and debt, which follow separate product accounting.

Account and Agent State

Modules x/accountx and x/agent.
See Open Account with Fee and Trading API Key.

Node and Chain Status

These report a chain node’s height and sync state. Compare them with the API’s GET /api/v1/status to detect indexing lag before trading. From the EVM side, eth_blockNumber, eth_chainId, and eth_syncing take the same shape:

Real-Time Subscriptions

The chain-native alternative to the WebSocket API. Examples use node -e on Node 22 or later, which connects, prints for five seconds, then exits. New blocks, which include fills:
The first message is an empty acknowledgement. Each one after that is a block, with fills under result.data.value.result_finalize_block.tx_results[i].events. Filtering by sender with tm.event='Tx' AND message.sender='ault1...' depends on the same event-key indexing and should not be relied on. Subscribe to blocks and filter client-side. EVM block headers and logs, over eth_subscribe:
The acknowledgement returns a subscription id. Later messages are eth_subscription notifications with the header or log under params.result.