VideoCensor API automatically detects and censors profanity, hate speech, drug references, extremism, and other unwanted content in text, audio, and video.
https://videocensor.ru/api/v1profanityProfanity and obscene languagehate_speechHate speechextremismExtremism and terrorismdrugsDrug referencessexualSexual contentinsultsInsultsAll requests require an API key. Pass it in the header:
X-API-Key: vc_live_ваш_ключGet your key in the developer dashboard.
Анализирует текст и возвращает найденные слова с категориями и позициями.
textstringrequiredТекст для анализа (до 50 000 символов)languagestringoptionalЯзык: ru (по умолчанию) или encategoriesstring[]optionalКатегории контента: profanity, hate_speech, extremism, drugs, sexual, insultspresetstringoptionalПресет чувствительности: 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": "Ну ты и *** ***"
}Цензурирует текст — заменяет найденные слова на указанную строку.
textstringrequiredТекст для цензурыreplacementstringoptionalСтрока замены (по умолчанию ***)languagestringoptionalЯзык: ru или encategoriesstring[]optionalКатегории контентаpresetstringoptionalПресет чувствительности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 задачи для отслеживания.
filefilerequiredАудио/видео файл (multipart/form-data)modestringoptionalРежим: standard (по умолчанию) или preciselanguagestringoptionalЯзык: 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" }Загружает медиафайл для цензуры. Мат будет запикан или заглушен.
filefilerequiredАудио/видео файлmodestringoptionalРежим обработкиwayOfBlockingstringoptionalСпособ цензуры: beep (по умолчанию) или mutecensorStrengthnumberoptionalСила цензуры 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 returns errors in RFC 7807 (Problem Details) format:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Описание ошибки",
"code": "BAD_REQUEST",
"requestId": "abc-123"
}400BAD_REQUESTBad Request401UNAUTHORIZEDUnauthorized403FORBIDDENForbidden404NOT_FOUNDNot Found429TOO_MANY_REQUESTSToo Many Requests500INTERNAL_ERRORInternal Server ErrorAPI uses a sliding window (1 minute). Limits depend on your tier. Response headers:
X-RateLimit-LimitRequests per minute limitX-RateLimit-RemainingRemaining requestsX-RateLimit-ResetReset time (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