Skip to main content
API CSBoard спроектирован для автоматизации. Каждый эндпоинт детерминирован, использует курсорную пагинацию и учитывает лимиты запросов, что делает простым создание мониторов цен, ботов для снайпинга, инструментов арбитража и полноценных конвейеров рыночных данных. Это руководство покрывает ключевые паттерны, нужные для построения надёжных автоматизированных систем.

Интеграция с AI-агентом

Если вы создаёте AI-агента или инструмент на базе LLM, самый быстрый способ дать ему доступ ко всей поверхности API — машиночитаемая спецификация по адресу /llms.txt. В этом файле содержится полный API в едином компактном документе — без необходимости парсинга. Для агентов, поддерживающих Model Context Protocol (MCP), добавьте сервер CSBoard в конфигурацию MCP:
После подключения агент может вызывать любой эндпоинт CSBoard как инструмент — просматривать листинги, проверять цены и размещать ордера — без необходимости писать клеящий код.

Опрос новых листингов

Чтобы обнаруживать новые листинги по мере их появления без пересканирования всего каталога, используйте sort=newest в сочетании с курсорной пагинацией. На каждом цикле опроса пролистывайте страницы, пока не дойдёте до уже виденного ID листинга, и останавливайтесь.
Инициализируйте SEEN_IDS при старте, выполнив один полный опрос без действий по его результатам. Так вы будете запускать действия только для листингов, появившихся после старта вашего бота, а не для всего, что уже было в каталоге.

Бот для мониторинга цен

Опрашивайте GET /v1/prices по расписанию, сравнивайте min_price_usd каждого предмета с вашим порогом и запускайте уведомление или автоматическую покупку, когда цена опускается ниже него.
min_price_usd из /v1/prices — это индикативный сгруппированный снапшот, он может отставать от живой цены по конкретному предмету. Всегда получайте конкретный листинг из /v1/listings и используйте его price_usd как авторитетную цену перед размещением ордера.

Безопасная автоматизация покупок

Автоматическая покупка требует более защищённого кода, чем ручная. Соблюдайте эти четыре правила безусловно. 1. Всегда отправляйте max_price_usd Ваш потолок применяется атомарно внутри списания с баланса. Без него скачок цены между получением листинга и исполнением ордера может привести к неожиданному списанию. Установите max_price_usd равным наблюдавшемуся price_usd плюс небольшой буфер, если вы готовы принять небольшое проскальзывание:
2. Всегда используйте Idempotency-Key Генерируйте один UUID v4 на каждую попытку ордера. Если ваш запрос завершился по таймауту или с сетевой ошибкой, повторите его с тем же ключом — сервер воспроизведёт исходный результат вместо повторного исполнения покупки.
3. Обрабатывайте 429 с учётом Retry-After Ответы с лимитом запросов содержат заголовок Retry-After (в секундах). Всегда читайте это значение и спите ровно это время — не используйте фиксированный backoff, так как он может оказаться короче или длиннее необходимого. 4. Корректно обрабатывайте 409 price_moved 409 price_moved означает, что цена превысила ваш потолок — списание не было выполнено. Решайте: повторно получить листинг, обновить max_price_usd и повторить, или отказаться от сделки:

Массовый конвейер данных

Для сайтов сравнения, аналитических дашбордов и любых систем, которым нужен полный каталог, используйте эндпоинт снапшота вместо пагинации по /v1/prices.
Используйте ETag, чтобы избежать повторной загрузки неизменённого снапшота. Сохраняйте значение заголовка ETag из каждого ответа 200 и отправляйте его обратно как If-None-Match в следующем запросе. Ответ 304 Not Modified означает, что ваша локальная копия по-прежнему актуальна.
Эндпоинт снапшота ограничен 1 запросом в минуту. Постройте конвейер так, чтобы использовать его как базовый слой, обновляемый каждые несколько минут, и накладывать сверху обновления в реальном времени из /v1/prices для активно отслеживаемых предметов.

Чек-лист лучших практик

Перед выходом в продакшен убедитесь, что выполнено всё перечисленное ниже:
  • ✅ Вы отправляете max_price_usd в каждом вызове POST /v1/orders
  • ✅ Вы генерируете свежий UUID v4 Idempotency-Key для каждой попытки ордера
  • ✅ Ваша логика повторов использует тот же Idempotency-Key при повторе после сетевой ошибки
  • ✅ Ваш обработчик 429 читает Retry-After и спит именно столько, а не жёстко заданное значение
  • ✅ Ваш обработчик 409 price_moved явно решает: повторить или прервать
  • ✅ Вы читаете price_usd из /v1/listings (а не /v1/prices) перед размещением ордера
  • ✅ Вы используете ETag с эндпоинтом снапшота, чтобы избежать лишних загрузок
  • ✅ У вашего API-ключа торговля включена только если ваш бот действительно должен покупать

Связанные страницы