Перейти к основному содержанию
POST
/
market
/
buy
Buy and deliver to a Steam trade URL
curl --request POST \
  --url https://csboard.com/v1/market/buy \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "item_ids": [
    "itm_8841201",
    "itm_8841340"
  ],
  "partner": "447383001",
  "token": "Ab3xZ9Qp",
  "max_price_usd": 30,
  "custom_id": "batch-2026-06-29-01",
  "skip_unavailable": false
}
'
{
  "data": {
    "purchase_id": "pur_01J9Z3K8Q2",
    "steam_id": "76561198000000000",
    "created_at": "2026-06-29T17:12:04Z",
    "custom_id": "batch-2026-06-29-01",
    "skins": [
      {
        "name": "AK-47 | Redline (Minimal Wear)",
        "price": 14.37,
        "status": "delivering",
        "return_reason": null,
        "steam_trade_offer_id": "5512345678"
      }
    ]
  }
}
Этот эндпоинт позволяет покупать и доставлять предметы напрямую на любой указанный вами Steam trade URL — не только на trade URL, привязанный к вашему аккаунту. Trade URL формируется из полей partner и token. Покупки финансируются только из вашего подтверждённого (защищённого от реверса) баланса, что делает эндпоинт пригодным для оптовых объёмов и потоков автоматической доставки. Эндпоинт идемпотентен через поле тела custom_id: повтор с тем же custom_id воспроизводит исходную покупку, а не делает покупку дважды, и воспроизведённый ответ содержит заголовок Idempotent-Replayed: true.
Этот эндпоинт работает за kill-switch и требует аккаунта, для которого включена торговля и нет истории реверсов. Когда kill-switch выключен, возвращается 403 external_buy_disabled.
Требуется аутентификация. Отправьте ключ как Authorization: Bearer csb_pub_.... Требуется возможность торговли. Для ключа должны быть включены покупки, а аккаунт должен быть чистым от реверсов.

Тело запроса

item_ids
string[]
обязательно
От 1 до 100 уникальных id листингов для покупки.
partner
string
обязательно
Значение partner из Steam trade URL (1–32 символа). Вместе с token образует конечный trade URL, на который доставляются предметы.
token
string
обязательно
Значение token из Steam trade URL (1–32 символа). Вместе с partner образует конечный trade URL.
max_price_usd
number
Верхняя граница итоговой цены в USD. Если живой итог превышает её, заказ отклоняется с ошибкой price_moved и ничего не списывается. Настоятельно рекомендуется.
custom_id
string
Ключ идемпотентности (1–128 символов). Повтор с тем же custom_id воспроизводит исходную покупку; ответ при повторе содержит Idempotent-Replayed: true.
skip_unavailable
boolean
по умолчанию:"false"
Если true, пропускать предметы, которые больше недоступны, вместо того чтобы отклонить весь запрос.

Поля ответа

data
object
обязательно

Пример запроса

curl -X POST https://csboard.com/v1/market/buy \
  -H "Authorization: Bearer csb_pub_..." \
  -H "Content-Type: application/json" \
  -d '{
    "item_ids": ["itm_8841201", "itm_8841340"],
    "partner": "447383001",
    "token": "Ab3xZ9Qp",
    "max_price_usd": 30.00,
    "custom_id": "batch-2026-06-29-01",
    "skip_unavailable": false
  }'

Пример ответа

{
  "data": {
    "purchase_id": "pur_01J9Z3K8Q2",
    "steam_id": "76561198000000000",
    "created_at": "2026-06-29T17:12:04Z",
    "custom_id": "batch-2026-06-29-01",
    "skins": [
      {
        "name": "AK-47 | Redline (Minimal Wear)",
        "price": 14.37,
        "status": "delivering",
        "return_reason": null,
        "steam_trade_offer_id": "5512345678"
      }
    ]
  }
}

Коды ошибок

HTTP-статусКодЗначение
400invalid_requestНекорректное тело (например, item_ids пуст или содержит более 100 элементов).
400unsupported_itemОдин или несколько предметов нельзя доставить через этот эндпоинт (например, id ss_live_*).
400invalid_trade_urlpartner + token не образуют валидный Steam trade URL.
401invalid_api_keyОтсутствует или некорректный API-ключ.
402insufficient_settled_balanceПодтверждённый баланс ниже суммы заказа. Включает required_usd и settled_usd.
402insufficient_balanceБаланс ниже суммы заказа.
403external_buy_disabledKill-switch выключен; эндпоинт сейчас недоступен.
403trading_not_enabledПокупки не включены для этого ключа.
403account_restrictedЭндпоинт требует аккаунт без истории реверсов.
409item_unavailableОдин или несколько предметов больше недоступны. Включает unavailable_ids[].
409price_movedЖивой итог превысил верхнюю границу. Включает quoted_max_usd, current_total_usd и items[].
409idempotency_in_progressЗапрос с этим custom_id ещё обрабатывается.
409price_updatingЦены обновляются; повторите через короткое время.
429rate_limit_exceededСлишком много запросов. Подождите время, указанное в заголовке Retry-After.
500order_failedПокупку не удалось завершить.
Средства берутся исключительно из вашего подтверждённого баланса. Перед большой партией проверяйте settled_balance_usd через GET /v1/balance и всегда передавайте max_price_usd в качестве защиты от переплаты.

Авторизации

Authorization
string
header
обязательно

Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.

Тело

application/json
item_ids
string[]
обязательно

1–100 unique listing ids to buy.

Required array length: 1 - 100 elements
partner
string
обязательно

Steam trade URL partner value. With token, forms the destination trade URL.

Required string length: 1 - 32
token
string
обязательно

Steam trade URL token value. With partner, forms the destination trade URL.

Required string length: 1 - 32
max_price_usd
number

Total ceiling in USD. Order is rejected with price_moved if the live total exceeds it.

custom_id
string

Idempotency key. A retry with the same value replays the original purchase.

Required string length: 1 - 128
skip_unavailable
boolean
по умолчанию:false

If true, skip items that are no longer available instead of failing the whole request.

Ответ

Purchase accepted and debited from settled balance.

data
object
обязательно