{"openapi":"3.1.0","info":{"title":"Earned Value Management API","version":"1.0.0","description":"Earned Value Management (EVM) maths as an API, computed locally and deterministically — the project cost-and-schedule controls used in PMP, PRINCE2 and government contracting. The metrics endpoint takes the budget at completion (BAC), planned value (PV), earned value (EV) and actual cost (AC) — or a percent-complete and planned-percent of BAC — and returns the cost variance (CV = EV−AC), schedule variance (SV = EV−PV), the cost and schedule performance indices (CPI = EV/AC, SPI = EV/PV), the percent complete and spent, and a plain-language over/under-budget and ahead/behind-schedule read. The forecast endpoint projects the finish: the estimate at completion by three standard methods (BAC/CPI when the cost trend continues, AC + remaining budget, and the cost-and-schedule AC + (BAC−EV)/(CPI·SPI)), the estimate to complete (ETC), the variance at completion (VAC) and the to-complete performance index (TCPI) to land on either the original budget or the EAC. A CPI of 0.875 on a 1000 budget forecasts a 1143 overrun. Everything is computed locally and deterministically, so it is instant and private. Ideal for project-management, PMO, construction, aerospace and contracting app developers, project dashboards and earned-value reporting tools, and PMP/PRINCE2 training. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 2 compute endpoints. This is earned-value project control; for loan or NPV cash-flow maths use a finance API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/earnedvalue-api","description":"oanor gateway"}],"tags":[{"name":"EarnedValue"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/forecast":{"get":{"operationId":"get_v1_forecast","tags":["EarnedValue"],"summary":"EAC / ETC / VAC / TCPI","description":"","parameters":[{"name":"bac","in":"query","required":true,"description":"Budget at completion","schema":{"type":"string"},"example":"1000"},{"name":"ac","in":"query","required":true,"description":"Actual cost","schema":{"type":"string"},"example":"400"},{"name":"ev","in":"query","required":false,"description":"Earned value (or percent_complete)","schema":{"type":"string"},"example":"350"},{"name":"pv","in":"query","required":false,"description":"Planned value (or planned_percent)","schema":{"type":"string"},"example":"400"},{"name":"percent_complete","in":"query","required":false,"description":"% complete of BAC","schema":{"type":"string"}},{"name":"planned_percent","in":"query","required":false,"description":"% planned of BAC","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"cpi":0.875,"eac":1142.8571,"etc":742.8571,"spi":0.875,"vac":-142.8571,"note":"EAC = BAC/CPI (cost trend continues); ETC = EAC−AC; VAC = BAC−EAC (negative = overrun). TCPI = (BAC−EV)/(BAC−AC) is the efficiency the remaining work must hit to land on budget.","inputs":{"ac":400,"ev":350,"pv":400,"bac":1000},"eac_methods":{"cpi_based":1142.8571,"budget_rate":1050,"cost_and_schedule":1248.9796},"tcpi_to_bac":1.0833,"tcpi_to_eac":0.875},"meta":{"timestamp":"2026-06-05T21:48:48.535Z","request_id":"0b4cc730-9657-498a-8df1-006ec268c360"},"status":"ok","message":"EVM forecast","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/metrics":{"get":{"operationId":"get_v1_metrics","tags":["EarnedValue"],"summary":"EVM variances & indices","description":"","parameters":[{"name":"bac","in":"query","required":true,"description":"Budget at completion","schema":{"type":"string"},"example":"1000"},{"name":"ac","in":"query","required":true,"description":"Actual cost","schema":{"type":"string"},"example":"400"},{"name":"ev","in":"query","required":false,"description":"Earned value (or percent_complete)","schema":{"type":"string"},"example":"350"},{"name":"pv","in":"query","required":false,"description":"Planned value (or planned_percent)","schema":{"type":"string"},"example":"400"},{"name":"percent_complete","in":"query","required":false,"description":"% complete of BAC","schema":{"type":"string"}},{"name":"planned_percent","in":"query","required":false,"description":"% planned of BAC","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"cpi":0.875,"spi":0.875,"note":"CV = EV−AC, SV = EV−PV; CPI = EV/AC, SPI = EV/PV. Index ≥ 1 is good; CPI 0.9 means 90 cents of value per dollar spent.","inputs":{"ac":400,"ev":350,"pv":400,"bac":1000},"cost_status":"over budget","cost_variance":-50,"percent_spent":40,"schedule_status":"behind schedule","percent_complete":35,"schedule_variance":-50,"cost_variance_percent":-14.2857,"schedule_variance_percent":-12.5},"meta":{"timestamp":"2026-06-05T21:48:48.633Z","request_id":"c28ee8a3-1bac-4997-b40f-6f0a33a48c89"},"status":"ok","message":"EVM metrics","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"PV/EV/AC in one consistent currency; EV and PV can be given directly or as percent_complete/planned_percent of BAC. For loan/NPV cash-flow maths use a finance API.","service":"earnedvalue-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/metrics":"Variances, CPI/SPI and progress from BAC, PV, EV, AC (or percentages).","GET /v1/forecast":"EAC (three methods), ETC, VAC and TCPI."},"description":"Earned Value Management (EVM): cost/schedule variances and indices (CV, SV, CPI, SPI) and at-completion forecasts (EAC, ETC, VAC, TCPI)."},"meta":{"timestamp":"2026-06-05T21:48:48.730Z","request_id":"d37b25bc-a9e0-4441-8517-ebafe3fb17ab"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":4350,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":565,"monthly_call_quota":46000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1490,"monthly_call_quota":209000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4550,"monthly_call_quota":1175000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/earnedvalue-api"}