Appearance
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
| Concept | Source | Endpoint family |
|---|---|---|
| Allocation | Forecast — what you planned | /assignments |
| Effort | Actual — 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
| Method | Path | Description |
|---|---|---|
GET | /org/:orgId/effort/projects/:projectId | Per-resource effort breakdown for a project |
GET | /org/:orgId/effort/teams/:teamId | Per-project effort breakdown for a team |
GET | /org/:orgId/effort/unattributed | Effort not linked to any Flowstate project |
Get project effort
GET /org/:orgId/effort/projects/:projectIdReturns each resource (employee, contractor, AI agent) that contributed effort to the project, with FTE-equivalent and (if permitted) cost.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startDate | date (YYYY-MM-DD) | 3 months ago, first of month | Start of the window. |
endDate | date (YYYY-MM-DD) | today | End 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/:teamIdReturns each project the team contributed effort to, with FTE and (if permitted) cost. Sorted by FTE descending.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startDate | date (YYYY-MM-DD) | 3 months ago, first of month | Start of the window. |
endDate | date (YYYY-MM-DD) | today | End 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/unattributedReturns 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
| Parameter | Type | Default | Description |
|---|---|---|---|
startDate | date (YYYY-MM-DD) | 3 months ago, first of month | Start of the window. |
endDate | date (YYYY-MM-DD) | today | End 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
| Permission | What it grants |
|---|---|
effort.view | Read FTE-only effort data via these endpoints. |
financials.view-summary | Adds aggregate cost fields to responses. |
financials.view-detailed | Adds 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.