> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aultblockchain.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Markets & Currencies

Reference data describing what is tradable on Ault DEX. None of these endpoints take parameters.

## List Markets

```http theme={null}
GET /api/v1/markets
```

Returns every trading pair, ordered by ID.

| Field | Description |
| - | - |
| `id` | Hex-encoded chain market identifier |
| `symbol` | `BASE/QUOTE` |
| `base` / `quote` | Currency codes |
| `baseId` / `quoteId` | Chain denominations, for example `aault` or `erc20:0x...` |
| `active` | Whether the indexer reports the market as accepting orders; a later chain halt or product risk check can still reject orders |
| `type` | `spot` |
| `maker` / `taker` | Fee rates, decimal strings |
| `feeSide` | Which leg the fee is charged on |
| `precision.amount` / `precision.price` / `precision.cost` | Spot API decimal compatibility fields; native price ticks are magnitude-dependent |
| `limits.amount.min` / `limits.price.min` / `limits.cost.min` | Reference minimums only; the chain applies additional order rules |

```bash theme={null}
curl https://am-api.cloud.aultblockchain.xyz/api/v1/markets
```

```json theme={null}
[
  {
    "id": "016161756c740065726332303a3078356235...",
    "symbol": "AULT/USDC",
    "base": "AULT",
    "quote": "USDC",
    "baseId": "aault",
    "quoteId": "erc20:0x5b58c971AF1EE0Fe5D5f772d68Ab3829262DFD2b",
    "active": true,
    "type": "spot",
    "spot": true,
    "feeSide": "get",
    "taker": "0.00035",
    "maker": "0.00015",
    "percentage": true,
    "tierBased": false,
    "precision": { "amount": 18, "price": 6, "cost": 18 },
    "limits": {
      "amount": { "min": 1e-18, "max": null },
      "price": { "min": 1e-06, "max": null },
      "cost": { "min": 1e-18, "max": null }
    }
  }
]
```

The example omits `info`, which every market carries. It holds protocol internals such as the
market's creation height and its escrow account. Those fields are not officially supported and can change, so do not build on them.

Perpetual and option fields (`margin`, `future`, `swap`, `option`, `contract`, `settle`, `expiry`,
`strike`, and related) are present for client-library compatibility and are `false` or `null` on
every market.

Use the native market's `tick_precision` and the owning product's minimum-order parameter to build
executable orders. The fixed `precision.price` value and `limits.cost.min` above cannot tell you whether an order will be accepted. [Protocol Constraints](https://docs.aultblockchain.com/dex-api/trading/place-or-modify-order.md#protocol-constraints)
provides the lookup map and tick examples. This Spot response does not define a Perpetual contract's
multiplier, collateral, margin tiers, or position caps.

Resolve the **display symbol**, binary market ID, asset denomination, and oracle feed ID separately.
A display rename does not rename a feed or convert a Spot token into a Perpetual contract. Use the
market ID and product type to distinguish similarly named instruments; do not derive the feed ID
from the displayed ticker.

## List Currencies

```http theme={null}
GET /api/v1/currencies
```

Returns the registered tokens, keyed by symbol.

| Field | Description |
| - | - |
| `id` | Token denomination: `aault` for the native token, `erc20:0x...` for an ERC20-paired token |
| `code` | Token symbol, for example `USDC` |
| `active` | Whether the token is in use |
| `precision` | Always `18` |
| `info.contractDecimals` | Core-side decimals. Always `18`, see below |

```json theme={null}
{
  "AULT": {
    "id": "aault",
    "code": "AULT",
    "active": true,
    "precision": 18,
    "info": { "contractDecimals": 18 }
  },
  "USDC": {
    "id": "erc20:0x5b58c971AF1EE0Fe5D5f772d68Ab3829262DFD2b",
    "code": "USDC",
    "active": true,
    "precision": 18,
    "info": { "contractDecimals": 18 }
  },
  "WETH": {
    "id": "erc20:0x2086f755A6d9254045C257ea3d382ef854849B0f",
    "code": "WETH",
    "active": true,
    "precision": 18,
    "info": { "contractDecimals": 18 }
  }
}
```

`name`, `deposit`, `withdraw`, `fee`, `limits`, and `networks` are present for client-library
compatibility and are `null` or empty on every token. Transfer limits are a chain query, not a field
here. See [Transfer Assets](https://docs.aultblockchain.com/dex-api/trading/transfer-assets.md).

> [!WARNING]
>
> Ault Core represents every token with 18 decimals, whatever the ERC20 contract on Ault EVM declares.
> `precision` and `info.contractDecimals` both report that Core-side 18, so every amount you send to
> or read from this API is in 18-decimal terms.
>
> The ERC20 contract's own decimals are a separate number and matter only on the EVM side. USDC.e, for
> example, is a 6-decimal contract but is held on Core with 18. Read the contract value as
> `erc20_decimals` from `GET /ault/tokenregistry/v1/token_pair/{address}`, and see
> [Transfer Assets](https://docs.aultblockchain.com/dex-api/trading/transfer-assets.md) for crossing between the two.

> [!NOTE]
>
> Symbols here are the exchange's own labels, applied by a per-environment mapping rather than read
> from the chain. The token registered on chain as `USDC.e` is listed by this API as `USDC`, and
> markets are named accordingly, for example `AULT/USDC`. A wallet will show the same asset as
> `USDC.e`.
>
> Because the mapping is configuration, it can differ between mainnet and testnet, and a token with no
> mapping appears under its raw denomination instead of a symbol. Resolve symbols from this endpoint
> rather than assuming them.

## Trading Fees

```http theme={null}
GET /api/v1/fees
```

Returns the maker and taker schedule for every market, keyed by symbol. Rates are decimal strings.

| Query | Meaning |
| - | - |
| Omit `address` | Market base maker/taker rates |
| `address=ault1...` or `address=0x...` | Account rates after fee-tier and referee discounts |

```bash theme={null}
curl -fsS --get "$API_URL/api/v1/fees" --data-urlencode "address=$OWNER"
```

The account form uses `baseRate * (1 - tierDiscount) * (1 - refereeDiscount)` separately for maker and taker. Its `info` contains `baseMaker`, `baseTaker`, `feeTier`, `makerDiscountRate`, `takerDiscountRate`, and `refereeDiscountRate`. These are indexed values and may lag a recent account change. An explicit builder fee still needs separate accounting.

Malformed addresses return 400. If account discounts cannot be read, the account form fails rather than returning base rates as a personalized answer. Database failures return 500; unavailable discount support returns 503.

```json theme={null}
{
  "AULT/USDC": {
    "symbol": "AULT/USDC",
    "maker": "0.00015",
    "taker": "0.00035",
    "percentage": true,
    "tierBased": false,
    "info": {}
  }
}
```

Without `address`, rates match the market base rates in `GET /api/v1/markets`. With `address`, use the returned account rates. `tierBased` indicates whether a tier schedule is available; it does not identify the account's tier and can be false when schedule data is unavailable.

Reconcile actual [settled fees by currency](https://docs.aultblockchain.com/dex-api/rest/user-fills.md#reconciling-an-order). A quoted discount or `tierBased` does not mean you receive a rebate, maker incentive, or execution priority.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.