VideoCensorVideoCensor
ГлавнаяИнструментыО насТарифыБлогAPI
Войти
VideoCensorVideoCensor

Удаляем мат из видео — быстро и автоматически

Продукт

  • Убрать мат
  • Тарифы
  • Для бизнеса

Ресурсы

  • О сервисе
  • FAQ
  • Блог

Компания

  • Поддержать
  • Конфиденциальность
  • Условия

Контакты

  • Группа ВКонтакте
  • support@videocensor.ru

Инструменты

  • Проверка на мат
  • Модерация YouTube
  • Субтитры из видео
  • Извлечь аудио
  • Таймкоды YouTube
  • Звук бипа
Файлы автоматически удаляются
Без регистрации для базового режима
Безопасная обработка

Джумаев Н. А., ИНН 645504695070, плательщик НПД · © 2026 VideoCensor. Все права защищены.

Документация API

Интегрируйте проверку контента в ваше приложение

  • Обзор
  • Аутентификация
  • Анализ текста
  • Цензура текста
  • Анализ медиа
  • Цензура медиа
  • Задачи
  • Вебхуки
  • Ошибки
  • Лимиты
  • SDK
ОбзорАутентификацияАнализ текстаЦензура текстаАнализ медиаЦензура медиаЗадачиВебхукиОшибкиЛимитыSDK

Обзор

VideoCensor API позволяет автоматически находить и цензурировать нецензурную лексику, оскорбления, упоминания наркотиков, экстремизм и другой нежелательный контент в тексте, аудио и видео.

Базовый URL

https://videocensor.ru/api/v1

Категории контента

profanityМат и нецензурная лексика
hate_speechЯзык ненависти
extremismЭкстремизм и терроризм
drugsНаркотики
sexualСексуальный контент
insultsОскорбления

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

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

X-API-Key: vc_live_ваш_ключ

Получить ключ можно в панели разработчика.

POST /analyze/text

Анализирует текст и возвращает найденные слова с категориями и позициями.

Параметры

textstringобязательныйТекст для анализа (до 50 000 символов)
languagestringнеобязательныйЯзык: ru (по умолчанию) или en
categoriesstring[]необязательныйКатегории контента: profanity, hate_speech, extremism, drugs, sexual, insults
presetstringнеобязательныйПресет чувствительности: mild, standard (по умолчанию), strict, max

Запрос

curl -X POST https://videocensor.ru/api/v1/analyze/text \
  -H "X-API-Key: vc_live_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Ну ты и идиот блять",
    "categories": ["profanity", "insults"]
  }'

Ответ

{
  "totalWords": 5,
  "flaggedCount": 2,
  "categories": {
    "insults": { "count": 1, "words": ["идиот"] },
    "profanity": { "count": 1, "words": ["блять"] }
  },
  "cleanText": "Ну ты и *** ***"
}

POST /censor/text

Цензурирует текст — заменяет найденные слова на указанную строку.

Параметры

textstringобязательныйТекст для цензуры
replacementstringнеобязательныйСтрока замены (по умолчанию ***)
languagestringнеобязательныйЯзык: ru или en
categoriesstring[]необязательныйКатегории контента
presetstringнеобязательныйПресет чувствительности

Запрос

curl -X POST https://videocensor.ru/api/v1/censor/text \
  -H "X-API-Key: vc_live_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Сука блять какой пиздец",
    "replacement": "[цензура]"
  }'

Ответ

{
  "censored": "[цензура] [цензура] какой [цензура]",
  "replacements": 3
}

POST /analyze/media

Загружает медиафайл для анализа. Возвращает ID задачи для отслеживания.

Параметры

filefileобязательныйАудио/видео файл (multipart/form-data)
modestringнеобязательныйРежим: standard (по умолчанию) или precise
languagestringнеобязательныйЯзык: ru или en

Запрос

curl -X POST https://videocensor.ru/api/v1/analyze/media \
  -H "X-API-Key: vc_live_ваш_ключ" \
  -F "file=@video.mp4" \
  -F "mode=standard"

Ответ

{ "jobId": "550e8400-...", "status": "queued" }

POST /censor/media

Загружает медиафайл для цензуры. Мат будет запикан или заглушен.

Параметры

filefileобязательныйАудио/видео файл
modestringнеобязательныйРежим обработки
wayOfBlockingstringнеобязательныйСпособ цензуры: beep (по умолчанию) или mute
censorStrengthnumberнеобязательныйСила цензуры 0-100 (по умолчанию 100)

Запрос

curl -X POST https://videocensor.ru/api/v1/censor/media \
  -H "X-API-Key: vc_live_ваш_ключ" \
  -F "file=@video.mp4" \
  -F "wayOfBlocking=beep"

Ответ

{ "jobId": "550e8400-...", "status": "queued" }

Задачи (Jobs)

Медиа-обработка асинхронная. После отправки файла вы получаете jobId и отслеживаете статус.

GET/jobsСписок задач (cursor или page пагинация)
GET/jobs/:jobIdСтатус задачи и результат
GET/jobs/:jobId/resultПолный результат с таймстампами слов
GET/jobs/:jobId/downloadСкачать обработанный файл
GET/jobs/:jobId/transcriptТранскрипция (json, srt, txt)
POST/jobs/:jobId/cancelОтменить задачу

Пример: поллинг статуса

# Отправить файл
JOB_ID=$(curl -s -X POST https://videocensor.ru/api/v1/censor/media \
  -H "X-API-Key: $API_KEY" -F "file=@video.mp4" | jq -r .jobId)

# Проверить статус
curl -s https://videocensor.ru/api/v1/jobs/$JOB_ID -H "X-API-Key: $API_KEY"

# Скачать результат (когда status=done)
curl -s https://videocensor.ru/api/v1/jobs/$JOB_ID/download \
  -H "X-API-Key: $API_KEY" -o censored.mp4

Вебхуки

Вместо поллинга настройте вебхук — сервер отправит POST-запрос на ваш URL когда задача завершится. Подпись проверяется через HMAC-SHA256.

GET/webhooksСписок вебхуков
POST/webhooksСоздать вебхук (возвращает secret)
PATCH/webhooks/:idОбновить URL, события, вкл/выкл
DELETE/webhooks/:idУдалить вебхук
POST/webhooks/:id/testОтправить тестовое событие

Проверка подписи (Node.js)

const crypto = require('crypto');

function verifyWebhook(body, headers, secret) {
  const signature = headers['x-webhook-signature'];
  const timestamp = headers['x-webhook-timestamp'];
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(timestamp + '.' + body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature), Buffer.from(expected)
  );
}

Ошибки

API возвращает ошибки в формате RFC 7807 (Problem Details):

{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "Описание ошибки",
  "code": "BAD_REQUEST",
  "requestId": "abc-123"
}

Коды ошибок

400BAD_REQUESTНекорректный запрос
401UNAUTHORIZEDНе авторизован
403FORBIDDENДоступ запрещён
404NOT_FOUNDНе найдено
429TOO_MANY_REQUESTSПревышен лимит запросов
500INTERNAL_ERRORВнутренняя ошибка сервера

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

API использует скользящее окно (1 минута). Лимиты зависят от тарифа. Заголовки ответа:

X-RateLimit-LimitЛимит запросов в минуту
X-RateLimit-RemainingОставшиеся запросы
X-RateLimit-ResetВремя сброса (Unix timestamp)

Тарифы API

ТарифЗапросов/минМинут/мес
Free1015
Developer60300
Business3003000
Enterprise1000100 000

SDK

Официальные SDK для быстрой интеграции. Поддерживают retry, rate limiting и типизацию.

Python

pip install videocensor
  • Sync + Async клиент
  • Типизированные модели
  • Auto-retry с backoff

Node.js

npm install @videocensor/sdk
  • TypeScript из коробки
  • Native fetch
  • File upload из path/stream