# August 24, 2026 

** August 24, 2026 Karbon API release adds endpoints for retrieving and updating a single estimate summary. **
---

## Get and Update a Single Estimate Summary

Two new endpoints work with a single estimate summary on a work item, addressed by its `EstimateSummaryKey`.

`GET /v3/WorkItems/{WorkItemKey}/EstimateSummaries/{EstimateSummaryKey}` returns one estimate summary, rather than the full list `GET /v3/EstimateSummaries/{WorkItemKey}` returns.

An `EstimateSummaryKey` starting with `0-` represents time recorded against a task with no estimate assigned, rather than an actual estimate — these can be retrieved but not updated. Assign an estimate to the task in Karbon first.

```http
GET /v3/WorkItems/4jgPTtcXxwC2/EstimateSummaries/160F79F6-E650-40C3-8BD9-F70C287B7476-0
```

```json
{
  "EstimateSummaryKey": "160F79F6-E650-40C3-8BD9-F70C287B7476-0",
  "UserKey": "RXq4mB32PXg",
  "RoleKey": "qTLmJpG85Ng",
  "RoleName": "Accountant",
  "TaskTypeKey": "3h5Tbh9GgLs7",
  "TaskTypeName": "Admin",
  "EstimateMinutes": 60,
  "HourlyRate": 150,
  "ActualMinutes": 45,
  "EstimateAmount": 150
}
```

`PATCH` on the same path updates the estimate. Only `EstimateMinutes`, `EstimateAmount` and `HourlyRate` can be patched, and each is optional — send only the fields you want to change.

```http
PATCH /v3/WorkItems/4jgPTtcXxwC2/EstimateSummaries/160F79F6-E650-40C3-8BD9-F70C287B7476-0
```

```json
{
  "EstimateAmount": 250
}
```

Whether an estimate is budgeted by time or by amount is a firm-level setting, so exactly one of `EstimateMinutes` and `EstimateAmount` applies to any given estimate — supplying both is rejected, and the one that doesn't apply can't be set. `EstimateMinutes` accepts 0 to 599,999,940, and `EstimateAmount` and `HourlyRate` each accept 0 to 99,999,999.

A successful update returns `204 No Content`.

**Changing `HourlyRate` can reissue the `EstimateSummaryKey`.** The response always includes an `OData-EntityId` HTTP header with the estimate summary's location after the update — use that URL for subsequent requests rather than the key you sent, since it may no longer resolve.

```http
odata-entityid: https://api.karbonhq.com/v3/WorkItems/4jgPTtcXxwC2/EstimateSummaries/98f400ba-888f-4f12-b59b-baefa7db99b3-0

```

An update is rejected with `422 Unprocessable Entity` if the work item is completed, the change is blocked by the firm's WIP lock date, rate plans aren't enabled for the firm, or the estimate can't hold the field supplied (for example, setting `HourlyRate` on a non-billable estimate).
