API v1

Интеграция за одну строку

Виджет примерки дисков для вашего магазина. Подключите на сайт за 5 минут — клиент загружает фото, AI показывает результат.

1

Добавьте скрипт

Вставьте одну строку перед </body>

2

Настройте виджет

Укажите API-ключ и ID диска

3

Готово

Клиент загружает фото — AI показывает результат

Подключение виджета

HTML — добавьте перед </body>
<script src="https://disk.polevoy24.ru/widget/diskoteka-widget.min.js"></script> <diskoteka-widget api-key="YOUR_API_KEY" api-url="https://disk.polevoy24.ru" wheel-id="demo-001" diameter="17" et="35" buy-url="https://shop.com/buy/123" ></diskoteka-widget>

Аутентификация

Все запросы к API требуют API-ключ в заголовке

Header Рекомендуется

Передавайте ключ в заголовке x-api-key

curl -H "x-api-key: dk_abc123..." \ https://disk.polevoy24.ru/api/widget/catalog

Widget Attribute

Для виджета ключ задаётся атрибутом api-key

<diskoteka-widget api-key="dk_abc123..."> </diskoteka-widget>

Как получить API-ключ

Зарегистрируйтесь на странице для бизнеса — ключ создаётся автоматически. Или управляйте ключами в личном кабинете.

Ответ при невалидном ключе { "error": "Invalid API key", "code": "INVALID_KEY" }

Параметры виджета

HTML-атрибуты <diskoteka-widget> для настройки под ваш магазин

api-key
string · обязательный
Ваш API-ключ. Получите в личном кабинете.
api-url
string · обязательный
URL сервера API. Используйте https://disk.polevoy24.ru
wheel-id
string
UUID диска из каталога. Если не указан — клиент выбирает из меню.
diameter
number · default: 17
Диаметр диска в дюймах (15-22).
et
number · default: 35
Вылет диска (ET) в мм.
buy-url
string
URL кнопки «Купить». Если не указан — кнопка скрыт.
lead-form
string · default: on
Лид-форма при клике «Купить» (имя и контакт уходят вам в «Лиды» в кабинете). Отключение: lead-form="off".

Установка в CMS

Код одинаков для всех CMS — отличается только место вставки

WordPress

  1. Откройте страницу товара в редакторе Gutenberg
  2. Добавьте блок «Произвольный HTML» в конец страницы
  3. Вставьте код ниже, заменив YOUR_API_KEY на ваш ключ
  4. Нажмите «Обновить»
<script src="https://disk.polevoy24.ru/widget/diskoteka-widget.min.js"></script> <diskoteka-widget api-key="YOUR_API_KEY" api-url="https://disk.polevoy24.ru" wheel-id="demo-001" diameter="17" et="35" buy-url="https://shop.com/buy/123" ></diskoteka-widget>

1С-Битрикс

  1. На странице товара отключите визуальный редактор (иначе он удалит <script>)
  2. Добавьте текстовый блок в конец страницы и вставьте код ниже
  3. Для подключения на всех страницах: файл footer.php шаблона сайта, перед </body>
  4. Сохраните
<script src="https://disk.polevoy24.ru/widget/diskoteka-widget.min.js"></script> <diskoteka-widget api-key="YOUR_API_KEY" api-url="https://disk.polevoy24.ru" wheel-id="demo-001" diameter="17" et="35" buy-url="https://shop.com/buy/123" ></diskoteka-widget>

Shopify

  1. Online Store → Themes → Edit code («Изменить код»)
  2. Откройте файл layout/theme.liquid
  3. Вставьте код ниже перед </body> или в шаблон товара
  4. Нажмите Save («Сохранить»)
<script src="https://disk.polevoy24.ru/widget/diskoteka-widget.min.js"></script> <diskoteka-widget api-key="YOUR_API_KEY" api-url="https://disk.polevoy24.ru" wheel-id="demo-001" diameter="17" et="35" buy-url="https://shop.com/buy/123" ></diskoteka-widget>

API Endpoints

REST API для интеграции с вашей системой

Method Endpoint Описание
POST /api/widget/upload Загрузка фото автомобиля
GET /api/widget/catalog Каталог доступных дисков
POST /api/widget/apply-wheel AI-генерация примерки диска
POST /api/widget/apply-tint Тонировка стёкол
POST /api/widget/apply-caliper Покраска тормозных суппортов
POST /api/widget/apply-tire-profile Смена профиля шины
POST /api/widget/compose Финальная композиция всех слоёв
GET /api/widget/layer/:key Получение слоя по ключу
POST /api/widget/register Регистрация нового магазина
GET /api/widget/photo/:photoId Получение фото по ID

Лимиты запросов

Ограничения по тарифным планам

Старт
100
генераций/мес · 10 запросов/мин
Бизнес
500
генераций/мес · 30 запросов/мин
Премиум
∞
безлимит · 60 запросов/мин

Заголовки ответа

Каждый ответ содержит информацию о лимитах
X-RateLimit-Limit: 500 X-RateLimit-Remaining: 487 X-RateLimit-Reset: 2026-10-01T00:00:00.000Z

Ошибка превышения лимита

HTTP 429
{ "error": "Monthly generation limit reached", "code": "MONTHLY_LIMIT", "limit": 500, "used": 500, "resets_at": "2026-10-01T00:00:00.000Z" }

Коды ошибок

Стандартные HTTP-коды и коды ошибок API

Код HTTP Описание
MISSING_API_KEY 401 Заголовок x-api-key не передан
INVALID_KEY 403 Невалидный или отозванный API-ключ
VALIDATION_ERROR 400 Невалидные параметры запроса
NO_PHOTO 400 Фото не загружено или не найдено
PHOTO_NOT_FOUND 404 Фото не найдено или истёк срок хранения
NO_WHEELS_DETECTED 404 AI не обнаружил диски на фото
MONTHLY_LIMIT 429 Достигнут месячный лимит генераций
BURST_LIMIT 429 Превышен лимит запросов в минуту
FLUX_UNAVAILABLE 502 Сервис AI-генерации временно недоступен
INTERNAL_ERROR 500 Внутренняя ошибка сервера

Webhooks

Получайте уведомления о событиях на ваш сервер

Регистрация webhook

POST /api/admin/webhooks
curl -X POST https://disk.polevoy24.ru/api/admin/webhooks \ -H "x-api-key: dk_abc123..." \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-server.com/webhook", "events": ["composite.ready", "generation.completed"] }'
composite.ready

Композиция готова

Отправляется когда финальное изображение из всех слоёв собрано и доступно по URL.

generation.completed

Генерация завершена

Отправляется после каждого успешного вызова AI (apply-wheel, apply-tint, apply-caliper и т.д.).

*

Все события

Подписка на все события. Передайте "events": ["*"] для получения всех уведомлений.

Формат webhook payload

POST → ваш URL
{ "event": "composite.ready", "tenant_id": "tenant_abc", "timestamp": "2026-09-19T12:00:00.000Z", "photo_id": "photo_xyz", "result_url": "https://disk.polevoy24.ru/api/widget/compose/..." }

Управление webhook

# Список всех webhook GET /api/admin/webhooks # Удалить webhook DELETE /api/admin/webhooks/:id

Примеры

Код для интеграции в различные платформы

React / Next.js

JSX
import { useEffect, useRef } from 'react'; export function WheelWidget({ wheelId, buyUrl }) { const ref = useRef(null); useEffect(() => { const script = document.createElement('script'); script.src = 'https://disk.polevoy24.ru/widget/diskoteka-widget.min.js'; document.body.appendChild(script); }, []); return ( <diskoteka-widget ref={ref} api-key={process.env.NEXT_PUBLIC_DISKOTEKA_KEY} api-url="https://disk.polevoy24.ru" wheel-id={wheelId} buy-url={buyUrl} /> ); }

PHP / WordPress

PHP
<?php $api_key = get_option('diskoteka_api_key'); $wheel_id = get_post_meta($post_id, '_wheel_uuid', true); ?> <script src="https://disk.polevoy24.ru/widget/diskoteka-widget.min.js"></script> <diskoteka-widget api-key="<?php echo esc_attr($api_key); ?>" api-url="https://disk.polevoy24.ru" wheel-id="<?php echo esc_attr($wheel_id); ?>" buy-url="<?php echo esc_url(get_permalink()); ?>" ></diskoteka-widget>

Python / FastAPI

Python
import requests API_KEY = "dk_abc123..." BASE_URL = "https://disk.polevoy24.ru" # Загрузка фото with open("car.jpg", "rb") as f: resp = requests.post( f"{BASE_URL}/api/widget/upload", headers={"x-api-key": API_KEY}, files={"photo": f} ) photo_id = resp.json()["photo_id"] # Генерация примерки диска resp = requests.post( f"{BASE_URL}/api/widget/apply-wheel", headers={"x-api-key": API_KEY}, json={ "photo_id": photo_id, "wheel_id": "demo-001", "diameter": 17 } ) result_url = resp.json()["layer_url"]

Тарифы

Стоимость API-доступа для вашего магазина

Старт
9 990 ₽/мес
100 генераций/мес
  • Виджет примерки дисков
  • 4 типа кастомизации
  • Email-поддержка
Премиум
39 990 ₽/мес
Безлимит генераций
  • Всё из «Бизнес»
  • White-label виджет
  • 1C-Bitrix модуль
  • Персональный менеджер

История изменений

Последние обновления API

19 Сен 2026

Полная документация API New

Добавлены секции: аутентификация, лимиты, ошибки, webhooks, тарифы, FAQ

18 Сен 2026

Саморегистрация New

POST /api/widget/register — автоматическое создание tenant и API-ключа по email

17 Сен 2026

PostgreSQL API-ключи Breaking

Ключи хранятся в PostgreSQL + Redis, хеширование SHA-256. Ключ показывается только один раз при создании

15 Сен 2026

GPT Image 2.5 Flare New

Модель генерации обновлена до OpenAI GPT Image 2.5 Flare через OpenRouter

12 Сен 2026

Webhooks New

Добавлена система webhook-уведомлений: register, list, remove, fire

10 Сен 2026

Rate Limiting New

Тарифные лимиты: Starter 100/мес, Pro 500/мес, Enterprise безлимит

Частые вопросы

Ответы на популярные вопросы по интеграции

Сколько стоит одна генерация? ▾
Стоимость зависит от тарифа. При тарифе «Бизнес» (14 990 ₽/мес, 500 генераций) одна генерация обходится примерно в 30 ₽. При тарифе «Премиум» стоимость минимальна из-за безлимита.
Как получить тестовый API-ключ? ▾
Зарегистрируйтесь на странице для бизнеса — ключ создаётся автоматически. Для демо-режима используйте ключ demo-key-test-12345 — генерация идёт через Sharp без реального AI.
Какие форматы фото поддерживаются? ▾
JPG, PNG, WebP. Максимальный размер — 20 MB. Рекомендуемое разрешение — от 800×600 px. Чем качественнее фото, тем лучше результат AI-генерации.
Как долго хранятся загруженные фото? ▾
Фото хранятся в S3 30 дней, после чего автоматически удаляются. Промежуточные слои (результаты AI-генерации) кешируются и доступны до истечения TTL.
Можно ли использовать виджет на нескольких сайтах? ▾
Да, один API-ключ работает на любом количестве сайтов. Виджет — это Web Component, он не привязан к домену. Лимиты считаются на уровне tenant (владельца ключа).
Что делать, если AI не находит диски на фото? ▾
Убедитесь, что фото содержит видимые колёса с хорошим освещением. AI работает лучше всего при съёмке сбоку или под углом 3/4. Если диск не обнаружен — попробуйте другое фото или укажите wheel-id вручную.
Как настроить white-label виджет? ▾
Для тарифа «Премиум» доступна кастомизация CSS-переменных: цвета, шрифты, логотип. Пример: --dw-primary: #your-brand-color. Свяжитесь с нами для настройки.
Есть ли SDK для интеграции? ▾
Виджет — это Web Component, он работает на любой платформе без SDK. Для серверной интеграции доступен REST API. Официальные SDK для React, Vue и Angular планируются.

Поддержка

Мы поможем с интеграцией и ответим на вопросы

📧

Email

Ответим в течение 24 часов

begames@bk.ru
📱

Телефон

Пн-Пт 10:00–19:00 МСК

+7 (928) 187-66-06
💬

Telegram

Быстрый чат с поддержкой

Написать в Telegram