First hosted solve: a complete request
For a ready-to-run project, begin with the
Python and Node.js starter download.
It includes the project layout, a sample request, a Python HTTP client and a
Node.js client using the built-in fetch API. Download and unpack it, or use the
git clone command in its README. Request the API origin
and bearer token for your account from your service operator, put those values
in the ignored .env file, then run either implementation as described in its
README. The hosted path uses the Solver API and does not ask you to download a
license file or local solver binaries. Self-hosted and embedded execution are
different distributions; follow their supplied installation and licensing
instructions.
The starter uses the documented REST contract because a general external Python or Node.js Solver SDK is not currently published. Its two examples are small clients over that API, not SDK packages. Once the starter succeeds, use the request and API examples below to understand the same contract in detail.
Start with the packaged container_logistics type. This exercises a normal
CPU solve without an inline manifest, pack installation or a GPU worker.
The download contains one container and one shipment with explicit capacity,
port and timing data. If discovery does not list this type, ask your operator
for a deployment that includes it.
curl --fail-with-body -o solve-request.json \
https://helixor.dev/static/solver/first-solve-request.json
curl --fail-with-body \
-H "Authorization: Bearer ${SOLVER_TOKEN}" \
"${SOLVER_URL}/api/v1/manifests/container_logistics" \
-o container-logistics-manifest.json
curl --fail-with-body \
-H "Authorization: Bearer ${SOLVER_TOKEN}" \
-H 'Content-Type: application/json' \
--data-binary @solve-request.json \
"${SOLVER_URL}/api/v1/solve/container_logistics" \
-o solve-result.json
jq . solve-result.json
jq -e '.solution.admission.is_feasible == true' solve-result.json
For this example, solution.container_details places shipment S1 on container
C1; solution.admission reports the evaluated constraints and zero hard and
eligibility penalties. Inspect the returned assignments and final feasibility evidence; HTTP success
alone does not establish feasibility. Keep the request, downloaded manifest and
result together when reporting a problem. This small example tests connectivity
and the contract; it is not a performance benchmark.
Check the refusal path by submitting the same request with an empty problem.
Expect HTTP 422 and a typed missing_problem_data diagnostic. A 401 means the
credential was not accepted; a 403 means the authenticated caller lacks the
required permission. Do not disable authentication to make either pass.
jq '.problem = {}' solve-request.json > invalid-request.json
curl --silent --show-error -w '\nHTTP %{http_code}\n' \
-H "Authorization: Bearer ${SOLVER_TOKEN}" \
-H 'Content-Type: application/json' \
--data-binary @invalid-request.json \
"${SOLVER_URL}/api/v1/solve/container_logistics"