Three calls to a solved schedule.

The engine behind the platform is an HTTP API. Submit a problem as a graph, poll the job, fetch the result. The platform itself is built on it, so anything the portal does, your systems can do too.

1. Submit the problem

Nodes are variables (things to place), constraints (rules) and resources (rooms). Edges connect a rule to what it governs. Each constraint names a strategy and its parameters.

POST /api/v1/optimize
{
  "graphDefinition": {
    "nodes": [
      { "id": "lec-math", "type": "VARIABLE" },
      { "id": "lec-cs",   "type": "VARIABLE" },
      { "id": "clash-y1", "type": "CONSTRAINT" }
    ],
    "edges": [
      { "from": "lec-math", "to": "clash-y1" },
      { "from": "lec-cs",   "to": "clash-y1" }
    ],
    "constraintStrategies": {
      "clash-y1": {
        "strategyName": "clash",
        "parameters": { "penalty": 10000 }
      }
    }
  }
}
202  { "jobId": "..." }

2. Poll, then fetch the result.

Jobs run asynchronously. The result carries the assignment, a per-constraint cost breakdown and the total, so you can see exactly which rules were traded off and by how much.

More than twenty constraint strategies are available, from hard clashes and room capacity to slot costs, spreading and daily load.

$ curl .../api/v1/jobs/$ID
  { "status": "SUCCEEDED", "convergenceScore": 0.98 }

$ curl .../api/v1/jobs/$ID/result
  {
    "assignment": { "lec-math": 3, "lec-cs": 7 },
    "costBreakdown": { "CLASH": 0, "ROOM": 12 },
    "totalCost": 12
  }

Access

API keys are issued with a pilot or on request while we are in early access. Tell us what you want to schedule and we will send documentation and a key.