circle-info
Syntrix Is Officially Out

lua api

All API calls are made from inside the executor (Roblox client). Use syn.request, http_request, request, or equivalent depending on the executor.

Base URL: https://dev.syntrx.xyz


GET /api/challenge

Fetch a one-time challenge token required for every execute request.

Query params:

Param
Type
Required

scriptId

string (ObjectId)

Yes

Response:

{
  "challenge": "abc123...",
  "expiresIn": 120,
  "fp": "..."
}

Challenges expire after 120 seconds. Always fetch a fresh one immediately before your execute call.

circle-info

Challenges expire after 120 seconds. Fetch a new challenge immediately before calling /api/execute.


POST /api/execute

Validate a key and receive the script payload.

Headers:

Body:

Success response:

Failure response:

If encoded: true, the payload is base64-encoded. Decode before passing to loadstring.


POST /api/execute/keyless

Execute without a key. Only works if keyless mode is active for the current day on the provider or service.

Body:

Response: Same shape as /api/execute.

Returns { "success": false, "error": "Key required" } if keyless is not active.


GET /api/getkey/:scriptId

Returns provider info for the get key page. Used to render the get key UI and check if keyless is active before starting a session.

Response:

If provider.keylessMode is true, skip the step flow and call /api/execute/keyless directly.


HWID Detection

Syntrix uses the Roblox Analytics client ID as the HWID:

Fallback if that fails:


Rate Limits

Endpoint
Limit

/api/execute

30 req / 60s per IP

/api/execute (per script)

10 req / 60s per script

/api/challenge

60 req / 60s

/api/getkey/:id/start

30 req / 60s

/api/getkey/:id/step/:n

60 req / 60s

/api/getkey/:id/verify (POST)

30 req / 60s

Exceeding limits returns HTTP 429.