What this covers
This guide explains the Progression V2 nation projects endpoints:
GET /api/nations/[id]/projectsPOST /api/nations/[id]/projects/startPOST /api/nations/[id]/projects/fund
Shared behavior
- Auth required (session cookie).
- You must own the nation in
[id]. - Tick timing is authoritative server-side.
`GET /api/nations/[id]/projects`
Returns project state in progression-config order.
Data includes:
nationId,worldId,currentTicklaborCurrent,laborMaxprojects[]with:projectKey,namestatus:ACTIVE | COMPLETE | CANCELLED | MISSINGprogressMilli,requiredWorkMilli,percentCompletefunding.laborStartCostisFunded(whether the project builder has been started)startedAtTick,completedAtTick
`POST /api/nations/[id]/projects/start`
Starts the next eligible project in progression order.
- No request body required.
- Server selects the next startable project.
- New/started project gets
status=ACTIVEandstartedAtTick=currentTick.
Typical failures:
PROJECT_PREREQ_NOT_METNO_ELIGIBLE_PROJECT
`POST /api/nations/[id]/projects/fund`
Starts the active project builder by spending labor once.
Request body:
``json { "projectKey": "era_project_state" } ``
Success returns:
projectKeylaborStartCostlaborCurrentBefore,laborCurrentAfter
Common blockers:
PROJECT_KEY_INVALIDPROJECT_NOT_FOUNDPROJECT_NOT_ACTIVEPROJECT_ALREADY_FUNDEDINSUFFICIENT_LABOR
Labor semantics
Funding is an **upfront start cost**, not a recurring per-day spend.
- First successful fund call starts the builder.
- Re-funding the same active project returns
PROJECT_ALREADY_FUNDED. - Progress then advances each tick until completion.