Быстрый старт
Nimbus API связывает товарный учёт с витринами: каталог, цены и остатки уезжают наверх, заказы и их статусы возвращаются обратно. Первая рабочая интеграция занимает вечер, ключ песочницы выдаётся сразу.
Что понадобится
- Ключ доступа. Создаётся в кабинете, отдельный для песочницы и для рабочего контура.
- Сервер, который умеет принимать входящие запросы. Без него не будет вебхуков, и статусы заказов придётся опрашивать по расписанию.
- Свои идентификаторы товаров. Мы храним ваш
skuкак есть и возвращаем его в каждом ответе, поэтому сопоставлять таблицы не нужно.
Установка
Клиент есть для Node.js, Python и PHP, отдельно есть утилита командной строки: ею удобно разово залить прайс или посмотреть, что о вашем каталоге знает сервис.
npm install @nimbus/sdkpip install nimbus-sdkcomposer require nimbus/sdkТекущая версия клиента - 1.8.3. Мажорная версия клиента и версия API связаны: клиент 1.x работает с путями /v1. Подробнее о версиях - на странице SDK и CLI.
Ключ и авторизация
Ключ передаётся заголовком Authorization. Он даёт полный доступ к контуру, поэтому живёт в переменных окружения на сервере: в коде витрины, а тем более в браузере, ему делать нечего.
GET /v1/products?limit=50 HTTP/1.1 Authorization: Bearer $NIMBUS_KEY Accept: application/json
Адрес контура показан в кабинете рядом с ключом. В примерах документации он подставлен переменной $API, ключ - переменной $NIMBUS_KEY.
Песочница
Ключ песочницы начинается с sk_test_ и работает на тех же путях. Данные песочницы чистятся каждую ночь в 04:00 по Москве, лимит вдвое ниже рабочего: 60 запросов в минуту вместо 120.
order.created, через минуту order.paid. Так приёмник проверяется без единой продажи.Первый запрос
curl "$API/v1/products?limit=50&updated_since=2026-08-01" \ -H "Authorization: Bearer $NIMBUS_KEY"
import { Client } from '@nimbus/sdk'; const api = new Client({ key: process.env.NIMBUS_KEY }); const page = await api.products.list({ limit: 50, updatedSince: '2026-08-01' }); for (const item of page.data) { console.log(item.sku, item.stock, item.price); }
from nimbus import Client import os api = Client(key=os.environ["NIMBUS_KEY"]) page = api.products.list(limit=50, updated_since="2026-08-01") for item in page.data: print(item.sku, item.stock, item.price)
Ответ приходит страницами. Курсор из поля cursor подставляется в следующий запрос, пока has_more не станет false. Смещений по номеру страницы у нас нет намеренно: на живом каталоге, где строки правятся прямо во время чтения, они пропускают и дублируют товары.
{
"data": [
{ "sku": "TRM-1579", "name": "Термокружка 400 мл", "price": 129000, "stock": 17, "updated_at": "2026-08-11T09:41:22Z" },
{ "sku": "TRM-1583", "name": "Термокружка 600 мл", "price": 149000, "stock": 0, "updated_at": "2026-08-10T18:02:05Z" }
],
"cursor": "b3M6MTIwNA",
"has_more": true
}Цена приходит целым числом в копейках: 129000 - это 1 290 ₽. Дробных денег в ответах нет нигде, чтобы округление не зависело от языка, на котором написана витрина.
Залить остатки
Разовую выгрузку проще сделать утилитой. Она читает CSV, проверяет его на вашей стороне и показывает, что изменится, до того как что-то отправит.
nimbus stock push --file stock.csv --dry-run
# будет обновлено: 412, создано: 3, без изменений: 1 088Что именно считается изменением и как не затереть резервы - в руководстве Остатки и цены.