VideoCensorVideoCensor
HomeToolsAboutPricingBlogAPI
Sign In
VideoCensorVideoCensor

Remove profanity from video — fast and automatic

Product

  • Remove profanity
  • Pricing
  • For Business

Resources

  • About
  • FAQ
  • Blog

Company

  • Support us
  • Privacy
  • Terms

Contacts

  • support@videocensor.net

Tools

  • Profanity Checker
  • YouTube Moderation
  • Video Subtitles
  • Extract Audio
  • YouTube Chapters
  • Beep Sound
Files are automatically deleted
No registration for basic mode
Secure processing

N. A. Dzhumaev, TIN 645504695070, self-employed (NPD) · © 2026 VideoCensor. All rights reserved.

API Documentation

Integrate content moderation into your application

  • Overview
  • Authentication
  • Analyze Text
  • Censor Text
  • Analyze Media
  • Censor Media
  • Jobs
  • Webhooks
  • Errors
  • Rate Limits
  • SDKs
OverviewAuthenticationAnalyze TextCensor TextAnalyze MediaCensor MediaJobsWebhooksErrorsRate LimitsSDKs

Overview

VideoCensor API automatically detects and censors profanity, hate speech, drug references, extremism, and other unwanted content in text, audio, and video.

Base URL

https://videocensor.ru/api/v1

Content Categories

profanityProfanity and obscene language
hate_speechHate speech
extremismExtremism and terrorism
drugsDrug references
sexualSexual content
insultsInsults

Authentication

All requests require an API key. Pass it in the header:

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

Get your key in the developer dashboard.

POST /analyze/text

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

Parameters

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

Request

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"]
  }'

Response

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

POST /censor/text

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

Parameters

textstringrequiredТекст для цензуры
replacementstringoptionalСтрока замены (по умолчанию ***)
languagestringoptionalЯзык: ru или en
categoriesstring[]optionalКатегории контента
presetstringoptionalПресет чувствительности

Request

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

Response

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

POST /analyze/media

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

Parameters

filefilerequiredАудио/видео файл (multipart/form-data)
modestringoptionalРежим: standard (по умолчанию) или precise
languagestringoptionalЯзык: ru или en

Request

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

Response

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

POST /censor/media

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

Parameters

filefilerequiredАудио/видео файл
modestringoptionalРежим обработки
wayOfBlockingstringoptionalСпособ цензуры: beep (по умолчанию) или mute
censorStrengthnumberoptionalСила цензуры 0-100 (по умолчанию 100)

Request

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

Response

{ "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)
  );
}

Errors

API returns errors in RFC 7807 (Problem Details) format:

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

Error Codes

400BAD_REQUESTBad Request
401UNAUTHORIZEDUnauthorized
403FORBIDDENForbidden
404NOT_FOUNDNot Found
429TOO_MANY_REQUESTSToo Many Requests
500INTERNAL_ERRORInternal Server Error

Rate Limits

API uses a sliding window (1 minute). Limits depend on your tier. Response headers:

X-RateLimit-LimitRequests per minute limit
X-RateLimit-RemainingRemaining requests
X-RateLimit-ResetReset time (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