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:
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:
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-...";
curl https://api.vantahub.ct8.pl/random/uuid \
-H "Authorization: Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx"
import requests
res = requests.get(
"https://api.vantahub.ct8.pl/random/uuid",
headers={"Authorization": "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx"},
)
print(res.json()["data"]["value"])
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.
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.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
| min | integer | optional | Inclusive lower bound (default 1) |
| max | integer | optional | Inclusive upper bound (default 100) |
Returns a version 4 UUID. No parameters.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
| length | integer | optional | Length (8–128, default 20) |
| symbols | boolean | optional | Include special characters (default true) |
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
| length | integer | optional | Length (1–256, default 16) |
| type | string | optional | alphanumeric, alpha, numeric, hex, symbols |
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
| format | string | optional | hex, 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.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| url | string | required | Full URL including protocol |
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.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| host | string | required | Server address (hostname or IP); mc:// and https:// prefixes are stripped |
| port | integer | optional | Server port (default 25565) |
Response
| Field | Type | Description | |
|---|---|---|---|
| online | boolean | Whether the status handshake succeeded | |
| motd | string | Clean message of the day (color codes stripped) | |
| version | string | Human-readable server version | |
| protocol | integer | Server protocol version | |
| players_online | integer | Current player count | |
| players_max | integer | Maximum player slots | |
| latency_ms | integer | Round-trip time in milliseconds | |
| favicon | string | Server icon as a PNG data-URL when provided |
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| player | string | required | Minecraft username or UUID (dashed or plain) |
Response
| Field | Type | Description | |
|---|---|---|---|
| name | string | Current player name | |
| uuid | string | Dashed UUID | |
| skin | object | url and model (slim/classic) | |
| cape | string|null | Cape texture URL when the player owns one | |
| avatar | string | 128px face render via mc-heads | |
| body | string | Full-body render via mc-heads |
// 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.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| url | string | required | Full URL including protocol |
| width | integer | optional | Viewport width (default 1280) |
| height | integer | optional | Viewport height (default 720) |
| fullPage | boolean | optional | Capture 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.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| type | string | required | url, text or wifi |
| content | string | required | URL or text payload (for wifi, pass ssid and password) |
| bg | string | Background color as hex, e.g. #ffffff (default #0B0B0E) | |
| fg | string | Foreground (module) color as hex, e.g. #000000 (default #000000) | |
| size | number | Output 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.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| action | string | required | format or minify |
| data | string | required | The 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.
{
"ok": false,
"error": {
"message": "Invalid API key.",
"code": "unauthorized",
"status": 401
}
}
| Status | Code | Description |
|---|---|---|
| 400 | bad_request | Missing or invalid parameters |
| 401 | unauthorized | Missing or invalid API key |
| 404 | not_found | Endpoint does not exist |
| 405 | method_not_allowed | Wrong HTTP method for the endpoint |
| 429 | rate_limited | Monthly quota exceeded |
| 422 | validation_failed | Payload is valid JSON but semantically invalid |
| 500 | internal_error | Unexpected server error |
Examples
Random color, client-side:
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"
curl "https://api.vantahub.ct8.pl/random/color?format=hex" \
-H "Authorization: Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx"
import requests
r = requests.get(
"https://api.vantahub.ct8.pl/random/color?format=hex",
headers={"Authorization": "Bearer vh_live_xxxxxxxxxxxxxxxxxxxxxxxxx"},
)
color = r.json()["data"]["value"]
print(color) # "#5865F2"
Responses
Successful responses use a stable envelope. Always read data for the payload.
{
"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.
| Plan | Requests / month | Burst / second |
|---|---|---|
| Free | 1,000 | 10 |
| Pro | 100,000 | 100 |
| Scale | 1,000,000 | 500 |
Questions? Head to the dashboard or grab a key and start building.
