Skip to content

Create workforce plan

POST/hr/workforce-plans

Creates a new workforce plan with a defined planning horizon and structured assumptions. Plans start in 'draft' status and can be advanced to 'active' once approved. The plan_payload_json field holds the month-by-month projection.

Request

Request body

Content type application/json (required).

FieldTypeRequiredDescription
namestringYes

Human-readable title for the plan (e.g. "FY2026 Headcount Plan").

Max length: 180

horizon_monthsintegerYes

Number of months the plan covers (1–60).

Minimum: 1 · Maximum: 60

assumptions_jsonstringNo

JSON object of planning assumptions, e.g. attrition rate, hiring budget, and growth targets.

plan_payload_jsonstringNo

JSON object containing the month-by-month headcount projections with hire and exit counts per period.

statusstringNo

Lifecycle status of the plan.

One of: "draft", "active", "archived" · Default: "draft"

Example

{
  "name": "FY2026 Headcount Plan",
  "horizon_months": 12,
  "assumptions_json": "{\"attrition_rate\":0.08,\"hiring_budget\":120000}",
  "plan_payload_json": "{\"months\":[{\"month\":\"2026-05\",\"hires\":3,\"exits\":1}]}",
  "status": "draft"
}

Responses

302 Redirect to the HR planning index after creation

422 Validation error

Example request

curl -X POST "https://{tenant}.faciotech.net/api/v1/hr/workforce-plans" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name": "FY2026 Headcount Plan", "horizon_months": 12, "assumptions_json": "{\"attrition_rate\":0.08,\"hiring_budget\":120000}", "plan_payload_json": "{\"months\":[{\"month\":\"2026-05\",\"hires\":3,\"exits\":1}]}", "status": "draft"}'
Loading