Подключение через API
Передавайте остатки и цены напрямую из своих систем. Одного запроса достаточно, чтобы Veloseller начал рассчитывать дефицит, потерянную выручку, неликвид и рекомендации по закупке.
https://veloseller.com$ curl -X POST https://veloseller.com/api/v1/ingest \ -H "Authorization: Bearer vs_live_…" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "sku": "ART-001", "stock_quantity": 42, "price": 590 } ] }' ← 200 OK { "ok": true, "parsed": 1, "inserted": 1 }
/api/v1/ingestотправить остатки/api/v1/stockпрочитать остатки/api/v1/metricsаналитика по каждому SKU/api/v1/summaryсводка по складу/api/v1/reorderрекомендации по дозаказу/api/v1/dynamicsдинамика скорости продаж/api/v1/sku/{sku}карточка одного SKUСоздайте склад «API-источник»
В кабинете → Склады → Добавить склад → «API-источник».
Получите токен
На странице склада нажмите «Сгенерировать токен». Он показывается один раз — сохраните его.
Передавайте остатки
POST на /api/v1/ingest с токеном в заголовке. Каждый вызов — новый срез; движение остатков считаем сами.
Приём, чтение и вся аналитика
Машиночитаемая спецификация OpenAPI 3.1 — /api/v1/openapi.json (импорт в Postman/Insomnia, генерация клиентов). Списки /stock и /metrics поддерживают постраничность (?limit&offset, поля has_more/next_offset).
/api/v1/ingestОтправить остатки
Токен — в заголовке Authorization: Bearer …. В теле массив items — до 50 000 позиций за раз.
Ответ: { "ok": true, "parsed": N, "inserted": M }
curl -X POST https://veloseller.com/api/v1/ingest \
-H "Authorization: Bearer vs_live_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "sku": "ART-001", "stock_quantity": 42, "price": 590 }
]
}'/api/v1/stockПрочитать остатки
Забрать то, что Veloseller сейчас видит по вашему складу — последний остаток и цену по каждому SKU. Тот же токен, удобно свериться со своей системой.
curl https://veloseller.com/api/v1/stock \ -H "Authorization: Bearer vs_live_ВАШ_ТОКЕН"
{
"warehouse": "8f3c1a2b-…",
"count": 128,
"items": [
{
"sku": "ART-001",
"product_name": "Кружка",
"stock_quantity": 42,
"price": 590,
"updated_at": "2026-07-16T12:00:00Z"
}
]
}/api/v1/metricsАналитика по каждому SKU
Вся «начинка» продукта наружу: по каждому товару — реальная скорость продаж (TVelo), на сколько дней хватит остатка, дни out-of-stock, потерянная выручка, сегмент, здоровье, достоверность и флаг «пора заказывать». ?needs_reorder=1 — только то, что пора дозаказать.
curl "https://veloseller.com/api/v1/metrics?needs_reorder=1" \ -H "Authorization: Bearer vs_live_ВАШ_ТОКЕН"
{
"warehouse": "8f3c1a2b-…",
"period_days": 30,
"count": 128,
"items": [
{
"sku": "ART-001",
"product_name": "Кружка",
"stock_quantity": 42,
"price": 590,
"velocity_per_day": 3.2,
"days_of_cover": 13.1,
"stockout_days_30d": 2,
"lost_revenue": 1180,
"segment": "fast",
"health_score": 82,
"confidence": 0.9,
"needs_reorder": true,
"updated_at": "2026-07-16"
}
]
}/api/v1/summaryСводка по складу
KPI дашборда одним запросом: здоровье склада, стоимость остатков, заморожено в неликвиде, потерянная и потенциальная выручка, счётчики SKU (заканчиваются / нет в наличии / неликвид).
{
"warehouse": "8f3c1a2b-…",
"period_days": 30,
"health_score": 76,
"inventory_value": 3450000,
"frozen_value": 820000,
"lost_revenue": 142000,
"potential_revenue": 320000,
"sku_counts": {
"total": 1883, "low_stock": 7, "out_of_stock": 3,
"dead_inventory": 12, "inactive": 24, "frequently_oos": 5
},
"updated_at": "2026-07-16T02:40:00Z"
}/api/v1/reorderРекомендации по дозаказу
Готовый список закупки: сколько штук заказать по каждому SKU, чтобы хватило на нужный горизонт с учётом срока поставки. ?days=30 — на сколько дней закупить, ?lead_time=14 — срок поставки. Идеально для автозакупки.
{
"warehouse": "8f3c1a2b-…",
"days": 30,
"lead_time": 14,
"count": 2,
"items": [
{
"sku": "AB-100", "product_name": "Кофе 250г",
"current_stock": 8, "velocity_per_day": 3.2,
"days_of_cover": 2.5, "recommended_qty": 133,
"reorder_now": true
}
]
}/api/v1/dynamicsДинамика скорости продаж
Кто ускорился, кто просел: сравнение двух последних пересчётов TVelo с изменением в процентах. ?direction=up|down и ?limit=50. Триггерьте дозаказ на растущем спросе и распродажу на падающем.
{
"warehouse": "8f3c1a2b-…",
"count": 2,
"items": [
{
"sku": "AB-100", "product_name": "Кофе 250г",
"velocity_now": 4.1, "velocity_prev": 2.6,
"delta_pct": 57.7, "direction": "up"
}
]
}/api/v1/sku/{sku}Карточка одного SKU
Всё по одному товару: текущие метрики, история скорости продаж по 30-дн окнам (для спарклайна) и последние значимые события склада (пополнения, аномалии, пересчёты).
{
"warehouse": "8f3c1a2b-…",
"sku": "AB-100",
"product_name": "Кофе 250г",
"metrics": {
"stock_quantity": 8, "price": 590,
"velocity_per_day": 3.2, "days_of_cover": 2.5,
"stockout_days_30d": 4, "lost_revenue": 12400,
"segment": "fast", "health_score": 72,
"confidence": 88, "needs_reorder": true,
"updated_at": "2026-07-16"
},
"velocity_history": [
{ "date": "2026-06-16", "velocity_per_day": 2.6 },
{ "date": "2026-07-16", "velocity_per_day": 3.2 }
],
"recent_events": [
{ "date": "2026-07-10", "type": "replenishment_like", "delta_stock": 200 }
]
}skuОбяз.даАртикул товара — ключ, по которому мы узнаём позицию.
stock_quantityОбяз.даТекущий остаток, целое число ≥ 0.
priceОбяз.нетЦена в рублях. Если не передать — возьмём последнюю известную.
product_nameОбяз.нетНаименование. Обновляется, если передано.
| Поле | Обяз. | Описание |
|---|---|---|
| sku | да | Артикул товара — ключ, по которому мы узнаём позицию. |
| stock_quantity | да | Текущий остаток, целое число ≥ 0. |
| price | нет | Цена в рублях. Если не передать — возьмём последнюю известную. |
| product_name | нет | Наименование. Обновляется, если передано. |
Успех — { ok, parsed, inserted } или { items }
Проблема в данных — в ответе указан проблемный sku
Токен отсутствует, недействителен или отозван
Слишком часто (лимит 10 запросов/мин) — повторите позже
Временная ошибка — повторите с задержкой (backoff)
| 200 | Успех — { ok, parsed, inserted } или { items } |
| 400 | Проблема в данных — в ответе указан проблемный sku |
| 401 | Токен отсутствует, недействителен или отозван |
| 429 | Слишком часто (лимит 10 запросов/мин) — повторите позже |
| 5xx | Временная ошибка — повторите с задержкой (backoff) |
Каждый вызов — новый срез
Шлите актуальные остатки хоть раз в день, хоть каждый час. Движение считается между срезами.
Токен — как пароль
Показывается один раз при создании, храним только хэш. Утёк — перевыпустите, старый отзовётся.
API входит во все тарифы
Отдельной платы за API нет. «API-источник» — обычный склад: считается в лимите складов тарифа, число SKU — тоже по тарифу. Нужно больше — выше тариф.
- · 3 warehouses
- · 10,000 SKUs per warehouse
- · Full feature set, free
- · 2 warehouses
- · 1,000 SKUs per warehouse
- · 5 warehouses
- · 2,000 SKUs per warehouse
- · 15 warehouses
- · 10,000 SKUs per warehouse
Ещё больше — тариф «Конструктор» (1–20 складов, 1 000–20 000 SKU). Все тарифы →
Собственный интернет-магазин
Передавайте остатки и цены напрямую через API без файлов и ручных выгрузок.
Учётная система / 1С
Автоматически передавайте остатки и цены из учётной системы по расписанию или по событию.
Касса / POS
Передавайте остатки и продажи офлайн-магазинов для анализа в единой системе.
Собственная система
Интегрируйте Veloseller с любой системой через API. Одного запроса достаточно для передачи данных.
Готовы подключить?
Создайте API-склад, получите токен — и первый POST можно отправить прямо сейчас.