VideoCensor API позволяет автоматически находить и цензурировать нецензурную лексику, оскорбления, упоминания наркотиков, экстремизм и другой нежелательный контент в тексте, аудио и видео.
https://videocensor.ru/api/v1profanityМат и нецензурная лексикаhate_speechЯзык ненавистиextremismЭкстремизм и терроризмdrugsНаркотикиsexualСексуальный контентinsultsОскорбленияВсе запросы требуют API-ключ. Передавайте его в заголовке:
X-API-Key: vc_live_ваш_ключПолучить ключ можно в панели разработчика.
Анализирует текст и возвращает найденные слова с категориями и позициями.
textstringобязательныйТекст для анализа (до 50 000 символов)languagestringнеобязательныйЯзык: ru (по умолчанию) или encategoriesstring[]необязательныйКатегории контента: profanity, hate_speech, extremism, drugs, sexual, insultspresetstringнеобязательныйПресет чувствительности: mild, standard (по умолчанию), strict, maxcurl -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": "Ну ты и *** ***"
}Цензурирует текст — заменяет найденные слова на указанную строку.
textstringобязательныйТекст для цензурыreplacementstringнеобязательныйСтрока замены (по умолчанию ***)languagestringнеобязательныйЯзык: ru или encategoriesstring[]необязательныйКатегории контента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
}Загружает медиафайл для анализа. Возвращает ID задачи для отслеживания.
filefileобязательныйАудио/видео файл (multipart/form-data)modestringнеобязательныйРежим: standard (по умолчанию) или preciselanguagestringнеобязательныйЯзык: ru или encurl -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" }Загружает медиафайл для цензуры. Мат будет запикан или заглушен.
filefileобязательныйАудио/видео файлmodestringнеобязательныйРежим обработкиwayOfBlockingstringнеобязательныйСпособ цензуры: beep (по умолчанию) или mutecensorStrengthnumberнеобязательныйСила цензуры 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" }Медиа-обработка асинхронная. После отправки файла вы получаете jobId и отслеживаете статус.
GET/jobsGET/jobs/:jobIdGET/jobs/:jobId/resultGET/jobs/:jobId/downloadGET/jobs/:jobId/transcriptPOST/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/webhooksPOST/webhooksPATCH/webhooks/:idDELETE/webhooks/:idPOST/webhooks/:id/testconst 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)| Тариф | Запросов/мин | Минут/мес |
|---|---|---|
| Free | 10 | 15 |
| Developer | 60 | 300 |
| Business | 300 | 3000 |
| Enterprise | 1000 | 100 000 |
Официальные SDK для быстрой интеграции. Поддерживают retry, rate limiting и типизацию.
pip install videocensornpm install @videocensor/sdk