Censorship Intelligence API
Real-time global censorship detection powered by 12.5M+ measurements across 50 countries. 99.8% accuracy. Free for research.
Quickstart
Check if Google is blocked in China with a single request. No signup required.
"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
{
"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.
Use this key for testing. Rate limited to 100 requests/minute.
Request Headers
| Header | Value | Required |
|---|---|---|
X-API-Key | Your API key | For /hydra/* endpoints |
Content-Type | application/json | For POST requests |
Endpoints
/hydra/v1/detectCheck if a domain is actively blocked in a country. Returns block status, confidence, and detection method.
Try It
Request Body
| Field | Type | Description |
|---|---|---|
country | string | ISO 3166-1 alpha-2 code (e.g., "CN", "IR") |
target | string | Domain to check (e.g., "google.com") |
includeISPs | boolean | Include per-ISP breakdown (optional) |
Response Schema
| Field | Type | Description |
|---|---|---|
blocked | boolean | Whether target is blocked |
confidence | number | ML model confidence (0-1) |
blockType | string | "dpi_block" | "dns_block" | "ip_block" | "none" |
sources | string[] | Data sources used: "ooni", "sensor", "telemetry" |
lastChecked | string | ISO 8601 timestamp |
/hydra/v1/predictPredict future censorship risk for a country using the ML model. Returns trend and contributing factors.
Request Body
| Field | Type | Description |
|---|---|---|
country | string | ISO 3166-1 alpha-2 code |
target | string? | Optional domain to predict risk for |
horizon | number | Prediction horizon in days (default: 7) |
"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}'/hydra/v1/threat-level/:countryGet the current threat level for a country with recommendations and optional 30-day history.
"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"/hydra/v1/scoresGet censorship scores for all tracked countries, sorted by severity.
Query Parameters
| Param | Type | Description |
|---|---|---|
minConfidence | number | Minimum confidence threshold (0-1, default: 0.5) |
limit | number | Max results (default: 50) |
/hydra/v1/model/infoGet ML model metadata including version, accuracy metrics, and training details.
"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.
/data/censorship-index.jsonNo AuthFull censorship index dataset with Schema.org structured data. Updated daily.
/data/country/:codeNo AuthDetailed censorship data for a single country.
"text-green-400">curl "https://api.voidly.ai/data/country/CN"/data/methodologyNo AuthMachine-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.
| Code | Name | Resolution |
|---|---|---|
400 | Bad Request | Invalid request parameters. Check country codes (ISO 3166-1 alpha-2) and required fields. |
401 | Unauthorized | Invalid or missing API key. Include X-API-Key header. |
404 | Not Found | Country or resource not found. Check the country code exists in our dataset. |
429 | Rate Limited | Too many requests. Wait 60 seconds and retry with exponential backoff. |
500 | Server Error | Internal error. Retry with backoff. If persistent, contact support. |
503 | Service Unavailable | API temporarily unavailable. Check status page. |
Error Response Format
{
"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 Type | Rate Limit | Burst |
|---|---|---|
| Demo Key | 100 requests/minute | 20 requests |
| Research Key | 1,000 requests/minute | 100 requests |
| Public Data | No limit | — |
Rate Limit Headers
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | Unix timestamp when window resets |
AI Integrations
Native integrations for AI assistants and LLMs. Get censorship data directly in Claude, Cursor, or ChatGPT.
For Claude Desktop, Cursor, Windsurf, and Cline. Native tool access to censorship data.
npx @voidly/mcp-serverAI-optimized context file. Add to prompts for instant censorship data awareness.
View llms.txt →Changelog
- Added /incidents endpoint with 4,481 confirmed censorship events
- Incident reports now include citable permalinks
- Added confidence scores to all detection responses
- Upgraded ML model to v2 (99.8% F1 score)
- Added ISP-level breakdown in /detect responses
- New /predict endpoint for future risk assessment
- 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.