Skip to main content
POST
Buy listings from your balance
Эндпоинт orders позволяет покупать от 1 до 10 листингов в одном атомарном запросе. Списание производится с вашего баланса CSBoard по живой цене продажи в момент исполнения — не по той цене, которую вы видели при запросе /v1/listings. Чтобы защититься от движений цены между запросом и покупкой, всегда указывайте max_price_usd как верхнюю границу итога. Эндпоинт идемпотентен: повтор с тем же Idempotency-Key воспроизводит исходный заказ, а не создаёт дубликат списания. Требуется аутентификация. Отправьте ключ как Authorization: Bearer csb_pub_.... Требуется возможность торговли. Для API-ключа должны быть включены покупки. Настройте это в профиле CSBoard.

Предварительные условия

Перед оформлением заказа убедитесь, что:
  1. Ключ с включённой торговлей — покупки должны быть включены для вашего API-ключа в настройках профиля CSBoard.
  2. Привязанный аккаунт Steam и trade URL — к аккаунту CSBoard должен быть привязан аккаунт Steam с валидным trade URL, чтобы предметы можно было доставить.
  3. Достаточный баланс — баланс CSBoard должен покрывать суммарную стоимость предметов по их живым ценам.

Заголовки запроса

string
Необязательно. Уникальная строка (например, UUID), идентифицирующая эту попытку заказа. Если вы повторяете запрос с тем же ключом, сервер воспроизводит исходный ответ заказа вместо повторного исполнения покупки. Используйте это для безопасного повтора при сетевых таймаутах без риска двойного списания.

Тело запроса

string[]
обязательно
Массив из 1–10 уникальных ID листингов для покупки. Получайте их из поля id ответов GET /v1/listings. Каждый ID должен встречаться в запросе только один раз.
number
Верхняя граница итоговой цены в USD, проверяется атомарно в момент исполнения. Если живой итог по всем предметам превышает это значение, весь заказ отклоняется с ошибкой price_moved и списания не происходит. Настоятельно рекомендуется — без него у вас нет защиты от переплаты.
string
Альтернатива заголовку Idempotency-Key. Если переданы оба, заголовок имеет приоритет. Используйте что-то одно.

Поля ответа

string
обязательно
Уникальный идентификатор этого заказа, например ord_01J9Z3K8Q2.
string
обязательно
Текущий статус заказа: processing, completed или failed.
object[]
Разбивка заказа по предметам.
number
обязательно
Сумма всех списаний по предметам. Это итоговая сумма, списанная с вашего баланса.
number
Ваш баланс CSBoard сразу после списания.
datetime
Временная метка ISO 8601 создания заказа.

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

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

Коды ошибок

Всегда указывайте max_price_usd в запросе. Цены на живом маркетплейсе могут измениться между моментом запроса /v1/listings и моментом исполнения заказа. Без этой верхней границы с баланса может быть списана более высокая сумма, чем вы планировали, и автоматического отката нет.
Предметы, доставляемые в режиме hold, попадают под торговый холд Steam. Проверяйте поле tradable_at исходного листинга (из GET /v1/listings), чтобы узнать, когда именно удерживаемый предмет станет доступен для обмена в вашем инвентаре Steam.

Авторизации

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

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

Заголовки

Idempotency-Key
string

Optional. A retried request with the same key replays the original order instead of buying twice.

Тело

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

1–10 unique ids from /v1/listings. Some items can't be combined in a single order — if so the order is rejected and you can split it.

Required array length: 1 - 10 elements
max_price_usd
number

Total ceiling in USD. Strongly recommended — your overcharge protection, enforced atomically inside the locked debit.

idempotency_key
string

Optional; or send the Idempotency-Key header. Replays the original order on retry.

autoclaim
boolean

Sticky per-account setting (not per-order). Send true once to switch your key into auto-claim mode: every held order is then auto-released the moment its hold clears (your bot must auto-accept the Steam trade offer within ~15 minutes). Send false to switch back to manual claiming via POST /orders/{id}/claim. Omit to leave the setting unchanged.

Ответ

Order accepted and debited.

order_id
string
обязательно
status
enum<string>
обязательно
Доступные опции:
processing,
completed,
failed
total_charged_usd
number
обязательно
items
object[]
balance_after_usd
number
created_at
string<date-time>