Create withdrawal
Accept an order request for asynchronous processing and validate expected price.
POST
/v1/ordersClient credentials. Returns 202.
Request body
| Field | Type | Description |
|---|---|---|
catalogItemId | UUID | Required. The exact item id from a fresh catalog response. |
expectedPrice | integer | Required. The displayed catalog price in USD cents; protects against price changes. |
externalId | string | Required. Your stable order identifier, unique within your client account. |
webhookUrl | string | Required. Your HTTPS receiver for order.updated callbacks. |
tradeUrl | string | Required. The recipient's Steam trade URL. |
Request
curl -X POST 'https://api.skinsnode.com/v1/orders' \
-H "x-client-id: client_live_abc123" \
-H "x-client-secret: sk_live_replace_me" \
-H "content-type: application/json" \
-d '{
"catalogItemId": "8d15e82b-21fe-4ec1-a37f-1e2e5edeb1fd",
"expectedPrice": 1840,
"externalId": "order_100042",
"webhookUrl": "https://store.example/webhooks/orders",
"tradeUrl": "https://steamcommunity.com/tradeoffer/new/?partner=123&token=abc"
}'Response 202 Accepted
{
"externalId": "order_100042",
"status": "accepted",
"acceptedAt": "2026-04-25T12:30:00.000Z"
}Integration rules
A 202 response means the order was accepted for background processing, not delivered. Persist the order, then process signed callbacks and use lookup as a fallback.
The recipient has 10 minutes to accept the trade. Handle price changes or unavailable items by refreshing the catalog, not repeatedly submitting a new order.