ZoneVouch
Research: liveDiligence: partialAcquire: gatedMonitors: Run a check nowProtection: Run a diligence checkStatus read from the engine on 9 October 2026

API reference

ZoneVouch API

Status, 9 October 2026: these routes run on our engine inside our network. The public ZoneVouch API with your own keys is not open yet; the routes below are the contract it exposes. Examples below are real recorded responses, trimmed, with vendor fields generalised.

Basics

Format
JSON. Every body has ok: true|false; errors add error.
Base
/v1/<module> (host announced when the public API opens)
Auth
Research routes need no key. Everything else needs a key; in the app, your session.
Discover
GET /v1/modules lists modules and their status. Modules that are not switched on answer with an error that names the module.

Research Live

GET/v1/research/availability?domains=a.com,b.ioNo key

Registry verdict for 1–20 names plus the registrar's register and renewal price. Verdicts: available, taken, unknown, conflict, invalid. Add price=0 to skip pricing. A registrar outage degrades the price, not the verdict.

Recorded 2026-10-09 15:01 UTC · HTTP 200 · 1,890 ms · trimmed

{
 "ok": true,
 "results": [
  {
   "domain": "zonevouch.com",
   "verdict": "available",
   "rdap": {
    "status": "available",
    "source": "rdap",
    "detail": "registry: no such domain",
    "registrar": "",
    "cached": true,
    "checked_at": 1791557989.7041943
   },
   "registrar": {
    "provider": "registrar",
    "registrable": true,
    "reason": null,
    "tier": "standard",
    "currency": "USD",
    "registration_cost": "10.46",
    "renewal_cost": "10.46",
    "source": "registrar:domain-check",
    "checked_at": "2026-10-09T15:01:35Z"
   }
  },
  {
   "domain": "zonevouch.io",
   "verdict": "available",
   "rdap": {
    "status": "available",
    "source": "whois",
    "detail": "registry: no match",
    "registrar": "",
    "cached": true,
    "checked_at": 1791557989.644324
   },
   "registrar": {
    "provider": "registrar",
    "registrable": true,
    "reason": null,
    "tier": "standard",
    "currency": "USD",
    "registration_cost": "32.00",
    "renewal_cost": "50.00",
    "source": "registrar:domain-check",
    "checked_at": "2026-10-09T15:01:35Z"
   }
  }
 ],
 "registrar_error": null,
 "registrar_cred": "registrar"
}
GET/v1/research/check?domains=a.com,b.appNo key

Verdict only, faster. Up to 20 names.

Recorded 2026-10-09 15:01 UTC · HTTP 200 · 399 ms · trimmed

{
 "ok": true,
 "results": [
  {
   "domain": "zonevouch.com",
   "status": "available",
   "source": "rdap",
   "detail": "registry: no such domain",
   "cached": true,
   "checked_at": 1791557989.7041943,
   "registrar": ""
  },
  {
   "status": "available",
   "source": "rdap",
   "detail": "registry: no such domain",
   "domain": "zonevouch.app",
   "cached": false,
   "checked_at": 1791558098.498709
  }
 ]
}
GET/v1/research/search?q=nameNo key

Every registrable extension for a name, with prices.

Recorded 2026-10-09 15:01 UTC · HTTP 200 · 1,502 ms · trimmed

{
 "ok": true,
 "query": "zonevouch",
 "domains": [
  {
   "name": "zonevouch.com",
   "registrable": true,
   "tier": "standard",
   "pricing": {
    "currency": "USD",
    "registration_cost": "10.46",
    "renewal_cost": "10.46"
   }
  },
  {
   "name": "zonevouch.net",
   "registrable": true,
   "tier": "standard",
   "pricing": {
    "currency": "USD",
    "registration_cost": "11.86",
    "renewal_cost": "11.86"
   }
  },
  {
   "name": "zonevouch.org",
   "registrable": true,
   "tier": "standard",
   "pricing": {
    "currency": "USD",
    "registration_cost": "8.50",
    "renewal_cost": "11.20"
   }
  }
 ],
 "source": "registrar:domain-search",
 "cred": "(internal)",
 "checked_at": "2026-10-09T15:01:42Z"
}
GET/v1/research/dig?name=labelNo key

Extensions, variations and a name score with each criterion's reason, including criteria that were not run.

Recorded 2026-10-09 15:02 UTC · HTTP 200 · 21,113 ms · trimmed

{
 "ok": true,
 "name": "zonevouch",
 "score": {
  "total": 100.0
 },
 "variations": "[41 items]"
}
GET/v1/research/handles?name=labelNo key

Whether the handle is free on each network; unknown with a reason when a network can't be checked.

Recorded 2026-10-09 15:02 UTC · HTTP 200 · 4 ms · trimmed

{
 "ok": true,
 "handle": "zonevouch",
 "checked_at": "2026-10-09T14:59:51Z",
 "sites": {
  "github": {
   "status": "available"
  },
  "x": {
   "status": "unknown"
  },
  "instagram": {
   "status": "unknown"
  },
  "facebook": {
   "status": "available"
  },
  "tiktok": {
   "status": "available"
  },
  "youtube": {
   "status": "available"
  },
  "reddit": {
   "status": "unknown"
  },
  "linkedin": {
   "status": "available"
  }
 }
}
GET/v1/modulesNo key

Module list with status and phase.

Recorded 2026-10-09 15:01 UTC · HTTP 200 · 301 ms · trimmed

{
 "ok": true,
 "modules": [
  {
   "group": "research",
   "status": "live"
  },
  {
   "group": "intelligence",
   "status": "planned"
  },
  {
   "group": "diligence",
   "status": "partial"
  },
  {
   "group": "decisions",
   "status": "planned"
  },
  {
   "group": "acquire",
   "status": "live"
  },
  {
   "group": "monitor",
   "status": "planned"
  },
  {
   "group": "protect",
   "status": "planned"
  },
  {
   "group": "grow",
   "status": "planned"
  },
  {
   "group": "portfolio",
   "status": "live"
  }
 ]
}

Diligence Partial

GET/v1/diligence/<domain>?wait=1Key required

Run the checks and wait. Each check returns ok, error or skipped with a reason.

Recorded 2026-10-09 15:02 UTC · HTTP 200 · 17,890 ms · trimmed

{
 "ok": true,
 "job": {
  "job_id": "dlg_\u2026",
  "domain": "clovitek.com",
  "status": "done",
  "result": {
   "registration": {
    "status": "ok"
   },
   "dns": {
    "status": "ok"
   },
   "history": {
    "status": "error"
   },
   "registrar": {
    "status": "ok"
   },
   "reputation": {
    "status": "skipped"
   },
   "cloviscan": {
    "status": "skipped"
   },
   "typo": {
    "status": "skipped"
   },
   "seo": {
    "status": "skipped"
   }
  }
 }
}
POST/v1/diligence/<domain>Key required

Start a job; returns 202 and a job id. Poll GET /v1/diligence/jobs/<id>.

Portfolio Live

GET/v1/portfolio/watchlistKey required

List watchlist entries. POST adds one, DELETE /v1/portfolio/watchlist/<id> removes one.

GET/v1/portfolioKey required

Owned domains with days to expiry; also /zones, /registrations, /dns/<domain>.

Acquire Gated

GET/v1/acquire/statusNo key

Whether purchasing is enabled and how long a quote lasts.

Recorded 2026-10-09 15:02 UTC · HTTP 200 · 4 ms · trimmed

{
 "ok": true,
 "purchase_enabled": false,
 "registrar": "registrar",
 "approval": "Class B (founder) - quote -> confirm with one-time token",
 "quote_ttl_s": 900
}
POST/v1/acquire/quoteKey required

Live price check and a one-time confirm token valid for 15 minutes. A quote never spends money.

POST/v1/acquire/confirmKey required

Refused with 403 purchase_disabled unless purchasing is switched on at the server; then also needs the token, a named approver and an approval reference. Not part of the public API.

Rate limits

Unauthenticated routes: 30 requests per minute per address. Over the limit: HTTP 429 with a one-line message. The public API will publish its own per-key limits.

Errors

HTTPRecorded bodyWhat to do
400{"ok": false, "error": "send 1-20 domains"}Fix the request: here, no domains were sent.
401{"ok": false, "error": "internal caller required (X-Clovi-Internal, slug clovidomains)"}This route needs a key.
429{"ok": false, "error": "rate limited, try again in a minute"}Slow down; retry after a minute.