NNimbusДокументация
Обзор / Быстрый старт

Быстрый старт

Nimbus API связывает товарный учёт с витринами: каталог, цены и остатки уезжают наверх, заказы и их статусы возвращаются обратно. Первая рабочая интеграция занимает вечер, ключ песочницы выдаётся сразу.

Схема интеграции: учёт, API и витрины

Что понадобится

Установка

Клиент есть для Node.js, Python и PHP, отдельно есть утилита командной строки: ею удобно разово залить прайс или посмотреть, что о вашем каталоге знает сервис.

npm install @nimbus/sdk
pip install nimbus-sdk
composer require nimbus/sdk

Текущая версия клиента - 1.8.3. Мажорная версия клиента и версия API связаны: клиент 1.x работает с путями /v1. Подробнее о версиях - на странице SDK и CLI.

Ключ и авторизация

Ключ передаётся заголовком Authorization. Он даёт полный доступ к контуру, поэтому живёт в переменных окружения на сервере: в коде витрины, а тем более в браузере, ему делать нечего.

http
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, проверяет его на вашей стороне и показывает, что изменится, до того как что-то отправит.

bash
nimbus stock push --file stock.csv --dry-run
# будет обновлено: 412, создано: 3, без изменений: 1 088

Что именно считается изменением и как не затереть резервы - в руководстве Остатки и цены.

Что дальше