> ## 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.

# User Fills

> [!NOTE]
>
> Spot reads are available on Mainnet and Testnet. Margin account fields and Perpetual references on this page are **Testnet-Only**.

Fill history for one address, used for reconciliation and accounting.

## Get Own Trades

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

| Parameter | Type | Required | Description |
| - | - | - | - |
| `address` | string | yes | Bech32 or EVM hex account address |
| `symbol` | string | no | For example `AULT/USDC` |
| `since` | int64 | no | Unix millisecond timestamp |
| `limit` | integer | no | Default 100, maximum 500 |
| `cursor` | string | no | Opaque continuation from `X-Next-Cursor` |
| `before_height` | int64 | no | Cursor upper half, pass with `before_index` |
| `before_index` | int64 | no | Cursor lower half |

```bash theme={null}
curl "https://am-api.cloud.aultblockchain.xyz/api/v1/mytrades?address=ault1...&limit=5"
```

```json theme={null}
[
  {
    "id": "21014477-0001000000000140a7cd000000000000-0",
    "order": "0001000000000140a7cd000000000000",
    "timestamp": 1787548712000,
    "datetime": "2026-08-24T05:18:32Z",
    "symbol": "AULT/USDC",
    "type": "limit",
    "cloid": "4c8460056f113306",
    "side": "sell",
    "takerOrMaker": "taker",
    "price": "0.005114",
    "amount": "2000",
    "cost": "10.228",
    "fee": { "cost": "0.0035798", "currency": "USDC", "rate": "0.00035" },
    "info": {
      "paid": "2000000000000000000000.000000000000000000aault",
      "received": "10224420200000000000erc20:0x5b58c971AF1EE0Fe5D5f772d68Ab3829262DFD2b",
      "block_height": "21014477",
      "event_index": 13
    }
  }
]
```

## Difference from the Public Feed

Each match writes a maker leg and a taker leg. [Market Data](https://docs.aultblockchain.com/dex-api/rest/market-data.md) returns the maker leg
only. This endpoint returns whichever leg belongs to the address, so `takerOrMaker` can be either
value and `fee.rate` follows accordingly.

Unlike the public feed, `order` and `cloid` are populated here, which is what lets you group fills
back to the order that produced them.

| Field | Description |
| - | - |
| `order` | Hex order id this fill belongs to |
| `cloid` | Client order id, if the order carried one |
| `takerOrMaker` | Whether this leg took or provided liquidity |
| `side` | This account's indexed buy/sell direction, independent of maker/taker role |
| `fee` | Realized fee when indexed, otherwise a legacy quote-currency estimate; includes currency and rate |
| `info.paid` / `info.received` | Raw amounts with denomination, in base units |

## Reconciling an Order

Sum the fills sharing one `order`:

* Executed quantity: sum of `amount`
* Average price: quantity-weighted mean of `price`
* Gross quote notional: sum of `cost`
* Fees: sum of `fee.cost` separately for each `fee.currency`

Spot receipts are truncated to integer token base units per fill. A weighted execution price and the net credited balance can therefore differ by rounding as well as fees. Use `info.paid` / `info.received` and confirmed balance movements when reconciling settlement.

Never add a base-asset fee directly to quote notional. For example, buying 100 AULT at 2 USDC has
200 USDC of gross notional. A 0.1 AULT fee reduces the received amount to 99.9 AULT; it does not
make the quote cost 200.1 USDC. A quote-asset fee instead changes the quote debit or proceeds.

REST uses the realized fee amount and denomination when the indexer recorded them. Older rows
without that information fall back to `cost * rate` in quote currency. Confirm actual settlement
against the recorded asset movements and chain events when the distinction matters.

WebSocket `userFills` uses the indexed fee amount and `feeToken` when available. Records
without that value fall back to a quote-currency estimate. The frame has no explicit
realized-versus-estimated flag. Reconcile by asset with REST and chain movements, and do not count
the same fee twice.

## Notes

Cursor paging works the same as on [Market Data](https://docs.aultblockchain.com/dex-api/rest/market-data.md), including the `503` when cursor
paging is temporarily unavailable. An invalid address returns `400 BAD_REQUEST`.

For fills as they happen, subscribe to `userFills` on
[Subscriptions](https://docs.aultblockchain.com/dex-api/websocket/subscriptions.md).


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