# Your trades and transactions history (v2)

`POST /v2/my-history`

POST /v2/my-history takes the same request and returns the same response as POST /v1/my-history, but it is faster on long histories. Trades are ordered by trade id. Both paths are served by the same implementation, so v1 keeps working.

On buy rows, `price` is the price you actually paid (if you get a partner price, this is your price, not the public listing price).

Boolean body fields accept true/false, 1/0, or "true"/"false".

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `api` | query | string | required | Your [WAXPEER API](https://waxpeer.com/profile/user) |

## Request body

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `skip` | number | optional | Skip to get next results (max 1000) |
| `start` | string | optional | Start date |
| `end` | string | optional | End date |
| `sort` | enum | optional | Sort by creation time |
| `float` | number | optional | Selects item float if set to 1 (May be null if an item inspect has not been done before sale) |
| `hold_only` | boolean | optional | Filter to show only trades with funds on hold (is_released=false with release_date present) |
| `spendings` | boolean | optional | Include outgoing balance history (balance decreases, e.g. tips sent) in a `spendings` array |
| `incomings` | boolean | optional | Include incoming balance history (balance increases, e.g. tips received) in an `incomings` array. The `reason` field identifies the source. |
| `project_id` | boolean | optional | true: include your project_id on your buy rows. Accepts true/false, 1/0 or "true"/"false". |
| `orig_price` | boolean | optional | true: on sell rows, price is the listing price instead of the amount you received. Accepts true/false, 1/0 or "true"/"false". |
| `ignoreSteamid` | boolean | optional | true: return only trades made on your account. By default, trades sent to your Steam ID are included too. Accepts true/false, 1/0 or "true"/"false". |
| `all` | boolean | optional | true: return all trades, without the 100-row page limit. Accepts true/false, 1/0 or "true"/"false". |

```json
{
  "skip": 0,
  "start": "09-20-2022",
  "end": "10-25-2022",
  "sort": "DESC",
  "float": 0,
  "hold_only": false,
  "spendings": false,
  "incomings": false,
  "project_id": true,
  "orig_price": true,
  "ignoreSteamid": true,
  "all": false
}
```

## Example (curl)

```bash
curl -X POST 'https://api.waxpeer.com/v2/my-history?api=%7B%7BAPI_KEY%7D%7D' \
  -H 'Content-Type: application/json' \
  -d '{
  "skip": 0,
  "start": "09-20-2022",
  "end": "10-25-2022",
  "sort": "DESC",
  "float": 0,
  "hold_only": false,
  "spendings": false,
  "incomings": false,
  "project_id": true,
  "orig_price": true,
  "ignoreSteamid": true,
  "all": false
}'
```

## Example response

```json
{
  "success": true,
  "data": {
    "trades": [
      {
        "date": "2022-10-29T23:58:17.318Z",
        "created": "2022-10-29T23:52:17.318Z",
        "id": 4258120,
        "item_id": "27341302961",
        "give_amount": 1898572,
        "image": "https://steamcommunity-a.akamaihd.net/economy/image/class/730/4839650857/200fx125f",
        "price": 2019758,
        "trade_id": 123456789,
        "game": "csgo",
        "name": "★ Karambit | Gamma Doppler (Factory New)",
        "market_name": "Gamma Doppler Phase 3",
        "float": 0.0460052728652954,
        "status": 5,
        "average": 2419222,
        "action": "buy",
        "is_released": false,
        "release_date": "2025-07-28T10:30:00.000Z",
        "project_id": "my-shop-order-123"
      }
    ],
    "transactions": [
      {
        "wallet": "string",
        "type": "BTC",
        "status": "completed",
        "amount": 10256672,
        "give_amount": 10256672,
        "direction": "in",
        "date": "2022-01-22T01:22:43.021Z"
      }
    ]
  }
}
```

## Responses

- `200` successful operation

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `success` | boolean | optional |  |
| `data` | object | optional |  |
| `data.trades` | array<object> | optional |  |
| `data.trades.date` | string | optional | When trade was updated last time |
| `data.trades.created` | string | optional | When trade was created |
| `data.trades.id` | number | optional | Waxpeer trade id |
| `data.trades.item_id` | string | optional | Steam item id before trade |
| `data.trades.give_amount` | number | optional | Item price without fee (1000 = 1$) |
| `data.trades.image` | string | optional | Item image |
| `data.trades.price` | number | optional | Item price (1000 = 1$). On your buy rows, price is the price you actually paid (reflecting any partner price, not the public listing price). On sell rows with orig_price=true, price is the listing price instead of the amount received. |
| `data.trades.trade_id` | number | optional | Steam trade id (if trade was created) |
| `data.trades.game` | string | optional | What game the item is from |
| `data.trades.name` | string | optional | Item name |
| `data.trades.market_name` | string | optional | Market name of an item (Usually part of market_hash_name, but includes doppler phases as on example) |
| `data.trades.float` | number | optional | Item float |
| `data.trades.status` | number | optional | Status of the trade:   6->Declined and refunded  5->Completed  4->Trade sent and can be accepted  2->Waiting for seller to confirm trade on mobile  1->Processing and creating the trade  0->Waiting for user to buy more items and if the user doesn't buy more items then the status will automatically change with in a certain period |
| `data.trades.average` | number | optional | Average steam price (1000 = 1$) |
| `data.trades.action` | enum | optional | Action |
| `data.trades.is_released` | boolean | optional | Indicates whether the funds have been released after the 7-day hold period. When false with release_date present, the buyer has accepted the item but funds are on hold until release_date |
| `data.trades.release_date` | string | optional | The timestamp when funds will be released from hold and the trade will transition to final status. Only present when is_released is false and buyer has accepted the item |
| `data.trades.project_id` | string | optional | Your project_id identifier on buy rows (included when project_id=true is requested in body). |
| `data.transactions` | array<object> | optional |  |
| `data.transactions.wallet` | string | optional | Wallet |
| `data.transactions.type` | string | optional | Type of transaction |
| `data.transactions.status` | string | optional | Status of transaction |
| `data.transactions.amount` | string | optional | Received amount (1000 = 1$) |
| `data.transactions.give_amount` | string | optional | Amount of balance change after fee (1000 = 1$) |
| `data.transactions.direction` | string | optional | Direction of the transaction |
| `data.transactions.date` | string | optional | Date of transaction |


## Notes for agents

- Auth is the query parameter `api`, not an Authorization header.
- See [/statuses.md](/statuses.md) for numeric trade status plus `escrow_status` / `release_date`.
- Prefer GET /v2/search-items-by-name over v1.
- Prefer GET /v2/get-items-list over v1 (cursor keyset pagination without the 5000 row cap). Pass next_cursor only while has_more is true.
- Prefer POST /v2/my-history over v1 (faster on long histories, ordered by trade id). On buy rows, price is the amount you paid.
- Trade-locked listings are omitted unless you pass include_hold=1. They then include unlock_at and send_until (RFC 3339 UTC).
- Buy a trade-locked listing only by exact item_id with allow_trade_locked (query 1 on GET /v1/buy-one-p2p, body true on POST /v1/buy). GET /v1/buy-one-p2p-name never sells hold items.
- CSV snapshot: GET /v1/prices/snapshot?format=csv (gzip). include_hold appends unlock_at,send_until. compact and whitemarket are JSON-only.
- Do not use GET /v1/ready-to-transfer-p2p; use the [trade websocket](/websocket.md).
