API цен: документация
Чтобы цены вашего сервиса отображались в каталоге, сделайте на своём сайте один публичный роут, отдающий JSON. Мы опрашиваем его каждый час.
Формат ответа
GET https://your-vpn.example/api/vpnprice
Content-Type: application/json
{
"month": 299,
"year": 2490
}| Поле | Тип | Описание |
|---|---|---|
month | number | Цена подписки на 1 месяц в рублях. Опустите, если месячного тарифа нет. |
year | number | Полная цена подписки на 12 месяцев в рублях — не «в месяц при оплате за год». Опустите, если годового тарифа нет. |
Требования
- Только HTTPS. HTTP-адреса не принимаются.
- Статус ответа
200, заголовокContent-Type: application/json. - Время ответа не более 5 секунд, размер до 64 КБ.
- Цены — числа (не строки), положительные, в рублях. Допустимы дробные:
299.5. - Хотя бы одно из полей
month/yearдолжно присутствовать. - Если у вас несколько тарифов, передавайте базовый (самый дешёвый полноценный) — тот, который увидит новый пользователь без промокодов.
- Эндпоинт должен быть доступен без авторизации. Если хотите ограничить доступ — фильтруйте по User-Agent
VPNPriceBot/1.0.
Примеры
Только месячный тариф
{ "month": 199 }Только годовой тариф
{ "year": 1990 }Node.js / Express
app.get("/api/vpnprice", (req, res) => {
res.json({
month: plans.monthly.priceRub,
year: plans.yearly.priceRub, // цена за весь год, не за месяц
});
});PHP
<?php
header('Content-Type: application/json');
echo json_encode([
'month' => 299,
'year' => 2490,
]);Как мы обрабатываем цены
- Каждый успешный опрос сохраняется в историю — она видна на странице сервиса в виде графика.
- Годовая цена дополнительно показывается в пересчёте «в месяц» (делим на 12), чтобы её было удобно сравнивать с месячной.
- Если новая цена отличается от предыдущей более чем на 40%, она помечается как подозрительная и не публикуется до проверки модератором. Это защита от ошибок в вашем API.
- После 3 неудачных опросов подряд сервис получает пометку «цены устарели», а вы — уведомление на email.
- В кабинете доступен лог последних опросов с текстом ошибок.
Частые ошибки
- В
yearпередана цена «в месяц». Если годовая цена меньше двух месячных, проверка предупредит вас. - Строки вместо чисел:
"299"вместо299. - Цены в другой валюте. Конвертируйте в рубли на своей стороне.
- Редирект на HTTP или на страницу логина.
Проверить свой эндпоинт можно кнопкой «Проверить API» в кабинете на шаге 3 — она покажет распознанные значения и предупреждения.