---
title: "Live trade tape: the newest QX fills and QSwap swaps, newest first, with the direction of each"
method: GET
path: "/v1/tape"
---

# Live trade tape: the newest QX fills and QSwap swaps, newest first, with the direction of each

`GET /v1/tape`

## Request

- Base URL: `https://qmax.exchange/api`
- URL: `https://qmax.exchange/api/v1/tape`
- Auth: none declared

Every fill on the QX order book and every swap on QSwap, from one feed. `side` is the direction of the party that started the trade (buy: they bought the asset); it is read from the swap's own log or, for a QX fill, from the transaction that caused it, and is missing for a QX fill whose transaction could not be read (yet). Pass `since=<latestId>` from the last response to get only what came after: ids only grow, and a row keeps its id when its side arrives later, so a row whose side is missing can be fetched again by asking from before it. If more than `limit` rows are newer than `since`, the newest `limit` are returned. Ids start over when the server restarts: `instance` changes then, and a client holding an old cursor should drop it. `flow24h` sums the last 24 hours for the same asset and venue (see /v1/flow).

## Query parameters

- `asset` string
- `limit` integer
- `since` integer
- `venue` 'QX' | 'QSwap'

## Response `200`

{ trades: [{ id, t, venue, asset, assetKey, qty, qu, price, side?, txHash? }], latestId, instance, flow24h }

## Other responses

- `400`: Invalid input
- `404`: Unknown asset

---

[API](https://skmtc.dev/qmax/apis/qmax-api.md) · [All operations](https://skmtc.dev/qmax/apis/qmax-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qmax/apis/qmax-api/revisions/af70e2813a7a?raw)
