Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

userFills

Fill history. Extra filter: role is Maker or Taker. Include outcome in accountType to return Outcome book fills and split/merge activity. Outcome rows identify the instrument by its numeric coin/instrument id and may carry Outcome-side metadata added by the API service.

TWAP child fills can also be read with userTwapSliceFills.

POST/infotype userFills

Render Trade History / reconcile executions (maker or taker fills).paged { data, hasMore, total? }

Request body
typestringrequired

Must be `userFills`.

"userFills"
userstring · addressrequired

Account to query. No auth — the body `user` is the subject.

accountTypestring[]optional

Instrument tab: `["perp"]`, `["outcome"]`, or both (`perps` is accepted as an alias).

coinstringoptional

Single instrument — a name (`BTC`, `BTC-USDC`) or the numeric id from `perpMeta`. Prefer this over `contract` for one market.

contractstringoptional

`active` = instruments where this user currently has an open perps position (`szi ≠ 0`). Empty list when there is no position. Do not combine with `coin`.

"all""active"
endTimeMsinteger · uint64optional

Inclusive window end, Unix milliseconds. Alias: `endTime`.

limitinteger · int64optional

Page size. Default `300`; max `2000` (export). Values above 2000 are clamped. `<= 0` is rejected.

offsetinteger · int64optional

Skip this many newest-first rows. Omit or `0` for the first page; page N is `(N - 1) * limit`. Max `200000`. Alias: `from` on some types.

rolestringoptional

Optional liquidity-role filter.

"Maker""Taker"
sidestringoptional

Request filter uses `Buy` / `Sell`. Response `side` is usually `B` / `A`.

"Buy""Sell"
startTimeMsinteger · uint64optional

Inclusive window start, Unix milliseconds. Alias: `startTime`.

Request example
curl -X POST https://rpc.txflow-testnet.xyz/info \
  -H "Content-Type: application/json" \
  -H "x-api-version: 2026-08-16" \
  -d '{
  "type": "userFills",
  "user": "0x0000000000000000000000000000000000000001",
  "offset": 0,
  "limit": 20
}'
Try it
POST https://rpc.txflow-testnet.xyz/info
Response 200
codeinteger

`0` on success.

dataobject
dataUserFill[]

Newest-first rows for this page.

hasMoreboolean

`true` when more rows exist after this page. Prefer this over guessing from a missing `total`.

totalinteger · uint64

Omitted when the count is unknown.

successboolean
Response example
{
  "success": true,
  "code": 0,
  "data": {
    "data": [
      {
        "coin": "BTC",
        "symbol": "BTC-USDC",
        "px": "65010.5",
        "sz": "0.01",
        "side": "B",
        "time": 1720000000000,
        "startPosition": "0",
        "dir": "Open Long",
        "closedPnl": "0",
        "hash": "",
        "oid": 123456,
        "crossed": null,
        "fee": "0.02",
        "tid": 987654,
        "feeToken": "USDC",
        "twapId": 0,
        "entryPrice": "",
        "roe": "",
        "tradeSide": "Taker",
        "marginMode": "cross",
        "leverage": 10,
        "instrumentId": 1,
        "instrumentType": "perps",
        "marketType": "perps"
      }
    ],
    "hasMore": true,
    "total": 1337
  }
}