@videocensor/sdk
v1.0.0
Published
Official Node.js SDK for VideoCensor content moderation API — profanity detection, hate speech, censoring for text, audio and video.
Downloads
11
Maintainers
Readme
@videocensor/sdk
Node.js SDK for VideoCensor content moderation API.
Installation
npm install @videocensor/sdkQuick Start
import { VideoCensor } from '@videocensor/sdk';
const client = new VideoCensor({ apiKey: 'vc_live_...' });
// Analyze text
const result = await client.analyzeText('some text to check');
console.log(result.flaggedCount, result.categories);
// Censor text
const censored = await client.censorText('some text to censor');
console.log(censored.censored);
// Analyze media file
const job = await client.analyzeMedia('/path/to/video.mp4');
const completed = await client.waitForJob(job.id);
const analysis = await client.getJobResult(completed.id);
// Censor media from URL
const censorJob = await client.censorMediaUrl('https://youtube.com/watch?v=...');
const done = await client.waitForJob(censorJob.id);
await client.downloadJob(done.id, './censored.mp4');Configuration
const client = new VideoCensor({
apiKey: 'vc_live_...', // Required. Use vc_test_ for sandbox.
baseUrl: 'https://...', // Optional. Default: https://videocensor.ru/api/v1
timeout: 30_000, // Optional. Request timeout in ms.
maxRetries: 3, // Optional. Retries on 429/5xx.
});API
Text
| Method | Description |
|--------|-------------|
| analyzeText(text, options?) | Analyze text for flagged content |
| censorText(text, options?) | Replace flagged words with *** |
Options: language, categories, preset, replacement (censor only).
Media
| Method | Description |
|--------|-------------|
| analyzeMedia(filePath, options?) | Upload and analyze media file |
| censorMedia(filePath, options?) | Upload and censor media file |
| analyzeMediaUrl(url, options?) | Analyze media from URL |
| censorMediaUrl(url, options?) | Censor media from URL |
Options: language, mode, categories, preset, wayOfBlocking, censorStrength.
Jobs
| Method | Description |
|--------|-------------|
| listJobs(options?) | List jobs with pagination |
| getJob(jobId) | Get job status |
| getJobResult(jobId) | Get full analysis result |
| cancelJob(jobId) | Cancel a job |
| downloadJob(jobId, outputPath) | Download processed file |
| getTranscript(jobId, format?) | Get transcription (srt/txt/json) |
| waitForJob(jobId, timeoutMs?) | Poll until job completes |
Batch
| Method | Description |
|--------|-------------|
| createBatch(requests) | Submit batch of text operations |
| getBatch(batchId) | Get batch status and results |
Webhooks
| Method | Description |
|--------|-------------|
| listWebhooks() | List webhook endpoints |
| createWebhook(url, events?) | Create webhook endpoint |
| deleteWebhook(webhookId) | Delete webhook endpoint |
Account
| Method | Description |
|--------|-------------|
| getAccount() | Get account info and usage |
Error Handling
import { VideoCensorError, RateLimitError, AuthenticationError } from '@videocensor/sdk';
try {
await client.analyzeText('test');
} catch (err) {
if (err instanceof RateLimitError) {
console.log(`Retry after ${err.retryAfter}s`);
}
if (err instanceof AuthenticationError) {
console.log('Invalid API key');
}
}Content Categories
profanity, hate_speech, extremism, drugs, sexual, insults
Requirements
Node.js >= 18
Versioning
This SDK follows SemVer:
- MAJOR — breaking changes (removed endpoints/fields, type changes). Deprecation notice at least 3 months in advance.
- MINOR — new endpoints or optional fields.
- PATCH — bugfixes, retry/backoff improvements, docs.
See CHANGELOG.md for release notes.
