Back to Monitor

LavaStatus API

Public REST API for accessing Lavalink node information. Real-time data, zero authentication required.

Real-time
WebSocket Updates
Unlimited
Free Requests
CORS
Enabled
Respectful
5s Polling Recommended
GET /api/v1/nodes

Returns all currently online Lavalink nodes with complete connection details. Perfect for music bots looking for available nodes to connect to.

JSON Response
{
  "nodes": [
    {
      "name": "My Node",
      "host": "lavalink.example.com",
      "port": 443,
      "password": "youshallnotpass",
      "secure": true,
      "version": "v4",
      "ping": 45,
      "players": 12,
      "uptime": "3d 12h 45m",
      "source": "github",
      "authorId": "username"
    }
  ],
  "total": 1,
  "updated": "2024-01-15T10:30:00.000Z"
}
200 OK 429 Rate Limited
GET /api/v1/nodes/ssl

Returns only SSL-secured nodes (wss://). Recommended for production environments where encryption is required.

JSON Response
{
  "nodes": [
    {
      "host": "lavalink.example.com:443",
      "password": "youshallnotpass",
      "identifier": "My Node"
    }
  ],
  "total": 1
}
GET /api/v1/nodes/non-ssl

Returns only non-SSL nodes (ws://). Useful for local development or internal networks where encryption isn't needed.

GET /api/v1/random

Returns a single random online node. Ideal for load balancing and auto-failover implementations where you want to distribute connections.

JSON Response
{
  "name": "Random Node",
  "host": "lavalink.example.com",
  "port": 443,
  "password": "youshallnotpass",
  "secure": true,
  "ping": 32,
  "version": "4.0.0"
}
200 OK 503 No Nodes Online
GET /api/v1/best

Returns the best available node based on a scoring algorithm that considers ping (40%), CPU load (40%), and player count (20%). Perfect for getting optimal performance.

JSON Response
{
  "name": "Best Node",
  "host": "lavalink.example.com",
  "port": 443,
  "password": "youshallnotpass",
  "secure": true,
  "ping": 15,
  "score": 95,
  "metrics": {
    "ping": 15,
    "cpu": 12,
    "players": 3
  }
}
GET /api/v1/stats

Returns global statistics about all monitored nodes including online count, average metrics, source distribution, and server health.

JSON Response
{
  "total_nodes": 50,
  "online_nodes": 42,
  "offline_nodes": 8,
  "total_players": 156,
  "sources": {
    "local": 5,
    "public": 25,
    "github": 20
  },
  "average_ping_ms": 85,
  "average_cpu_percent": 23,
  "uptime_seconds": 86400,
  "total_requests": 15234,
  "last_updated": "2024-01-15T10:30:00.000Z"
}
GET /api/v1/search?q={query}

Search nodes by name, host, or author ID. Returns matching nodes with their current status.

Parameter Type Required Description
q string Required Search query (case-insensitive)
Try It
GET /api/v1/node/:host/:port

Get detailed information about a specific node including 24-hour uptime percentage and historical data.

Parameter Type Required Description
host string Required Node hostname
port number Required Node port
GET /api/v1/history/:host/:port?hours=24

Get historical performance data for a specific node. Useful for monitoring trends and uptime analysis.

Parameter Type Required Description
host string Required Node hostname
port number Required Node port
hours number Optional Hours of history (default: 24, max: 48)
GET /nodes.txt

Plain text list of online nodes (one per line). Compatible with legacy bots and simple parsers.

Plain Text
wss://node1.example.com:443
wss://node2.example.com:443
ws://node3.example.com:2333
GET /health

Health check endpoint for monitoring services like UptimeRobot. Returns 200 if at least one node is online, 503 if all nodes are down.

JSON Response
{
  "status": "healthy",
  "online_nodes": 42,
  "total_nodes": 50,
  "uptime_seconds": 86400,
  "timestamp": "2024-01-15T10:30:00.000Z"
}
200 Healthy 503 Degraded
Copied to clipboard!