Настройка
1
Включите торговлю для ключа
Перейдите в API-профиль и переключите тумблер buying для нужного ключа. До этого каждый вызов
POST /v1/orders будет возвращать 403 trading_not_enabled.2
Привяжите аккаунт Steam и trade URL
Ордера доставляются напрямую в Steam, поэтому в профиле должны быть привязаны Steam-аккаунт и действующий trade URL. Без этого API возвращает
400 steam_account_required.3
Пополните баланс CSBoard
Покупки списываются с вашего существующего баланса CSBoard. Пополняйте его на сайте — через сам API нет пути оплаты картой или криптовалютой.
4
Найдите листинги для покупки
Запросите
GET /v1/listings, чтобы найти предметы и собрать их поля id. Каждое значение id в ответе — это стабильная ссылка, которую вы передаёте непосредственно в эндпоинт ордеров.5
Разместите ордер
Отправьте POST со списком ID листингов в
/v1/orders. Включите max_price_usd и Idempotency-Key — оба подробно объясняются ниже.Защита от перерасхода
Вам всегда списывается актуальная цена в момент исполнения, а не цена, которую вы видели при просмотре листингов. Рынки движутся — листинг, который вы получили 30 секунд назад, мог быть перевыставлен по более высокой цене к моменту исполнения ордера. Используйтеmax_price_usd как потолок общей суммы. Списание атомарно: если на момент исполнения актуальная сумма превышает ваш потолок, весь ордер отклоняется с 409 price_moved — ничего не списывается и ни один предмет не передаётся.
Если цена изменилась и вы получили 400, в теле ответа есть current_total_usd, чтобы вы могли решить, перепосылать ли запрос с более высоким потолком или прервать сделку:
Идемпотентность
Сетевые сбои случаются. Без идемпотентности повтор после таймаута может купить один и тот же предмет дважды. Чтобы этого избежать, отправляйте уникальный заголовокIdempotency-Key с каждым запросом ордера.
- Если сервер получает два запроса с одинаковым ключом, он воспроизводит исходный результат ордера — покупка никогда не выполняется повторно.
- Также можно передать
idempotency_keyв теле запроса вместо заголовка; эффект одинаковый. - Используйте UUID v4, сгенерированный на каждую попытку ордера, а не на каждый повтор.
Пример ответа
Успешный ордер возвращает200 с деталями ордера и вашим оставшимся балансом:
Доставка
Каждый предмет в ответе ордера содержит полеdelivery:
instant— предмет торгуем прямо сейчас и будет отправлен по вашему Steam trade URL немедленно.hold— предмет находится под trade hold в Steam. Смотрите полеtradable_atлистинга (ISO 8601 timestamp), чтобы узнать, когда он станет торгуемым.