Input constraints

View as Markdown

Simmit rejects profile directives that control filesystem access, network behavior, or compute resource allocation.

#Unsupported directives

Bash
# Output / file writes
output=
html=
json=
json2=
log=
save=
save_*
debug_seed=
debug_each=
spell_query_xml_output_file=
reforge_plot_output_file=

# File includes / reads
local_json=

# Network / external calls
proxy=
http_clear_cache=
guild=

# Secrets
apiKey=
apikey=
api_key=

# Compute resource control
threads=
profileset_work_threads=
profileset_init_threads=
process_priority=

# Output format control
progressbar_type=

# JSON output bloat
full_states=

# Plot directives
dps_plot_*
reforge_plot_*

Thread and parallelism directives (threads=, profileset_work_threads=, profileset_init_threads=) are managed by Simmit.


Plot directives (dps_plot_*, reforge_plot_*) are currently unsupported. Contact us if your use case requires plot support.

#Conditionally allowed directives

Bash
armory=

This directive is only available when credentials.bnetClientId and credentials.bnetClientSecret are provided in the job request. See the API Reference for details.

Bash
input=<bundled-filename>
<bundled-filename>

Profile includes resolve only against the build's bundled profiles/ tree. A filename is accepted when it appears in profiles.manifest for the build that runs the job. Out-of-bundle paths are blocked. See Bundled Profiles for the manifest shape and usage.

SimC reads any word without = as a filename, wherever it sits on a line, and # starts a comment only at the beginning of a line. Keep notes on their own lines.

#Precision safety bounds

Two precision directives have platform safety bounds. Values outside the bounds run at the bound, and the job submission response includes a warnings array describing the clamps and floors.

DirectiveSafety boundBehavior
iterations=≤ 250,000Values above 250,000 run at 250,000.
target_error=≥ 0.01Values below 0.01 run at 0.01.

Example response:

JSON
{
  "id": "0192…",
  "success": true,
  "runtime": {
    "ceiling": {
      "maxCredits": 57600,
      "runtimeSeconds": 1800,
      "queueSeconds": 1800
    }
  },
  "warnings": [
    {
      "kind": "iterations_clamped",
      "line": 12,
      "requested": 500000,
      "applied": 250000,
      "message": "iterations=500000 exceeds the platform safety cap of 250000; using 250000."
    }
  ],
  "warningsCount": 1
}

Possible kind values: iterations_clamped, target_error_floored. Multi-actor inputs with the same directive set per actor produce one warning per offending line. The response lists the first 16 warnings in line order and reports the total in warningsCount. Both fields are omitted when there are no warnings.

#Check a profile before you submit

POST /v1/simc/profiles/check runs the checks a submission applies to profile text, without starting a sim. It accepts a partial profile, such as lines you add to every sim, and doesn't create a job or use credits. If your submissions carry Battle.net credentials, send the same ones with the check, so armory= lines pass as they will on submit.

JSON
{
  "profile": {
    "text": "armory=us,area-52,voidly,spec=devourer\niterations=10000\nthreads=8\nhtml=voidly.html"
  },
  "credentials": {
    "bnetClientId": "your-client-id",
    "bnetClientSecret": "your-client-secret"
  }
}

The response is the one the same submission would get. A profile that passes returns 200 with success and any warnings. A profile that fails returns 422 with code input_sanitized_rejected for unsupported directives, or too_many_variants when it expands past your account variant limit. Each entry in meta.blocked names the directive its line matched:

JSON
{
  "error": "Unprocessable Entity",
  "code": "input_sanitized_rejected",
  "meta": {
    "reason": "input_sanitized_rejected",
    "message": "Several lines in your profile aren't supported.",
    "docsUrl": "https://docs.simmit.com/api/input-constraints",
    "blocked": [
      {
        "line": 3,
        "text": "threads=8",
        "directive": "threads",
        "message": "Simmit sets threads and process priority for every sim."
      },
      {
        "line": 4,
        "text": "html=voidly.html",
        "directive": "html",
        "message": "Writing files isn't supported. Simmit returns your reports and logs with your results."
      }
    ],
    "blockedCount": 2,
    "blockedTruncated": false
  }
}

Without credentials, the armory= line comes back blocked too, as it would on a submission without them.


This list may evolve as the platform or SimulationCraft changes. If your workflow requires a currently restricted directive, get in touch.