Public API

Integrate Zynix Scripts directly into your app, hub, or executor. No authentication required. All endpoints return JSON unless noted otherwise.

Base URL

https://zynixscripts.net

List Scripts

GET/api/scripts

Returns all published scripts, newest first. Filter by category or free-text search.

ParamTypeDescription
categorystringFilter by category (e.g. Combat, ESP)
qstringSearch title or game name
[
  {
    "id": 1,
    "slug": "mm2-esp",
    "title": "MM2 ESP",
    "game_name": "Murder Mystery 2",
    "category": "ESP",
    "description": "See everyone through walls",
    "views": 1337,
    "updated_at": "2026-04-20T14:30:00",
    "thumbnail_url": "https://i.imgur.com/example.png"
  }
]

Get Script

GET/api/scripts/<slug>

Returns a single published script including its Lua source code.

{
  "id": 1,
  "slug": "mm2-esp",
  "title": "MM2 ESP",
  "game_name": "Murder Mystery 2",
  "category": "ESP",
  "description": "See everyone through walls",
  "views": 1337,
  "updated_at": "2026-04-20T14:30:00",
  "thumbnail_url": "https://i.imgur.com/example.png",
  "code": "-- Lua code here"
}

List Categories

GET/api/categories

Returns all distinct categories that have at least one published script.

["Combat", "ESP", "Farm", "Fun", "Hub", "Movement", "UI", "Utility"]

Raw Script

GET/raw/<slug>

Returns the raw Lua script as text/plain. Perfect for loadstrings.

loadstring(game:HttpGet("https://zynixscripts.net/raw/mm2-esp"))()

Thumbnails & Images

Note: Both /api/scripts and /api/scripts/<slug> now return thumbnail_url.
If a script has no thumbnail, this field will be null or an empty string.

Code Examples

Rust
JavaScript
C#
Python
use reqwest;
use serde::Deserialize;

#[derive(Deserialize)]
struct ZynixScript {
    id: i64,
    slug: String,
    title: String,
    #[serde(default)]
    game_name: String,
    #[serde(default)]
    category: String,
    description: Option<String>,
    #[serde(default)]
    views: i64,
    updated_at: String,
    #[serde(default)]
    thumbnail_url: Option<String>,
    #[serde(default)]
    code: String,
}

async fn fetch_scripts() -> Result<Vec<ZynixScript>, reqwest::Error> {
    let client = reqwest::Client::builder()
        .timeout(std::time::Duration::from_secs(10))
        .build()?;

    let scripts: Vec<ZynixScript> = client
        .get("https://zynixscripts.net/api/scripts")
        .query(&[("category", "Combat")])
        .send()
        .await?
        .json()
        .await?;

    Ok(scripts)
}
async function getScripts(category = "") {
  const url = new URL("https://zynixscripts.net/api/scripts");
  if (category) url.searchParams.set("category", category);

  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return await res.json(); // Array of scripts
}

async function getScript(slug) {
  const res = await fetch(`https://zynixscripts.net/api/scripts/${slug}`);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return await res.json(); // Single script with code
}

// Raw loadstring
const loadstring = `loadstring(game:HttpGet("https://zynixscripts.net/raw/${slug}"))()`;
using System.Net.Http;
using System.Text.Json;

var client = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };

// List scripts
var json = await client.GetStringAsync("https://zynixscripts.net/api/scripts?category=Combat");
var scripts = JsonSerializer.Deserialize<List<ZynixScript>>(json);

// Get single script
var scriptJson = await client.GetStringAsync($"https://zynixscripts.net/api/scripts/{slug}");
var script = JsonSerializer.Deserialize<ZynixScript>(scriptJson);

// Raw loadstring
var raw = await client.GetStringAsync($"https://zynixscripts.net/raw/{slug}");

public class ZynixScript
{
    public long id { get; set; }
    public string slug { get; set; }
    public string title { get; set; }
    public string game_name { get; set; }
    public string category { get; set; }
    public string description { get; set; }
    public long views { get; set; }
    public string updated_at { get; set; }
    public string code { get; set; }
}
import requests

BASE = "https://zynixscripts.net"

# List scripts
r = requests.get(f"{BASE}/api/scripts", params={"category": "Combat"}, timeout=10)
r.raise_for_status()
scripts = r.json()

# Get single script
r = requests.get(f"{BASE}/api/scripts/mm2-esp", timeout=10)
script = r.json()
print(script["code"])

# Raw loadstring
raw = requests.get(f"{BASE}/raw/mm2-esp", timeout=10).text