Calculators
Earned-value analysis (CPI/SPI/CV/SV) API
Compute the canonical PMI/PMBOK earned-value metrics from PV, EV, AC — CV = EV-AC, SV = EV-PV, CPI = EV/AC, SPI = EV/PV — with percent variances, over-budget/behind-schedule flags, a health bucket, and a per-metric breakdown. Deterministic ratios LLMs get subtly wrong. Answers 'what is my CPI and SPI','is this project over budget','how far behind schedule am I','give me the earned-value breakdown'.
Price$0.01per request
MethodPOST
Route/v1/calc/pm-earned-value
StatusLive
MIME typeapplication/json
Rate limit120/minute
CacheNo cache
calcpmearned-valueevmcpispivarianceproject
API URL
Integration docshttps://x402.hexl.dev/v1/calc/pm-earned-valueExample request
{
"plannedValue": 1000,
"earnedValue": 800,
"actualCost": 1000
}Example response
{
"plannedValue": 1000,
"earnedValue": 800,
"actualCost": 1000,
"costVariance": -200,
"scheduleVariance": -200,
"costVariancePct": -25,
"scheduleVariancePct": -20,
"cpi": 0.8,
"spi": 0.8,
"overBudget": true,
"behindSchedule": true,
"status": "at-risk",
"breakdown": [
{
"metric": "CV = EV - AC",
"value": -200
},
{
"metric": "SV = EV - PV",
"value": -200
},
{
"metric": "CPI = EV / AC",
"value": 0.8
},
{
"metric": "SPI = EV / PV",
"value": 0.8
}
]
}Input schema
{
"type": "object",
"required": [
"plannedValue",
"earnedValue",
"actualCost"
],
"properties": {
"plannedValue": {
"type": "number",
"description": "PV / BCWS, budgeted cost of work scheduled",
"examples": [
1000
]
},
"earnedValue": {
"type": "number",
"description": "EV / BCWP, budgeted cost of work performed",
"examples": [
800
]
},
"actualCost": {
"type": "number",
"description": "AC / ACWP, actual cost of work performed",
"examples": [
1000
]
}
}
}Output schema
{
"type": "object",
"additionalProperties": true
}