import type { Metadata } from "next"; import { FileCode, ArrowRight, CheckCircle, XCircle } from "lucide-react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Separator } from "@/components/ui/separator"; export const metadata: Metadata = { title: "API Reference", }; function Method({ method }: { method: string }) { const colors: Record = { GET: "bg-blue-500/10 text-blue-400 border-blue-500/20", POST: "bg-green-500/10 text-green-400 border-green-500/20", }; return ( {method} ); } function CodeBlock({ code }: { code: string }) { return (
      {code.trim()}
    
); } function StatusBadge({ code }: { code: number }) { const isOk = code < 400; return ( {isOk ? ( ) : ( )} {code} ); } export default function ApiReferencePage() { return (
{/* Header */}
Go Server API Reference

API Reference

Complete reference for the VectorDNS Go server REST API.

{/* Base URL & Auth */} Base URL & Authentication

Base URL

All requests (except{" "} /health) require an API key header:

Set{" "} API_KEY {" "} in your server environment to enable authentication. If left empty, auth is disabled (not recommended for production).

{/* Endpoints */}

Endpoints

{/* DNS Lookup */}
/dns/lookup
Resolve DNS records for a domain. Query one or more record types in a single request.

Request

  • domain {" "} required {" "} — The domain to query.
  • types {" "} optional {" "} — Record types to query. Defaults to all 9 supported types if omitted.
  • nameserver {" "} optional {" "} — Specific nameserver to query. Defaults to system resolver.

Response

{/* DNS Propagation */}
/dns/propagation
Check DNS propagation across multiple public resolvers. Queries resolvers in parallel and compares results.

Request

  • domain {" "} required {" "} — The domain to check.
  • type {" "} required {" "} — The record type to check (e.g.{" "} A,{" "} MX).
  • resolvers {" "} optional {" "} — List of resolver IPs. Defaults to a built-in list of public resolvers.

Response

{/* DNSSEC Validate */}
/dns/validate
DNSSEC validation for a domain. Checks the AD flag and verifies the signature chain.

Request

  • domain {" "} required {" "} — The domain to validate.

Response

{/* Health */}
/health
Health check endpoint. No authentication required. Use this for uptime monitoring.

Response

{/* Errors */}

Error Responses

All errors return a consistent JSON body:

{[ { status: 400, code: "INVALID_DOMAIN", desc: "Malformed or missing domain", }, { status: 400, code: "INVALID_TYPE", desc: "Unsupported record type", }, { status: 401, code: "UNAUTHORIZED", desc: "Missing or invalid API key", }, { status: 500, code: "DNS_ERROR", desc: "Upstream DNS query failed", }, { status: 500, code: "INTERNAL", desc: "Unexpected server error", }, ].map((row) => ( ))}
Status Code Description
{row.code} {row.desc}
); }