Cloud SaaS Dashboard
A planning workspace for production planners: import your routing, run the solver, review the Gantt chart and publish the schedule to the shop floor.
See planner featuresBrowser-based Advanced Planning & Scheduling (APS). Automatically handles up to 300 operations for JSS and Flexible JSS (alternative machines). Solves complex scheduling in seconds, minimizing total completion time (makespan).
Built for CNC machining, packaging, injection molding and steel fabrication plants
Live schedule preview
Machine lanes · 4 jobs · sequence-dependent setups
—
Schedules optimized
—
Registered planners
—
Median solve time
—
Solver status
Planners work in a ready-made cloud dashboard. Software teams call the same engine directly from their ERP or MRP.
A planning workspace for production planners: import your routing, run the solver, review the Gantt chart and publish the schedule to the shop floor.
See planner featuresCommercial access to the high-performance calculation engine for ERP/MRP developers and IT integrators. REST in, optimized sequence out.
Read the API pitchDesigned with planners in factories of 10 to 250 employees — the ones who still rebuild the plan every morning in a spreadsheet.
Intelligently assigns tasks to alternative machines based on true capacity, qualification and current load — not on habit.
Native support for rigorous business conditions: strict sequence dependencies, sequence-dependent setup times, cooldown and curing periods, machine availability windows.
Drag and drop CSV/Excel files exported straight from your current MRP/ERP. No integration project, no IT ticket, no data warehouse.
See the critical path and the machines that actually cap your throughput, with utilization per lane and per shift.
Run what-if plans side by side: rush order inserted, machine down, second shift added — and compare makespan and lateness instantly.
Export the optimized sequence back to CSV/Excel or print per-machine dispatch lists your operators can actually follow.
−18%
Shorter lead times thanks to a minimized makespan
0
Manual sequencing errors from copy-paste spreadsheets
+12%
Higher machine utilization on bottleneck resources
Your ERP already knows the routings, the machines and the due dates. It just cannot schedule them. Post that data to the commercial solver gateway, poll the job and receive a feasible, optimized sequence. Two input formats: structured JSON or compact DZN.
Every call carries a B2B bearer token: Authorization: Bearer <your_api_key>. Solving is asynchronous — POST returns a job_id, GET returns the status and the result.
Solver input is passed as a structured model_data object instead of raw DZN text. The gateway includes a normalization layer, so you write plain developer notation and the engine converts it to the set structures the MiniZinc compiler requires.
/api/commercial/v1/solve/json— Start solving (asynchronous)/api/commercial/v1/solve/json/{job_id}— Job status and results3 machines, 2 jobs, 4 tasks, 6 operations — submitted with one extra constraint and a 60 s time limit.
Request
curl -i -X POST https://api.makespan.pl:443/api/commercial/v1/solve/json \
-H "Authorization: Bearer $MAKESPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule_id": "json-small-schedule-uuid",
"user_id": "json-small-user-uuid",
"model_data": {
"no_mach": 3,
"no_jobs": 2,
"no_task": 4,
"no_optt": 6,
"tasks": [[1, 2], [3, 4]],
"optts": [[1, 2], [3], [4, 5], [6]],
"optt_mach": [1, 2, 2, 2, 3, 1],
"optt_dur": [10, 15, 20, 12, 8, 5]
},
"constraints_text": "constraint start[1] >= 5;",
"time_limit_seconds": 60
}'Response
202 Accepted{
"job_id": "job-0c19ea48",
"status": "queued",
"schedule_id": "json-small-schedule-uuid",
"estimated_wait_seconds": 9
}Poll the job_id returned by POST. Once status is completed, result_json carries the optimized schedule.
Request
curl -i -X GET https://api.makespan.pl:443/api/commercial/v1/solve/json/job-0c19ea48 \
-H "Authorization: Bearer $MAKESPAN_API_KEY"Response
200 OK{
"job_id": "job-0c19ea48",
"schedule_id": "json-small-schedule-uuid",
"status": "completed",
"error_message": null,
"started_at": "2026-08-22T16:43:40.947288Z",
"finished_at": "2026-08-22T16:43:41.242836Z",
"result_json": {
"start": [5, 15, 0, 15],
"dur": [10, 20, 8, 5],
"b": [true, false, true, false, true, true],
"objective": 35
}
}This format accepts solver input written as raw DZN text (where newline characters are encoded as \n).
/api/commercial/v1/solve— Start solving (asynchronous)/api/commercial/v1/solve/{job_id}— Job status and resultsThe same model — 3 machines, 2 jobs, 4 tasks, 6 operations — sent as a single dzn_text string.
Request
curl -i -X POST https://api.makespan.pl:443/api/commercial/v1/solve \
-H "Authorization: Bearer $MAKESPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule_id": "14e6636f-8388-4e57-8dfd-f428c5fe1190",
"user_id": "79f04043-fec5-4081-b276-774412df0821",
"dzn_text": "no_mach = 3;\nno_jobs = 2;\nno_task = 4;\nno_optt = 6;\ntasks = [1..2, 3..4];\noptts = [1..2, 3..3, 4..5, 6..6];\noptt_mach = [1, 2, 2, 2, 3, 1];\noptt_dur = [10, 15, 20, 12, 8, 5];",
"constraints_text": "constraint start[1] >= 5;",
"time_limit_seconds": 60
}'Response
202 Accepted{
"job_id": "job-0c19ea48",
"status": "queued",
"schedule_id": "14e6636f-8388-4e57-8dfd-f428c5fe1190",
"estimated_wait_seconds": 9
}The finished job returns result_dzn: objective plus the start, dur and b arrays in DZN notation.
Request
curl -i -X GET https://api.makespan.pl:443/api/commercial/v1/solve/job-0c19ea48 \
-H "Authorization: Bearer $MAKESPAN_API_KEY"Response
200 OK{
"job_id": "job-0c19ea48",
"schedule_id": "14e6636f-8388-4e57-8dfd-f428c5fe1190",
"user_id": "79f04043-fec5-4081-b276-774412df0821",
"status": "completed",
"result_dzn": "objective = 35;\nstart = [5, 15, 0, 15];\ndur = [10, 20, 8, 5];\nb = [true, false, true, false, true, true];",
"error_message": null,
"started_at": "2026-08-21T14:03:49.924494Z",
"finished_at": "2026-08-21T14:03:50.435426Z"
}For ERP/MRP-class production systems, webhooks are the recommended integration method with makespan.online instead of continuously polling for job status.
Production schedule optimization is computationally heavy. Depending on problem size and the configured time_limit_seconds, a run can take from a few seconds to several minutes.
Simply configure a Webhook URL in your account settings (Tenant Portal), e.g. https://your-erp-system.pl/api/v1/makespan-callback. Our server will send a POST request there with Content-Type: application/json.
Best practice: Your receiving server should respond immediately with status 200 OK or 202 Accepted (ideally within 2 seconds). Process and store the result asynchronously in the background to prevent the gateway from closing the connection due to timeout.
When the original job was sent in JSON format, the webhook returns the result in result_json.
{
"job_id": "job-ccc5892d",
"schedule_id": "json-small-schedule-uuid-vps-test",
"status": "Success",
"error_message": null,
"solver_seconds": 12.35,
"finished_at": "2026-08-26T06:59:44.125Z",
"result_json": {
"start": [5, 15, 0, 15],
"dur": [10, 20, 8, 5],
"b": [true, false, true, false, true, true],
"objective": 35
}
}When the original job was sent in DZN format, the webhook returns the result in result_dzn.
{
"job_id": "job-0c19ea48",
"schedule_id": "14e6636f-8388-4e57-8dfd-f428c5fe1190",
"status": "Success",
"error_message": null,
"solver_seconds": 18.12,
"finished_at": "2026-08-26T07:11:05.435Z",
"result_dzn": "objective = 35;\nstart = [5, 15, 0, 15];\ndur = [10, 20, 8, 5];\nb = [true, false, true, false, true, true];"
}Two endpoints are all you integrate: POST to start solving, GET to collect the status and the result. No agents, no on-prem installation, no schema migration on your side.
Solving is asynchronous, so a long run never blocks your ERP transaction.
Webhooks remove the need to poll GET /solve/{job_id} every few seconds. Your ERP sends one POST and resumes work only when the gateway pushes the completed result.
The gateway pushes a notification as soon as the solver finishes — whether the job succeeds, times out or fails validation — so your system reacts to real events instead of checking for them.
Background integration without blocking worker threads. Your application scales better because it does not hold connections open while the engine is optimizing.
As soon as the solver finds the first schedule satisfying every constraint, it does not stop. It keeps searching for a better objective — for example a shorter makespan — until the granted time_limit_seconds is exhausted.
You always receive the best schedule found within your time budget.
Counter-intuitively, adding constraints usually shortens the solve, not lengthens it.
Technically: every constraint prunes the search tree of the optimization problem, so the remaining space to explore is smaller and the search moves through it faster.
A free sandbox key, deterministic sample datasets and complete developer documentation (Swagger UI and ReDoc) for your integration team.
The solver constraint library currently counts around 10 items. Next to simple ones — such as "job A may start between date X and date Y" — it covers several advanced constraints:
A flat developer base fee plus solve-volume tiers, so you can price your own APS add-on with confidence.
Start free while we finish the beta, then move to the plan that matches how you use the engine. Annual billing, no setup fees.
$0
during public beta
For planners who want to see what an optimized schedule looks like on their own data.
$149/mo
per month, billed annually
For manufacturing SMEs running the plan every day across several work centers.
$99/mo
per month base + volume tiers
For ERP/MRP vendors and integrators embedding scheduling into their own product.
Nothing is deleted. Beta accounts keep read access to every schedule they created and can export them at any time.
It is the limit on standard tiers and covers the vast majority of SME job shops. Larger models are available on request.
The dashboard is cloud only. The solver engine can be licensed for private deployment on the API plan.
EUR, PLN and USD, with VAT handled according to EU reverse-charge rules.
Request free beta access and bring one week of real production data.