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).
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Human-readable title for the plan (e.g. "FY2026 Headcount Plan"). Max length: 180 |
horizon_months | integer | Yes | Number of months the plan covers (1–60). Minimum: 1 · Maximum: 60 |
assumptions_json | string | No | JSON object of planning assumptions, e.g. attrition rate, hiring budget, and growth targets. |
plan_payload_json | string | No | JSON object containing the month-by-month headcount projections with hire and exit counts per period. |
status | string | No | Lifecycle status of the plan. One of: |
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"}'