Skip to content

Effort tracking

Effort tracking endpoints return what people actually worked on, captured from your PMS or entered manually. This is the actuals side — for the forecast side (planned allocations) see Assignments.

New to Flowstate?

See Effort tracking for the conceptual model — weekly grids, approval stages, PMS sync.

Effort vs allocation

ConceptSourceEndpoint family
AllocationForecast — what you planned/assignments
EffortActual — what happened/effort/... (this page)

Effort data is gated by sensitivity. Cost figures require the financials.view-summary (or detailed) permission. Without it, FTE data still returns but cost fields are stripped.


Endpoints

MethodPathDescription
GET/org/:orgId/effort/projects/:projectIdPer-resource effort breakdown for a project
GET/org/:orgId/effort/teams/:teamIdPer-project effort breakdown for a team
GET/org/:orgId/effort/unattributedEffort not linked to any Flowstate project

Get project effort

GET /org/:orgId/effort/projects/:projectId

Returns each resource (employee, contractor, AI agent) that contributed effort to the project, with FTE-equivalent and (if permitted) cost.

Query parameters

ParameterTypeDefaultDescription
startDatedate (YYYY-MM-DD)3 months ago, first of monthStart of the window.
endDatedate (YYYY-MM-DD)todayEnd of the window.

Example

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/effort/projects/clx_proj_id?startDate=2026-01-01&endDate=2026-03-31" \
  -H "Authorization: Bearer private_..."

Example response

json
{
  "data": {
    "projectId": "clx_proj_id",
    "projectName": "Billing V2",
    "dateRange": { "startDate": "2026-01-01", "endDate": "2026-03-31" },
    "resources": [
      {
        "resourceId": "clx_emp_id",
        "resourceName": "Jane Chen",
        "resourceType": "employee",
        "fte": 0.42,
        "cost": 31250.00
      }
    ],
    "totals": {
      "employeeFte": 4.21,
      "contractorFte": 0.50,
      "totalFte": 4.71,
      "employeeCost": 312500.00,
      "contractorCost": 67500.00,
      "aiAgentCost": 1200.00,
      "totalCost": 381200.00
    },
    "note": "Effort data from PMS-synced effort tracking (actual work, not forecast allocations)"
  }
}

If the caller lacks the cost permission, cost and *Cost fields are omitted and a costInfo field explains why.


Get team effort

GET /org/:orgId/effort/teams/:teamId

Returns each project the team contributed effort to, with FTE and (if permitted) cost. Sorted by FTE descending.

Query parameters

ParameterTypeDefaultDescription
startDatedate (YYYY-MM-DD)3 months ago, first of monthStart of the window.
endDatedate (YYYY-MM-DD)todayEnd of the window.

Example

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/effort/teams/clx_team_id" \
  -H "Authorization: Bearer private_..."

Example response

json
{
  "data": {
    "teamId": "clx_team_id",
    "teamName": "Payments",
    "dateRange": { "startDate": "2026-02-01", "endDate": "2026-05-14" },
    "projects": [
      { "projectName": "Billing V2", "fte": 4.21, "cost": 312500.00 },
      { "projectName": "Payments Maintenance", "fte": 1.80, "cost": 134000.00 }
    ],
    "totals": {
      "totalFte": 6.01,
      "totalCost": 446500.00
    },
    "note": "Effort data from PMS-synced effort tracking (actual work, not forecast allocations)"
  }
}

Get unattributed effort

GET /org/:orgId/effort/unattributed

Returns effort that did not get linked to a Flowstate project. Use this to find orphan tickets and gaps in your project mapping. The same data drives the ticket review queue in the UI.

Query parameters

ParameterTypeDefaultDescription
startDatedate (YYYY-MM-DD)3 months ago, first of monthStart of the window.
endDatedate (YYYY-MM-DD)todayEnd of the window.

Example response

json
{
  "data": {
    "dateRange": { "startDate": "2026-02-01", "endDate": "2026-05-14" },
    "totalFte": 1.45,
    "totalCost": 108000.00,
    "byPmsSystem": [
      { "system": "azure_devops", "ticketCount": 38, "fte": 1.10, "cost": 82000.00 },
      { "system": "linear", "ticketCount": 12, "fte": 0.35, "cost": 26000.00 }
    ],
    "note": "Effort with no Flowstate project mapping. Resolve by linking the source ticket or adjusting your PMS sync rules."
  }
}

Permissions summary

PermissionWhat it grants
effort.viewRead FTE-only effort data via these endpoints.
financials.view-summaryAdds aggregate cost fields to responses.
financials.view-detailedAdds per-resource cost fields to project effort responses.

If you have neither financial permission, cost fields are stripped silently. The costInfo note in the response tells you why.

Where to go next

  • Effort tracking — the conceptual model, including approval workflows.
  • Assignments — the planned allocations these actuals get compared against.
  • Variance Tracking — how variance between effort and allocation rolls up into financial review.

Flowstate Documentation