REST · JSONv1

API Reference

Scripts, search, trending, users, and games. AI vector search, real-time analytics, and risk-screened results, built on the same stack that powers rscripts.net.

https://api.rscripts.netOpen API
Get API key

Overview

The Rscripts API is a read-only REST interface. Every response is JSON with a consistent envelope. CORS is open for GET requests. API keys are required on all /v1 routes. Rate limits apply per IP. Only public, reviewed scripts are returned.

Format

JSON

Auth

API key

Safety

Filtered

Authentication

All /v1 endpoints require an API key. Every signed-in user can create one instantly from /dashboard/api.

  • Authorization: Bearer rsc_live_… (recommended)
  • X-Api-Key: rsc_live_… (alternative)
  • /health and the root metadata route are public.
  • Invalid or missing keys return 401 with code UNAUTHORIZED.
  • Regenerating your key in the dashboard revokes the previous one immediately.
Example requesturl
curl -H "Authorization: Bearer rsc_live_YOUR_KEY" "https://api.rscripts.net/v1/search?q=autofarm&limit=3"

Trust & safety

Every script in the API has passed automated risk screening. Scripts that score above our safety threshold are automatically removed from public results and queued for manual review. They never appear in search, list, or trending responses.

  • High-risk scripts are filtered before they reach the API.
  • Flagged uploads enter manual review and stay hidden until cleared.
  • Each result includes a risk score (1–10) and level so you can add your own UI guardrails.
  • Full findings (patterns, obfuscation, severity) are on the script detail endpoint.

A null risk field means the script has not been scanned yet, not that it is safe. Most indexed scripts include a score.

Responses

Success and error shapes are always predictable.

Successjson
{
  "success": true,
  "data": {},
  "meta": {
    "page": 1
  }
}
Errorjson
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Script not found"
  }
}

Rate limits

1,000 requests per 60 seconds per IP. Redis-backed, fail-open if Redis is down. Every response includes rate limit headers.

  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset
  • Retry-After (429 only)

Shared parameters

Available on scripts, search, and trending endpoints.

htmlDescriptionReturn descriptions as raw HTML instead of stripped plain text.
includeScriptInline raw Lua source in the response. Default off on list/search/trending. Use rawScript URL instead. Always on for script detail.

Boolean params accept true/false, 1/0, yes/no. The string "false" is correctly parsed as false.

GET/health

Health

Service health check. Returns database, cache, and search service status.

Requesturl
https://api.rscripts.net/health
Responsejson
{
  "status": "ok",
  "services": {
    "postgres": "ok",
    "redis": "ok",
    "vector-search": "ok"
  },
  "ts": "2026-07-16T12:03:18.802Z"
}
GET/v1/scripts

List scripts

Browse or search scripts with sorting and filters. Pass placeId to list scripts for a specific Roblox game.

ParameterDescription
qOptional search query (uses AI vector search when set).
placeIdRoblox place ID. When set, returns only scripts for that game (same as game pages on rscripts.net). Combines with q and other filters.
pagedefault: 1Page (1–200).
limitdefault: 20Items per page (1–48).
sortdefault: newestnewest | oldest | most-views | least-views | most-likes | trending
noKeySystemdefault: falseExclude key-system scripts.
mobileOnlydefault: falseMobile-ready scripts only.
freeOnlydefault: falseFree scripts only.
verifiedOnlydefault: falseVerified creators only.
htmlDescriptiondefault: falseReturn descriptions as raw HTML instead of stripped plain text.
includeScriptdefault: falseInline raw Lua source in the response. Default off on list/search/trending. Use rawScript URL instead. Always on for script detail.
  • ·Pagination is in the top-level meta object.
  • ·When placeId is set, meta.game includes the resolved game title, thumbnails, and Roblox URL.
  • ·Returns public scripts only. Patched, private, and under-review scripts are excluded.
Requesturl
https://api.rscripts.net/v1/scripts?placeId=2753915549&sort=most-likes&limit=12
Responsejson
{
  "success": true,
  "data": [
    {
      "id": "…",
      "title": "…",
      "slug": "…",
      "rawScript": "https://rscripts.net/raw/…",
      "script": null,
      "game": {
        "placeId": "2753915549",
        "title": "Blox Fruits"
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 12,
    "total": 842,
    "totalPages": 71,
    "hasNextPage": true,
    "hasPrevPage": false,
    "game": {
      "placeId": "2753915549",
      "title": "Blox Fruits",
      "thumbnailUrl": "https://tr.rbxcdn.com/…",
      "logoUrl": "https://tr.rbxcdn.com/…",
      "robloxUrl": "https://www.roblox.com/games/2753915549"
    }
  }
}
GET/v1/scripts/:slug

Script detail

Full script object by slug, including executors, game, risk findings, and inline Lua source.

ParameterDescription
htmlDescriptiondefault: falseReturn description as raw HTML.
  • ·Script content is always included on detail (no includeScript flag needed).
Requesturl
https://api.rscripts.net/v1/scripts/example-slug-abc123
Responsejson
{
  "success": true,
  "data": {
    "id": "69e11446c3822ebe4c6400f8",
    "title": "Example Script",
    "slug": "example-script-abc",
    "description": "Plain-text description…",
    "rawScript": "https://rscripts.net/raw/example.txt",
    "script": "loadstring(game:HttpGet(\"…\"))()",
    "risk": {
      "score": 3,
      "level": "Low Risk",
      "isObfuscated": false,
      "findings": [
        {
          "label": "HttpService",
          "severity": "info",
          "description": null
        }
      ]
    },
    "game": {
      "placeId": "123",
      "title": "Game",
      "robloxUrl": "https://www.roblox.com/games/123"
    },
    "creator": {
      "username": "creator",
      "isVerified": true,
      "isPro": true,
      "avatarUrl": null
    },
    "executors": [
      {
        "id": "…",
        "name": "Solara",
        "platforms": [
          "Windows"
        ],
        "imageUrl": null
      }
    ]
  }
}

Error codes

VALIDATION_ERROR400Invalid query parameters
NOT_FOUND404Route or resource not found
RATE_LIMITED429Too many requests
INTERNAL_ERROR500Unexpected server error
SERVICE_UNAVAILABLE503Search service unavailable

Objects

Key fields on script objects. High-risk scripts are excluded from the API by default.

Scriptjson
{
  id, title, slug, description,
  views, likes, dislikes,
  createdAt, lastUpdatedAt, lastBumpedAt,
  isPatched, isMobileReady, isKeySystem, keySystemUrl, isPaid,
  discordUrl, youtubeUrl,
  rawScript,    // URL to fetch Lua source
  script,       // inline Lua (opt-in or detail)
  imageUrl,
  game: { placeId, title, thumbnailUrl, logoUrl, robloxUrl },
  creator: { username, isVerified, isPro, avatarUrl },
  executors: [{ id, name, imageUrl, platforms, discordUrl, websiteUrl }],
  risk: {       // null = not yet scanned
    score,      // 1 (safest) – 10 (highest risk)
    level,      // Safe | Low Risk | Suspicious | Malicious
    isObfuscated, obfuscatorDetected,
    confidence, analyzedAt, matchedPatterns, findings
  }
}