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

# Check Trade URL

> Validate a Steam trade URL and check the linked account's trade eligibility before you authenticate a client, so restricted or invalid accounts fail early.

Validates a Steam trade URL and returns information about the account's trade eligibility. Use this before authenticating a client to catch invalid or restricted accounts early.

**Authentication:** API Key (`api-key` header, requires `CORE_ACCESS` scope)

## Request

```http theme={null}
POST https://api.assetpay.gg/secure/check-tradeurl
Content-Type: application/json
api-key: YOUR_API_KEY

{
  "tradeurl": "https://steamcommunity.com/tradeoffer/new/?partner=12345678&token=AbCdEfGh",
  "forceRefresh": false
}
```

### Body Parameters

| Parameter      | Type    | Required | Description                                 |
| -------------- | ------- | -------- | ------------------------------------------- |
| `tradeurl`     | string  | Yes      | Steam trade URL to validate                 |
| `forceRefresh` | boolean | No       | Bypass cache and recheck (default: `false`) |

## Response

```json theme={null}
{
  "requestId": "...",
  "success": true,
  "data": {
    "state": 1,
    "steamid": "76561198012345678",
    "message": "Trade URL is valid",
    "canTrade": true,
    "bans": { "vacBanned": false, "gameBans": 0, "economyBan": "none" }
  }
}
```

### Response Fields

| Field               | Type    | Description                                                                    |
| ------------------- | ------- | ------------------------------------------------------------------------------ |
| `state`             | number  | Trade URL state (see values below)                                             |
| `steamid`           | string  | Steam ID 64 (present when the URL resolves to a user)                          |
| `message`           | string  | Human-readable status message                                                  |
| `canTrade`          | boolean | Whether the account can perform trades (present when state is 1-4)             |
| `reason`            | object  | Present only when `canTrade` is `false`                                        |
| `reason.escrowDays` | number  | Steam escrow days (0 if mobile auth is set up)                                 |
| `reason.probation`  | boolean | Whether the account is on probation                                            |
| `bans`              | object  | Steam ban record for the account (present when the URL resolves to a user)     |
| `bans.vacBanned`    | boolean | VAC ban on record. Blocks CS2 deposits; Rust is unaffected                     |
| `bans.gameBans`     | number  | Game bans on record. Informational only; Steam still trades for these accounts |
| `bans.economyBan`   | string  | Steam economy ban state: `none`, `probation` or `banned`                       |

### State Values

| Value | Name             | Meaning                                                                                                                                                                                                                                       |
| ----- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `1`   | Normal           | Trade URL is valid, full trading permissions                                                                                                                                                                                                  |
| `2`   | CS2Banned        | Can trade Rust items but not CS2 items. Also returned when `bans` shows a VAC ban: Steam refuses CS2 offers from such accounts even though the inventory still lists the items as tradable, and a CS2 deposit fails with `USER_NOT_TRADEABLE` |
| `3`   | RustBanned       | Can trade CS2 items but not Rust items                                                                                                                                                                                                        |
| `4`   | Banned           | No trading permissions for any game                                                                                                                                                                                                           |
| `5`   | InventoryPrivate | User's inventory is set to private                                                                                                                                                                                                            |
| `6`   | TradeUrlInvalid  | The trade URL format is invalid                                                                                                                                                                                                               |
| `7`   | UserNotFound     | No user found under this trade URL                                                                                                                                                                                                            |
| `8`   | UnknownError     | An unexpected error occurred                                                                                                                                                                                                                  |
| `9`   | UserNotTradeable | Steam reports the account as not available to trade (new device, recent password change, Steam Guard cooldown)                                                                                                                                |
| `10`  | SteamUnavailable | Steam did not answer; retry later                                                                                                                                                                                                             |

## Caching

Results are cached for 1 hour. Use `forceRefresh: true` only when you need to recheck a specific URL, not on every call.

## Rate Limits

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