Getting started

Overview

VantaHub is a REST API that bundles six developer tools behind a single key: random data generation, website analysis, screenshots, QR codes and JSON processing. Every response is typed JSON, every request is authenticated with a bearer token.

Base URL for all requests:

base_url
https://api.vantahub.ct8.pl

No SDK required. VantaHub is plain HTTPS + JSON, so any HTTP client works. The examples below use the vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx demo key.

Quickstart

Get a UUID with a single request:

quickstart.js
const res = await fetch("https://api.vantahub.ct8.pl/random/uuid", {
  headers: { Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx" }
});

const { data } = await res.json();
console.log(data.value); // "3f2a1b4c-...";

Authentication

All API requests require an API key sent as a bearer token in the Authorization header. Keys start with vh_live_ and are generated from the dashboard.

example
fetch("https://api.vantahub.ct8.pl/random", {
    headers: {
        Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx"
    }
})

Invalid or missing keys return 401 with a structured error body. Keys are plaintext and shown in full only once — regenerate them from the dashboard if they leak.

Never expose your key in client-side code. Proxy requests through your backend, or use a short-lived scoped key for untrusted clients.

Random API

Generate cryptographically-secure random data. The family of GET /random/* endpoints accepts query parameters and returns a single typed value.

GET /random/number?min=1&max=100

Query parameters

ParameterTypeDescription
minintegeroptionalInclusive lower bound (default 1)
maxintegeroptionalInclusive upper bound (default 100)
GET /random/uuid

Returns a version 4 UUID. No parameters.

GET /random/password?length=20&symbols=true

Query parameters

ParameterTypeDescription
lengthintegeroptionalLength (8–128, default 20)
symbolsbooleanoptionalInclude special characters (default true)
GET /random/string?length=16&type=alphanumeric

Query parameters

ParameterTypeDescription
lengthintegeroptionalLength (1–256, default 16)
typestringoptionalalphanumeric, alpha, numeric, hex, symbols
GET /random/color?format=hex

Query parameters

ParameterTypeDescription
formatstringoptionalhex, rgb, hsl, array

Website Analyzer

Analyzes a public URL and returns status, latency, headers, SSL details, metadata and detected technologies. Results are cached for 10 minutes.

POST /analyzer

Body parameters

ParameterTypeDescription
urlstringrequiredFull URL including protocol
analyzer.js
fetch("https://api.vantahub.ct8.pl/analyzer", {
  method: "POST",
  headers: {
    Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://example.com" }),
});

Minecraft

Two endpoints for the Minecraft ecosystem: live server status over the native ping protocol and player profiles resolved through Mojang's session API.

POST /minecraft/status

Body parameters

ParameterTypeDescription
hoststringrequiredServer address (hostname or IP); mc:// and https:// prefixes are stripped
portintegeroptionalServer port (default 25565)

Response

FieldTypeDescription
onlinebooleanWhether the status handshake succeeded
motdstringClean message of the day (color codes stripped)
versionstringHuman-readable server version
protocolintegerServer protocol version
players_onlineintegerCurrent player count
players_maxintegerMaximum player slots
latency_msintegerRound-trip time in milliseconds
faviconstringServer icon as a PNG data-URL when provided
POST /minecraft/player

Body parameters

ParameterTypeDescription
playerstringrequiredMinecraft username or UUID (dashed or plain)

Response

FieldTypeDescription
namestringCurrent player name
uuidstringDashed UUID
skinobjecturl and model (slim/classic)
capestring|nullCape texture URL when the player owns one
avatarstring128px face render via mc-heads
bodystringFull-body render via mc-heads
minecraft.js
// Server status
fetch("https://api.vantahub.ct8.pl/minecraft/status", {
  method: "POST",
  headers: {
    Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ host: "play.cubecraft.net", port: 25565 }),
});

// Player lookup
fetch("https://api.vantahub.ct8.pl/minecraft/player", {
  method: "POST",
  headers: {
    Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ player: "Notch" }),
});

Screenshot API

Captures a public website and returns a PNG data-URL. Control viewport size and whether the full page is captured.

POST /screenshot

Body parameters

ParameterTypeDescription
urlstringrequiredFull URL including protocol
widthintegeroptionalViewport width (default 1280)
heightintegeroptionalViewport height (default 720)
fullPagebooleanoptionalCapture the entire scrollable page (default false)

QR Generator

Generates QR codes from URLs, plain text or Wi-Fi credentials and returns them as a downloadable SVG.

POST /qr

Body parameters

ParameterTypeDescription
typestringrequiredurl, text or wifi
contentstringrequiredURL or text payload (for wifi, pass ssid and password)
bgstringBackground color as hex, e.g. #ffffff (default #0B0B0E)
fgstringForeground (module) color as hex, e.g. #000000 (default #000000)
sizenumberOutput size in px, 100–1024 (default 220)

JSON Formatter

Validates and normalizes JSON payloads server-side. Returns the formatted or minified document plus a validation report.

POST /json

Body parameters

ParameterTypeDescription
actionstringrequiredformat or minify
datastringrequiredThe JSON document to process

Errors

Errors always return a consistent JSON envelope with an HTTP status code, a machine-readable code and a human message.

error.json
{
  "ok": false,
  "error": {
    "message": "Invalid API key.",
    "code": "unauthorized",
    "status": 401
  }
}
StatusCodeDescription
400bad_requestMissing or invalid parameters
401unauthorizedMissing or invalid API key
404not_foundEndpoint does not exist
405method_not_allowedWrong HTTP method for the endpoint
429rate_limitedMonthly quota exceeded
422validation_failedPayload is valid JSON but semantically invalid
500internal_errorUnexpected server error

Examples

Random color, client-side:

color.js
const { data } = await fetch("https://api.vantahub.ct8.pl/random/color?format=hex", {
  headers: { Authorization: "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx" },
}).then((r) => r.json());

document.body.style.background = data.value; // "#5865F2"

Responses

Successful responses use a stable envelope. Always read data for the payload.

response.json
{
  "ok": true,
  "data": {
    "kind": "uuid",
    "value": "3f2a1b4c-8e7d-4b5a-9c0f-1d2e3a4b5c6d"
  },
  "meta": {
    "latency_ms": 12,
    "cache": "miss",
    "ts": "2026-08-05T12:00:00Z"
  }
}

Cached responses (like the analyzer's 10-minute TTL) include a cache field of hit and may carry ETag / Cache-Control headers for client-side reuse.

Rate limits

Limits are per-plan and reset monthly. Exceeding them returns 429 with a Retry-After header.

PlanRequests / monthBurst / second
Free1,00010
Pro100,000100
Scale1,000,000500

Questions? Head to the dashboard or grab a key and start building.