Skip to content

🚀 This new wiki is in beta! Please double-check for any issue and report them on the GitHub

HTTP Parse Server

The HTTP parse server is an optional listener that exposes Skript validation outside the game. Instead of running an effect inside a script, external tools send Skript code over HTTP and receive the list of errors and warnings as a JSON response.

This makes ParseSK usable by:

  • Code editors & IDE extensions — live syntax checking while writing scripts
  • Linters & pre-commit hooks — reject broken scripts before they reach the server
  • CI pipelines — fail a build when a .sk file does not parse
  • Web playgrounds — validate snippets straight from a browser

The server is disabled by default. Enable it through ParseSK’s config.yml.

  1. Locate the config file

    After the first start with ParseSK installed, open plugins/ParseSK/config.yml.

  2. Enable the listener

    Set enabled to true and pick a port:

    http-server:
    # Whether the HTTP listener should be started together with the server.
    enabled: true
    # The TCP port the listener should bind to.
    port: 8765
    # Optional bearer token. When set (non-empty), every request must include
    # the header: Authorization: Bearer <token>
    # Leave empty to disable authentication.
    token: ''
  3. Restart the server

    Restart your Minecraft server. The console confirms the listener is up:

    [ParseSK] HTTP parse listener started on port 8765 (POST /parse).
OptionTypeDefaultDescription
http-server.enabledBooleanfalseWhether to start the listener on server startup
http-server.portNumber8765TCP port the listener binds to
http-server.tokenString''Optional bearer token; when set, requests must authenticate

The server exposes a single endpoint.

MethodPOST
Path/parse
Request bodyThe raw Skript code to validate (plain text, UTF-8)
ResponseA JSON object describing every error and warning

Send the complete Skript code as the raw request body. No JSON wrapping, no form encoding — just the code itself.

If a token is configured, the request must include the matching header:

Authorization: Bearer <token>

The response is always a JSON object. On success:

{
"success": true,
"valid": false,
"errorCount": 1,
"warningCount": 0,
"entries": [
{
"line": 3,
"level": "error",
"message": "Can't understand this effect: gives player a diamond",
"code": "gives player a diamond"
}
]
}
FieldTypeDescription
successBooleanWhether the request was processed (not whether the code is valid)
validBooleantrue when there are no errors (warnings are allowed)
errorCountNumberNumber of errors found
warningCountNumberNumber of warnings found
entriesArrayOne object per error/warning
entries[].lineNumberLine the entry refers to (-1 if unknown)
entries[].levelString"error" or "warning"
entries[].messageStringHuman-readable description
entries[].codeStringThe offending source line

On failure (bad method, bad token, internal error) the response carries an error field instead:

{ "success": false, "error": "Unauthorized" }
StatusMeaning
200Code parsed — see entries for the result
401Missing or invalid bearer token
405Wrong HTTP method — use POST
500Internal error while parsing
Terminal window
# Validate a script file
curl -X POST http://localhost:8765/parse --data-binary @myscript.sk
# Inline code
curl -X POST http://localhost:8765/parse \
--data-binary $'on join:\n gives player a diamond'
# With an authentication token
curl -X POST http://localhost:8765/parse \
-H "Authorization: Bearer my-secret-token" \
--data-binary @myscript.sk
  1. Bind to a private interface

    Run the listener behind a firewall, or only reach it from localhost / your internal network.

  2. Set a token

    Configure a non-empty token so only authenticated tools can call the endpoint.

  3. Put it behind a reverse proxy

    For public access, front the listener with a reverse proxy (nginx, Caddy, …) that adds TLS and rate limiting.

Configuration (plugins/ParseSK/config.yml)

Section titled “Configuration (plugins/ParseSK/config.yml)”
http-server:
enabled: false
port: 8765
token: ''
POST /parse
Body: <raw Skript code>
Authorization: Bearer <token> # only if a token is configured

Need help with ParseSK?