NC
HomeGuidesMechanics

KB article

Progression V2 Projects API: start, fund, and labor semantics

Reference for nation projects API endpoints, labor spending flow, start semantics, and common reason-code fixes.

Read 1 minGetting Started#progression#projects#api#labor#reason-codes

Updated February 26, 2026

What this covers

This guide explains the Progression V2 nation projects endpoints:

  • GET /api/nations/[id]/projects
  • POST /api/nations/[id]/projects/start
  • POST /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, currentTick
  • laborCurrent, laborMax
  • projects[] with:
  • projectKey, name
  • status: ACTIVE | COMPLETE | CANCELLED | MISSING
  • progressMilli, requiredWorkMilli, percentComplete
  • funding.laborStartCost
  • isFunded (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=ACTIVE and startedAtTick=currentTick.

Typical failures:

  • PROJECT_PREREQ_NOT_MET
  • NO_ELIGIBLE_PROJECT

`POST /api/nations/[id]/projects/fund`

Starts or extends active project funding by spending labor.

Request body:

``json { "projectKey": "era_project_state", "days": 1 } ``

days is optional and defaults to 1.

Success returns:

  • projectKey
  • laborStartCost
  • appliedFundingDays
  • laborCurrentBefore, laborCurrentAfter
  • fundedUntilTick
  • fundedTicksRemaining

Common blockers:

  • PROJECT_KEY_INVALID
  • PROJECT_NOT_FOUND
  • PROJECT_NOT_ACTIVE
  • PROJECT_PREFUND_CAP_REACHED
  • INSUFFICIENT_LABOR

Labor semantics

Funding uses **labor-paid windows** tied to ticks.

  • Funding applies in day-sized windows (days), each costing the configured labor start cost.
  • First successful fund call starts funding coverage; additional calls extend coverage.
  • Coverage cannot be stacked beyond the configured prefund cap (PROJECT_PREFUND_CAP_REACHED).
  • Project progress advances on ticks while funding coverage remains.