API v1
Интегрируйте наличие, цены и доставку за один вечер
REST поверх HTTPS, JSON на вход и выход, Bearer-ключи, вебхуки на каждое событие трейда. Sandbox зеркалит продакшен: первый вызов такой же, как тысячный.
Быстрый старт
- 01
Получите ключ
После верификации в дашборде появятся sandbox-ключ (sk_test_…) и продакшен-ключ (sk_live_…).
- 02
Запросите предметы
GET /v1/items возвращает те же 50 публичных позиций, что на Live-наличии, плюс вашу полную аллокацию.
- 03
Создайте заказ
POST /v1/orders с id предмета и вашей Steam trade URL. Бот отправит оффер в течение минуты.
Примеры запросов
# AK-47 в Field-Tested, сначала дешёвые curl "https://api.supplyskins.com/v1/items?q=AK-47&wear=field-tested&sort=price&limit=50" \ -H "Authorization: Bearer sk_live_7f3a9c2e" # Создать заказ (резервирует баланс, бот отправляет трейд-оффер) curl -X POST https://api.supplyskins.com/v1/orders \ -H "Authorization: Bearer sk_live_7f3a9c2e" \ -H "Content-Type: application/json" \ -d '{"item_id":"ss_0025","trade_url":"https://steamcommunity.com/tradeoffer/new/?partner=…"}'
import { SupplySkins } from "@supplyskins/sdk"; const api = new SupplySkins({ apiKey: process.env.SUPPLYSKINS_KEY }); const { items } = await api.items.list({ q: "AK-47", wear: "field-tested", sort: "price", limit: 50, }); const order = await api.orders.create({ itemId: items[0].id, tradeUrl: "https://steamcommunity.com/tradeoffer/new/?partner=…", maxPrice: items[0].price * 1.02, // допуск на обновление цены между списком и покупкой }); console.log(order.status); // "offer_sent"
import os, requests BASE = "https://api.supplyskins.com/v1" H = {"Authorization": f"Bearer {os.environ['SUPPLYSKINS_KEY']}"} items = requests.get(f"{BASE}/items", headers=H, params={ "q": "AK-47", "wear": "field-tested", "sort": "price", "limit": 50, }).json()["items"] order = requests.post(f"{BASE}/orders", headers=H, json={ "item_id": items[0]["id"], "trade_url": "https://steamcommunity.com/tradeoffer/new/?partner=…", }).json() print(order["status"]) # offer_sent
Эндпоинты
| Метод | Путь | Описание | Доступ |
|---|---|---|---|
| GET | /v1/items | Список инвентаря. Фильтры: q, category, wear, float_min, float_max, price_min, price_max, stattrak. Сортировка: price, float, updated_at. | ключ |
| GET | /v1/items/{id} | Один предмет с float, индексом паттерна, стикерами и текущей ценой. | ключ |
| POST | /v1/orders | Резерв и покупка предмета. Тело: item_id, trade_url, max_price (необязательно). | ключ |
| GET | /v1/orders/{id} | Статус заказа: reserved, paid, offer_sent, accepted, failed, expired. | ключ |
| GET | /v1/balance | Доступный и зарезервированный баланс в USD, адреса для пополнения. | ключ |
| POST | /v1/webhooks | Регистрация эндпоинта для событий order.* и item.price_changed. Подпись HMAC-SHA256. | ключ |
Авторизация, лимиты и ошибки
Авторизация
Authorization: Bearer sk_live_… Ключ показывается один раз; ротация из дашборда в любой момент.
Лимиты
600 запросов в минуту на ключ, 60 созданий заказов в минуту. Заголовки X-RateLimit-Remaining и Retry-After всегда присутствуют.
Ошибки
Стандартные HTTP-коды с JSON-телом: { "error": { "code": "item_unavailable", "message": "…" } }. 4xx чините вы, 5xx - мы.
Sandbox
Базовый URL https://sandbox.api.supplyskins.com. Та же схема, зеркальный инвентарь, тестовый баланс $10 000.
Полная документация
Полный справочник со схемами, payload вебхуков и SDK-сниппетами открывается после верификации вместе с ключами.