Detection

Detect active censorship

Changed on

Is a domain blocked in a country? Reads stored per-domain OONI + CensoredPlanet verdicts through the accessibility oracle (POST /v1/accessibility/batch). Returns status (blocked/accessible/unknown), basis, evidence count, blocking method and a heuristic confidence (from the measurement verdict, capped at 0.9; not a calibrated probability). An unmeasured domain returns status=unknown with basis unmeasured and confidence 0. A domain on Voidly's static known-blocked list also returns unknown: the list is not measurement evidence and sets no verdict, and the note says so. While accessibility checks are paused (on 2026-10-19 POST /v1/accessibility/batch answered HTTP 503 ACCESSIBILITY_REVIEW_HOLD), no measurement reaches this route, so every domain is unmeasured. Each response carries measurementSource, which names the source's answer. For many domains use POST /hydra/v1/detect/batch. Requires an API key (free at https://voidly.ai/api-keys/signup; hydra_demo_key works for testing).

post/hydra/v1/detect

Request

  • Base URL
    https://api.voidly.ai
  • URL
    https://api.voidly.ai/hydra/v1/detect
  • Auth
    API key in header X-API-Key

Request body

countrystring required

ISO 3166-1 alpha-2 country code

targetstring required

Domain to check

Example request

{
  "country": "CN",
  "target": "google.com"
}

Response

Detection result

countrystring required
targetstring required
status'blocked' | 'accessible' | 'unknown' required

unknown = no per-domain measurements (NOT confirmed-accessible)

blockedboolean required

True only when status=blocked; check status for unknown

confidencenumber required

Heuristic, not a calibrated probability: from the measurement verdict (capped at 0.9; 0.8 without a score), 0 when unmeasured. The static known-blocked list sets no value.

basis'measured' | 'unmeasured' required
measuredboolean
evidenceCountinteger nullable

underlying per-domain measurements; null for a measured verdict whose source row has no count

blockingMethodstring nullable

e.g. tcp-reset, dns-blocking, blockpage

methodsstring[]
sourcesstring[]
lastCheckedstring date-time
permalinkstring
confidenceCalibratedfalse

Always false: confidence is a heuristic.

notestring

What produced this verdict; present for every basis.

Changes

    • info

      removed the known_list enum value from the response property for the response status

    • breaking

      the response property became nullable for the status

    • breaking

      the response property became nullable for the status

    • breaking

      the response's property type changed from string to object for status

    • breaking

      the response's property type changed from string to object for status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the required property / to the response with the status

    • info

      added the required property / to the response with the status

    • info

      added the required property / to the response with the status

    • info

      added the required property / to the response with the status