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

# Get Self-Trade(s)

> Fetch one or more merchant self-trades by trade id or your externalId.

# GET /secure/trades/\{tradeId}

Returns trades initiated via `/secure/sell` or `/secure/buy`. `tradeId` accepts either the internal trade id or the `externalId` you supplied at creation. Scoped to the calling merchant — another merchant's trade or a `client`-source trade is treated as not found.

**Authentication:** Merchant API Key (`api-key` header)
**Scope:** `CORE_ACCESS`

## Request (single)

```http theme={null}
GET https://api.assetpay.gg/secure/trades/wd_unique_789
api-key: ap_...
```

A single ref returns one [`Trade`](/reference/types#trade) object, or `404 TRADE_NOT_FOUND` if it doesn't resolve.

```json theme={null}
{
  "requestId": "...",
  "success": true,
  "data": {
    "id": "trade-uuid",
    "type": "withdraw",
    "source": "self",
    "status": "hold",
    "game": "730",
    "externalId": "wd_unique_789",
    "merchantId": "merchant-uuid",
    "clientSteamID": "76561198012345678",
    "clientTradeUrl": "https://steamcommunity.com/tradeoffer/new/?partner=12345&token=ABCDEFGH",
    "items": [ /* InventoryItem[] */ ],
    "totalPrice": 45.00,
    "offerID": "9088123456",
    "botInfo": {
      "name": "tradingbot01",
      "avatar": "https://...",
      "steamId": "76561198..."
    },
    "createdAt": "2026-05-14T12:00:00.000Z",
    "updatedAt": "2026-05-14T12:01:30.000Z"
  }
}
```

## Fetching multiple (batch)

Comma-separate up to **100** ids/externalIds to fetch several in one call — ideal for polling the status of multiple pending withdrawals without one request per trade.

```http theme={null}
GET https://api.assetpay.gg/secure/trades/wd_1,wd_2,wd_3
api-key: ap_...
```

With more than one ref the `data` is an **array** of the trades that resolved. Unresolved refs are simply omitted (no `404`), so compare the returned `externalId`s against what you asked for to find the gaps.

```json theme={null}
{
  "requestId": "...",
  "success": true,
  "data": [
    { "id": "...", "externalId": "wd_1", "status": "completed", "...": "..." },
    { "id": "...", "externalId": "wd_2", "status": "hold", "...": "..." }
  ]
}
```

(`wd_3` didn't resolve, so it's absent from the array.)

## Rate Limits

| Merchant Status | Limit                |
| --------------- | -------------------- |
| Verified        | 3,000 requests / min |
| Unverified      | 100 requests / min   |

## Errors

| Code | Key                 | When                                                                                                                                                     |
| ---- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 21   | `TRADE_NOT_FOUND`   | A single ref doesn't resolve (not found, another merchant's trade, or a `client`-source trade). Batch requests omit unresolved refs instead of erroring. |
| 1001 | `VALIDATION_FAILED` | More than 100 refs supplied in one request.                                                                                                              |
