Ill Studios API Documentation

Public REST API v1 — Manage deployments, scripts, agents, and telemetry programmatically.

Base URL: /api/v1Auth: Bearer Token or x-api-key

Quick Start

  1. Create an API key — POST to /api/v1/api-keys with headers x-user-id and x-user-tier
  2. Save the raw key — It's shown only once. Format: sh_live_...
  3. Use the key — Pass as Authorization: Bearer sh_live_... or x-api-key: sh_live_...
  4. Create a deployment — POST to /api/v1/deployments
  5. Register an agent — POST to /api/v1/agents/register
  6. Send heartbeats — POST to /api/v1/agents/heartbeat every 30s
Example: Create API Key + Deploy
# 1. Create API key
curl -X POST http://localhost:3000/api/v1/api-keys \
  -H "Content-Type: application/json" \
  -H "x-user-id: user_demo" \
  -H "x-user-tier: elite" \
  -d '{"name": "My Bot Key"}'

# 2. Deploy bots (replace sh_live_... with your key)
curl -X POST http://localhost:3000/api/v1/deployments \
  -H "Authorization: Bearer sh_live_..." \
  -H "Content-Type: application/json" \
  -d '{"presetId":"roblox-afk-grid","target":"Blox Fruits","botCount":50}'

Rate Limits

TierRequests / minScopes
Free30deployments:read, scripts:read, status:read
Pro120+ deployments:write, scripts:write, telemetry:read
Elite600+ agents:write (all scopes)

Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Endpoints

TypeScript SDK

Use the official Ill Studios SDK for type-safe access to all API endpoints.

import { IllStudiosClient } from "@illstudios/sdk";

const client = new IllStudiosClient({
  apiKey: "sh_live_...",
  baseUrl: "http://localhost:3000",
});

// List deployments
const { deployments, metrics } = await client.deployments.list();

// Create a deployment
const dep = await client.deployments.create({
  presetId: "roblox-afk-grid",
  target: "Blox Fruits",
  botCount: 50,
});

// Register an agent
const agent = await client.agents.register({
  deploymentId: dep.id,
  machineId: "my-machine",
  hostname: "bot-runner-1",
  platform: "roblox",
});

// Send heartbeats
setInterval(() => {
  client.agents.heartbeat({
    agentId: agent.id,
    botsRunning: 12,
    cpuPercent: 35,
    memoryMb: 512,
  });
}, 30000);

// Stream telemetry
client.telemetry.stream((event) => {
  console.log(event.type, event.payload);
});
Ill Studios API v1 • Rate limited • All endpoints return JSON