SN
SKYNETAPI Docs
SKYNET exposes a REST API for AI chat, system health monitoring, and node metrics. All endpoints are served from Node1 (Virginia, us-east-1) via ECS Fargate behind an Application Load Balancer. Authentication uses token-based tiers with rate limiting per plan.
Base URL
https://node1.skyos.online
Quick Navigation
Health Check Readiness Metrics Chat API Chat Widget Authentication Rate Limits GENOM API Error Codes
Core Endpoints
GET /health LIVE
Returns the current health status of the node including version, uptime, memory usage, active connections, and database status. No authentication required.
Response (200)
{ "status": "operational", "version": "1.0.0", "node": "node1-primary", "region": "us-east-1", "uptime": 86400, "memory": { "heapUsed": 45, "heapTotal": 128, "rss": 180 }, "connections": { "active": 12, "total": 1547 }, "database": "connected", "timestamp": "2026-03-30T12:00:00Z" }
GET /ready LIVE
Readiness probe for container orchestration. Returns 200 when the node is ready to serve traffic, including database and all dependency checks. Used by ECS health checks and ALB target group.
Response (200)
{ "ready": true, "checks": { "database": "ok", "memory": "ok" } }
GET /metrics LIVE
Returns detailed node metrics including CPU usage, memory breakdown, request counters, active sessions, and rate limit statistics. Useful for monitoring dashboards and external observability tools.
Response (200)
{ "node": "node1-primary", "uptime": 86400, "cpu": { "usage": 23.5, "cores": 0.25 }, "memory": { "heapUsed": 45, "heapTotal": 128, "external": 8, "rss": 180 }, "requests": { "total": 25430, "chat": 8921, "health": 12045 }, "sessions": { "active": 12 }, "rateLimit": { "blocked": 34, "window": "24h" } }
Chat API
POST /api/chat LIVE AUTH
Send a message to SKYNET and receive a streamed AI response. The endpoint proxies to Claude claude-sonnet-4-6 (Anthropic) with the SKYNET system prompt. Supports conversation context via session ID. Rate limited by tier.
Request Headers
HeaderTypeDescription
Content-TypestringrequiredMust be application/json
X-Session-IDstringoptionalSession identifier for conversation continuity. Generated client-side if omitted.
AuthorizationstringoptionalBearer token for authenticated tiers (Starter/Pro/Enterprise). Free tier does not require auth.
Request Body
{ "message": "What is SKYNET?", "sessionId": "sess_abc123", "context": [] // previous messages for context }
Request Parameters
FieldTypeDescription
messagestringrequiredThe user's message to send to SKYNET. Max 4,000 characters.
sessionIdstringoptionalSession ID for tracking conversation. Auto-generated if not provided.
contextarrayoptionalArray of previous message objects {role, content} for conversation context.
Response (200 — streamed)
// Server-Sent Events (text/event-stream) data: {"type":"content_block_delta","delta":{"text":"I am SKYNET"}} data: {"type":"content_block_delta","delta":{"text":", a distributed"}} data: {"type":"message_stop"} data: {"type":"usage","input_tokens":245,"output_tokens":89}
cURL Example
curl -X POST https://node1.skyos.online/api/chat \ -H "Content-Type: application/json" \ -d '{"message": "What is SKYNET?", "sessionId": "my-session"}'
Embeddable Chat Widget
1
Add a single script tag to any HTML page. The widget loads asynchronously and creates a floating chat button in the bottom-right corner.
<!-- SKYNET Chat Widget --> <script src="https://skynet.genisys.online/chat-widget.js"></script>
2
Optionally configure the widget before the script loads by setting window.SKYNET_CONFIG:
<script> window.SKYNET_CONFIG = { position: 'bottom-right', // 'bottom-right' | 'bottom-left' theme: 'dark', // 'dark' | 'light' | 'auto' greeting: 'Ask SKYNET anything', collapsed: true // start minimized }; </script> <script src="https://skynet.genisys.online/chat-widget.js"></script>
3
The widget automatically handles sessions, token tracking, and rate limits. Users get 5,000 free tokens/day. The widget is ~18KB and self-contained — no dependencies required.
Authentication
POST /api/auth/login SPRINT 1
Authenticate a user and receive a JWT token. Free tier users do not need authentication. Starter/Pro tiers require email + password. Enterprise requires API key.
Request Body
{ "email": "user@example.com", "password": "your-password", "totp": "123456" // required for Pro tier (2FA) }
Response (200)
{ "token": "eyJhbGciOiJIUzI1NiIs...", "expiresIn": 86400, "tier": "starter", "tokensRemaining": 50000, "wallet": { "address": "skc_wallet_abc123", "balance": 1000 } }
POST /api/auth/register SPRINT 1
Register a new user account. Automatically creates an SKC wallet on wallet.mycryptogate.com. Returns a JWT token and wallet address.
Request Body
{ "email": "user@example.com", "password": "min-8-characters", "tier": "starter" // "starter" | "pro" }
Rate Limits & Tiers
Free
5,000
tokens / day
No registration needed
Starter
50,000
tokens / day
$10/month — email + password
Pro
500,000
tokens / day
$30/month — email + 2FA
Enterprise
Unlimited
custom SLA
Contact: info@skynet.genisys.online
Node Operator
Bonus
tokens for uptime
Install desktop app (Sprint 7)
GENOM Protocol API SPRINT 4
The GENOM Protocol is SKYNET's native communication layer — a complex-plane tokenization system with post-quantum encryption (Kyber-768). The Dictionary API at genom.genisys.online will provide vocabulary lookup, encoding/decoding, and statistics. Genesis Vocabulary v1.0 (2,000 immutable tokens) is already available.
GET /v1/genesis.json LIVE
Returns the complete Genesis Vocabulary — 2,000 immutable tokens mapped to the unit circle of the complex plane. Four semantic domains: Technical (0-499), Entity (500-999), Action (1000-1499), Abstract (1500-1999). Served from genom.genisys.online.
Response Structure
{ "version": "1.0", "hash": "e8450c00f5d55c68...", "tokens": [ { "id": 0, "word": "system", "domain": "technical", "real": 1.0, "imag": 0.0, "angle": 0.0 }, // ... 2,000 tokens total ] }
GET /v1/dictionary?lang=en SPRINT 4
Returns the complete GENOM dictionary for a given language. Radius r=1.0 is the frozen Genesis Vocabulary, r=1.1 contains all English words (~170,000), r=1.2 adds untranslatable concepts, and r=1.3+ covers all languages.
Query Parameters
ParameterTypeDescription
langstringrequiredISO 639-1 language code (e.g., en, cs, ja)
radiusfloatoptionalMax radius to include. Default: all. Use 1.0 for Genesis only.
domainstringoptionalFilter by domain: technical, entity, action, abstract
POST /v1/lookup SPRINT 4
Look up a word and get its GENOM token ID and complex-plane coordinates. Supports any language.
Request / Response
// Request { "word": "intelligence", "lang": "en" } // Response { "id": 42, "word": "intelligence", "domain": "abstract", "radius": 1.0, "real": 0.8090, "imag": 0.5878, "angle": 0.6283, "translations": { "cs": "inteligence", "ja": "知性" } }
POST /v1/encode SPRINT 5
Encode natural language text into a GENOM intent vector — a compressed representation on the complex plane. Achieves ~10:1 compression vs JSON payloads.
Request / Response
// Request { "text": "analyze network health" } // Response { "vector": [0.309, 0.951, -0.588, 0.809, 0.707, 0.707], "tokens": [15, 203, 1042], "compression": 8.4 }
POST /v1/decode SPRINT 5
Decode a GENOM intent vector back into natural language text. Reverse of /v1/encode.
Request / Response
// Request { "vector": [0.309, 0.951, -0.588, 0.809, 0.707, 0.707] } // Response { "text": "analyze network health", "confidence": 0.94 }
Error Codes
REF Standard Error Responses
All error responses follow a consistent JSON format with an error code and human-readable message.
Error Format
{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Daily token limit reached. Upgrade your plan or wait 24h.", "status": 429 } }
HTTP Status Codes
CodeErrorDescription
200OKRequest succeeded
400BAD_REQUESTInvalid request body or missing required fields
401UNAUTHORIZEDInvalid or expired authentication token
403FORBIDDENInsufficient permissions for this tier
429RATE_LIMIT_EXCEEDEDDaily token limit reached for your tier
500INTERNAL_ERRORServer error — try again or check /status.html
503SERVICE_UNAVAILABLENode is restarting or under maintenance