Часовая история цен
Метод реализован локально. Выкатка в прод и полнота исторических данных проверяются отдельно: наличие метода не означает, что у каждого предмета уже есть полный график.
Получить данные для графика
Заголовок раздела «Получить данные для графика»GET /v1/items/{item_id}/history/hourly читает сохранённые часовые снимки из нашей
БД, не обращаясь к поставщику. Сначала найди точный ID: износы и фазы различаются.
curl 'https://api.csfolder.com/v1/items/123/history/hourly?from=2026-09-01&to=2026-09-07&provider=steam&side=ask&limit=100' \ -H "Authorization: Bearer $CSFOLDER_API_KEY"123 — пример, подставь найденный ID. Ключ хранится в окружении сервера, не в
промпте, URL или браузере. Подробнее: ключи и доступ.
side: по умолчаниюask, либоbid. Одно не подменяется другим.provider: точный идентификатор маркета, необязателен. Без фильтра возвращаются все маркеты с ценой на выбранной стороне. Отсутствующий маркет не подменяется другим.from/to: даты UTC включительно, максимум 31 день. По умолчанию сегодня и предыдущие 30 дней. Длинную историю запрашивай отдельными окнами.limit: количество строк, а не часов; по умолчанию 500, максимум 1 000. В MCP по умолчанию 25, максимум 100.after: передавайmeta.next_page, пока он не станет null. Не меняй предмет, сторону, маркет и даты. Курсор запоминает фильтры и даты, если в продолжении их нет.
Строка содержит ts, provider, side, amount, quantity, currency: USD,
minor_units: 2, kind: hourly_cached_quote, availability, ingested_at,
checked_at, source_observed_at. Цена — целые центы USD; неизвестное количество —
null. Сортировка: час UTC и маркет, сначала отметки без маркета. Сохранённая история
остаётся доступной, даже если предмет удалён из текущего каталога.
Пропуск — не ноль
Заголовок раздела «Пропуск — не ноль»availability |
Значение |
|---|---|
quoted |
В снимке есть цена для этого маркета и стороны. |
item_missing |
Снимок был записан, но точный предмет/фаза отсутствовал в его фиде. Цена null. |
no_quote |
Предмет присутствовал, но для выбранного маркета/стороны цены нет. Цена null. |
Без фильтра маркета возвращаются строки с доступными ценами. Если на выбранной стороне нет ни одной цены, возвращается одна отметка с provider=null. Все отсутствующие маркеты по отдельности не перечисляются. С фильтром отметка сохраняет запрошенный provider.
Если часовой снимок не записан, строки за этот час нет. Не подставляй ноль или предыдущую цену как наблюдение. На графике показывай разрыв; пустая история не означает нулевую стоимость предмета.
Что означает время
Заголовок раздела «Что означает время»ts — часовой интервал. checked_at — время нашей успешной проверки GET/304;
ingested_at — время публикации зеркала цен. source_observed_at остаётся null,
если поставщик не передаёт время наблюдения цены. Ответ 304 подтверждает неизменность
кэша, а не новую цену на маркете. Это не история сделок и не OHLC.
Сохраняется первый успешный проверенный снимок каждого часа UTC. Последующие обновления
внутри часа его не перезаписывают. Строки неизменяемы, но пагинация не фиксирует всю
выборку: поздняя запись может потребовать перечитать окно и убрать дубли по ID предмета,
ts, маркету и стороне. Дневная /history — отдельные данные; она не размножается
в искусственные часовые точки.
Построить с AI
Заголовок раздела «Построить с AI»SDK: api.request('getHourlyPriceHistory', { params, query }) или ограниченный
api.pages('getHourlyPriceHistory', input, { maxPages }). MCP-инструмент называется
так же и получает те же аргументы, по одной странице за вызов. Достигнутый лимит страниц
не означает полную выгрузку: проверяй оставшийся next_page.
Промпт: «Сделай график Steam asks для этого точного предмета через getHourlyPriceHistory. Сохрани null и разрывы, раздели время проверки кэша и время источника, держи ключ на сервере, протестируй пагинацию и 429».
Подробнее: TypeScript SDK и MCP и skill.