Appearance
Purchase History
GET /api/v1/merchant/purchase
Retrieves purchase history with pagination and filtering.
Request
Headers
| Header | Required | Description |
|---|---|---|
X-Api-Key | ✅ | Your merchant API key |
Accept | — | application/json |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | — | Items per page |
offset | integer | — | Pagination offset |
status | string | — | Filter by status: new, pending, active, hold, completed, failed, canceled, reverted |
date_range | integer | — | Days to look back: 1, 7, 30, 90, 365 |
search | string | — | Search query (1–100 characters) |
sort | string | — | Sort field (prefix with - for descending): id, -id, merchant_tx_id, -merchant_tx_id, status, -status, amount, -amount, created_at, -created_at |
Response
json
{
"success": true,
"message": "Purchase history retrieved successfully",
"data": {
"data": [
{
"id": 39,
"merchant_tx_id": "order-12345",
"status": "canceled",
"steam_id": "76561199189424248",
"steam_name": "PlayerOne",
"steam_avatar_url": "https://avatars.steamstatic.com/...",
"date": "2026-03-26T10:35:51.118731+03:00",
"amount": 3.15,
"trade_offer_id": "8965267962",
"item": {
"id": "584165445",
"name": "Urban Camo MP5",
"price": 3.15,
"image_url": "https://steamcommunity-a.akamaihd.net/economy/image/class/252490/2274469358"
}
}
],
"total": 2
}
}Response Fields
| Field | Type | Description |
|---|---|---|
data | array | List of purchase records |
total | integer | Total number of matching purchases |
data[].id | integer | Purchase ID |
data[].merchant_tx_id | string | Your transaction ID (only present if provided at creation) |
data[].status | string | Current purchase status |
data[].fail_reason | string | Failure reason (only present when status is failed) |
data[].steam_id | string | User's Steam ID (64-bit, as string) |
data[].steam_name | string | User's Steam display name (only present if available) |
data[].steam_avatar_url | string | User's Steam avatar URL (only present if available) |
data[].date | string | Purchase creation timestamp (ISO 8601) |
data[].amount | number | Purchase amount (USD) |
data[].trade_offer_id | string | Steam trade offer ID (only present if available) |
data[].item | object | Purchased item details (only present if available) |
data[].item.id | string | Asset ID |
data[].item.name | string | Item market name |
data[].item.price | number | Item price (USD) |
data[].item.image_url | string | Steam CDN image URL |
INFO
Optional fields (merchant_tx_id, fail_reason, steam_name, steam_avatar_url, trade_offer_id, item) are omitted from the response when not available — they will not appear as null.
Example
bash
curl "https://api.skinslink.com/api/v1/merchant/purchase?limit=100" \
-H "X-Api-Key: your-api-key" \
-H "Accept: application/json"With filters
bash
curl "https://api.skinslink.com/api/v1/merchant/purchase?limit=20&status=completed&date_range=30&sort=-created_at" \
-H "X-Api-Key: your-api-key" \
-H "Accept: application/json"Errors
| Status | Message | Cause |
|---|---|---|
400 | validation error | Invalid filter parameters |
401 | missing authorization header | X-Api-Key header not provided |
401 | invalid API key | API key not found or inactive |
403 | merchant account is disabled | Merchant account deactivated |
403 | invalid IP: <ip> | Request IP not in whitelist |
500 | internal error | Something went wrong on our side |
