Catalog/sched-rota-round-robin

Scheduling

Round-robin rota API

Generates a round-robin rota assigning people to ordered slots cyclically (perSlot people each), returning the assignment and each person's shift count with a balance check. Answers 'Who is on duty each day in a fair rotation?', 'How many shifts does each person get?'.

Price$0.02per request
MethodPOST
Route/v1/scheduling/rota-round-robin
StatusLive
MIME typeapplication/json
Rate limit120/minute
Cache0s public
schedulingshiftsrotaround-robinrotationfairnesscoverageagents
API URLhttps://x402.hexl.dev/v1/scheduling/rota-round-robin
Integration docs
Example request
{
  "people": [
    "alice",
    "bob",
    "carol"
  ],
  "slots": [
    "Mon",
    "Tue",
    "Wed",
    "Thu"
  ]
}
Example response
{
  "rota": [
    {
      "slot": "Mon",
      "assigned": [
        "alice"
      ]
    },
    {
      "slot": "Tue",
      "assigned": [
        "bob"
      ]
    },
    {
      "slot": "Wed",
      "assigned": [
        "carol"
      ]
    },
    {
      "slot": "Thu",
      "assigned": [
        "alice"
      ]
    }
  ],
  "shiftCounts": {
    "alice": 2,
    "bob": 1,
    "carol": 1
  },
  "maxShifts": 2,
  "minShifts": 1,
  "balanced": true,
  "interpretation": "Assigned 4 slot(s) across 3 people; spread 1–2 shifts."
}
Input schema
{
  "type": "object",
  "required": [
    "people",
    "slots"
  ],
  "properties": {
    "people": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "examples": [
        [
          "alice",
          "bob",
          "carol"
        ]
      ]
    },
    "slots": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "examples": [
        [
          "Mon",
          "Tue",
          "Wed",
          "Thu"
        ]
      ]
    },
    "startIndex": {
      "type": "number",
      "examples": [
        0
      ]
    },
    "perSlot": {
      "type": "number",
      "examples": [
        1
      ]
    }
  }
}
Output schema
{
  "type": "object",
  "additionalProperties": true
}