v1.2.0CC BY 4.0

Censorship Intelligence API

Real-time global censorship detection powered by 12.5M+ measurements across 50 countries. 99.8% accuracy. Free for research.

12.5M+
Measurements
50
Countries
99.8%
ML Accuracy
4,481
Incidents

Quickstart

Check if Google is blocked in China with a single request. No signup required.

bash
"text-green-400">curl "text-purple-400">-X POST https://api.voidly.ai/hydra/v1/detect \
  "text-purple-400">-H "Content">-Type: application/json" \
  "text-purple-400">-H "X">-API">-Key: hydra_demo_key" \
  -d '{"country":"CN","target":"google.com"}'

Response

json
{
  "country": "CN",
  "target": "google.com",
  "blocked": true,
  "confidence": 0.95,
  "blockType": "dpi_block",
  "lastChecked": "2026-02-06T12:00:00Z",
  "sources": ["ooni", "sensor", "telemetry"]
}

Authentication

Pass your API key in the X-API-Key header. Public data endpoints require no authentication.

Demo API KeyNo Signup

Use this key for testing. Rate limited to 100 requests/minute.

Request Headers

HeaderValueRequired
X-API-KeyYour API keyFor /hydra/* endpoints
Content-Typeapplication/jsonFor POST requests

Endpoints

POST/hydra/v1/detect

Check if a domain is actively blocked in a country. Returns block status, confidence, and detection method.

Try It

Request Body

FieldTypeDescription
countrystringISO 3166-1 alpha-2 code (e.g., "CN", "IR")
targetstringDomain to check (e.g., "google.com")
includeISPsbooleanInclude per-ISP breakdown (optional)

Response Schema

FieldTypeDescription
blockedbooleanWhether target is blocked
confidencenumberML model confidence (0-1)
blockTypestring"dpi_block" | "dns_block" | "ip_block" | "none"
sourcesstring[]Data sources used: "ooni", "sensor", "telemetry"
lastCheckedstringISO 8601 timestamp
POST/hydra/v1/predict

Predict future censorship risk for a country using the ML model. Returns trend and contributing factors.

Request Body

FieldTypeDescription
countrystringISO 3166-1 alpha-2 code
targetstring?Optional domain to predict risk for
horizonnumberPrediction horizon in days (default: 7)
bash
"text-green-400">curl "text-purple-400">-X POST https://api.voidly.ai/hydra/v1/predict \
  "text-purple-400">-H "Content">-Type: application/json" \
  "text-purple-400">-H "X">-API">-Key: hydra_demo_key" \
  -d '{"country":"RU","horizon":30}'
GET/hydra/v1/threat-level/:country

Get the current threat level for a country with recommendations and optional 30-day history.

bash
"text-green-400">curl "text-purple-400">-H "X">-API">-Key: hydra_demo_key" \
  "https://api.voidly.ai/hydra/v1/threat-level/IR?includeHistory=true"
GET/hydra/v1/scores

Get censorship scores for all tracked countries, sorted by severity.

Query Parameters

ParamTypeDescription
minConfidencenumberMinimum confidence threshold (0-1, default: 0.5)
limitnumberMax results (default: 50)
GET/hydra/v1/model/info

Get ML model metadata including version, accuracy metrics, and training details.

bash
"text-green-400">curl "text-purple-400">-H "X">-API">-Key: hydra_demo_key" "https://api.voidly.ai/hydra/v1/model/info"

Public Data

Open datasets available without authentication. Licensed under CC BY 4.0.

GET/data/censorship-index.jsonNo Auth

Full censorship index dataset with Schema.org structured data. Updated daily.

GET/data/country/:codeNo Auth

Detailed censorship data for a single country.

bash
"text-green-400">curl "https://api.voidly.ai/data/country/CN"
GET/data/methodologyNo Auth

Machine-readable methodology including scoring algorithm and data sources.

Errors

The API uses standard HTTP status codes. All errors return JSON with error and message fields.

CodeNameResolution
400Bad RequestInvalid request parameters. Check country codes (ISO 3166-1 alpha-2) and required fields.
401UnauthorizedInvalid or missing API key. Include X-API-Key header.
404Not FoundCountry or resource not found. Check the country code exists in our dataset.
429Rate LimitedToo many requests. Wait 60 seconds and retry with exponential backoff.
500Server ErrorInternal error. Retry with backoff. If persistent, contact support.
503Service UnavailableAPI temporarily unavailable. Check status page.

Error Response Format

json
{
  "error": "BAD_REQUEST",
  "message": "country and target are required"
}

Rate Limits

API requests are rate limited to ensure fair usage. Limits vary by endpoint and key type.

Key TypeRate LimitBurst
Demo Key100 requests/minute20 requests
Research Key1,000 requests/minute100 requests
Public DataNo limit

Rate Limit Headers

HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when window resets

AI Integrations

Native integrations for AI assistants and LLMs. Get censorship data directly in Claude, Cursor, or ChatGPT.

RecommendedMCP Server

For Claude Desktop, Cursor, Windsurf, and Cline. Native tool access to censorship data.

bash
npx @voidly/mcp-server
OpenAI Action

For ChatGPT custom GPTs. Import OpenAPI spec into GPT Builder.

Download openapi.json →
llms.txt

AI-optimized context file. Add to prompts for instant censorship data awareness.

View llms.txt →

Changelog

v1.2.02026-02-04
  • Added /incidents endpoint with 4,481 confirmed censorship events
  • Incident reports now include citable permalinks
  • Added confidence scores to all detection responses
v1.1.02026-01-15
  • Upgraded ML model to v2 (99.8% F1 score)
  • Added ISP-level breakdown in /detect responses
  • New /predict endpoint for future risk assessment
v1.0.02025-12-01
  • Initial public release
  • Core endpoints: /detect, /threat-level, /scores
  • Public data endpoints with CC BY 4.0 license

Ready to get started?

No signup required. Use the demo key and start making requests.