VideoCensorVideoCensor
HomeToolsAboutPricingBlogAPI
Sign In
VideoCensorVideoCensor

Remove profanity from video — fast and automatic

Product

  • Remove profanity
  • Pricing
  • For Business

Developers

  • API Dashboard
  • Documentation
  • Content Moderation API
  • Python SDK
  • Node.js SDK

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

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

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 plans

PlanRequests/minCredits/mo
Free10100
Starter601 500
Pro2007 500
Business50025 000
Studio150075 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