Public API

Check Hytale server status programmatically

Overview

The IsHyUp API allows you to check the status of any Hytale server programmatically. It's free to use and perfect for building status bots, monitoring tools, or integrating server status into your website.

Base URL

https://ishyup.com/api/v1

Rate Limits & Caching

To ensure fair usage and prevent abuse, the API has the following limits:

Rate Limit

30 requests

per minute per IP address

Cache Duration

30 seconds

results are cached per server

Rate limit headers are included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset

Endpoints

GET /api/v1/status/{address}

Check the status of a Hytale server.

Parameters

Name Type Description
address string Server address (domain or IP). Port optional, defaults to 40900.

Example Request

GET https://ishyup.com/api/v1/status/play.example.com

Example Response (Online Hytale Server)

{
  "success": true,
  "status": "online",
  "online": true,
  "isHytaleServer": true,
  "address": "play.example.com:40900",
  "resolvedIP": "192.168.1.100",
  "port": 40900,
  "latency": 45,
  "protocol": {
    "verified": true,
    "version": "1.0.0",
    "latency": 42
  },
  "ping": {
    "reachable": true,
    "latency": 38
  },
  "timestamp": "2026-01-16T12:00:00.000Z"
}

Status Values

"online"

Verified Hytale server

"not_hytale"

Port open, not Hytale

"offline"

Server unreachable

GET /api/v1

Get API information and available endpoints.

Example Response

{
  "name": "IsHyUp Public API",
  "version": "1.0.0",
  "description": "Check Hytale server status programmatically",
  "endpoints": { ... },
  "rateLimit": {
    "requests": 30,
    "window": "1 minute"
  }
}
GET /api/health

Check if the API is running and healthy.

Example Response

{
  "status": "ok",
  "timestamp": "2026-01-16T12:00:00.000Z"
}

Code Examples

JavaScript / Node.js

// Using fetch (browser or Node.js 18+)
const response = await fetch('https://ishyup.com/api/v1/status/play.example.com');
const data = await response.json();

if (data.success && data.status === 'online') {
  console.log(`Server is online! Latency: ${data.latency}ms`);
} else {
  console.log('Server is offline');
}

Python

import requests

response = requests.get('https://ishyup.com/api/v1/status/play.example.com')
data = response.json()

if data['success'] and data['status'] == 'online':
    print(f"Server is online! Latency: {data['latency']}ms")
else:
    print('Server is offline')

cURL

curl -X GET "https://ishyup.com/api/v1/status/play.example.com"

Discord.js Bot Example

const { SlashCommandBuilder } = require('discord.js');

module.exports = {
  data: new SlashCommandBuilder()
    .setName('serverstatus')
    .setDescription('Check Hytale server status')
    .addStringOption(option =>
      option.setName('address').setDescription('Server address').setRequired(true)
    ),
  
  async execute(interaction) {
    const address = interaction.options.getString('address');
    const response = await fetch(`https://ishyup.com/api/v1/status/${address}`);
    const data = await response.json();
    
    const statusEmoji = data.status === 'online' ? '🟢' : '🔴';
    await interaction.reply(`${statusEmoji} **${address}**: ${data.status}`);
  }
};

Error Responses

Rate Limit Exceeded (429)

{
  "error": "Too many requests",
  "message": "Rate limit exceeded. Please wait before making more requests.",
  "retryAfter": 60
}

Invalid Address (400)

{
  "success": false,
  "error": "Address is required",
  "usage": "GET /api/v1/status/{server_address}"
}

Server Error (500)

{
  "success": false,
  "error": "Internal server error",
  "message": "Error details here"
}

Terms of Use

  • The API is free to use for personal and commercial projects
  • Please respect the rate limits to ensure fair access for everyone
  • Do not attempt to bypass rate limits or abuse the service
  • We reserve the right to block IPs that violate these terms
  • The API is provided as-is with no guarantees of uptime
  • Attribution is appreciated but not required