List task history
GET
/v1/tasks/{task_id}/historyCursor-paginated, read-only version history of a task, newest first — every content change (in-app, MCP or this API) is an immutable version snapshot. This is the ONE endpoint where versions surface; their ids are accepted nowhere else.
Required scopes
tasks:read
Availability
All plans
Quota cost
1 API call
Idempotency
Not applicable
Request
Path parameters
| Field | Type | Description |
|---|---|---|
task_idrequired | string | Task short id, e.g. `T-123` (a bare `123` is also accepted on input).e.g. T-123 |
Query parameters
| Field | Type | Description |
|---|---|---|
limit | integer | Maximum number of items to return (1-100).e.g. 25 |
after | string | Opaque cursor from a previous page's `next_cursor` — omit for the first page. Reusing a cursor with DIFFERENT query parameters (e.g. a different `limit`) answers 400 `validation_failed`. |
Response 200
Page of version snapshots.
Fields
| Field | Type | Description |
|---|---|---|
datarequired | object[] | The current page of results. |
has_morerequired | boolean | True when another page exists after this one. |
next_cursorrequired | string | null | Opaque cursor for the next page (pass as `after`); null on the last page. |
▸ ▾ Raw response schema
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TaskHistoryEntry"
},
"description": "The current page of results."
},
"has_more": {
"type": "boolean",
"description": "True when another page exists after this one."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page (pass as `after`); null on the last page."
}
},
"required": [
"data",
"has_more",
"next_cursor"
],
"additionalProperties": false,
"description": "Cursor-envelope page of task versions, newest first."
}Example request
curl
curl -X GET https://app.nowgetitdone.com/v1/tasks/T-123/history \
-H "Authorization: Bearer gid_YOUR_API_KEY"Possible errors
- 400
validation_failedRequest validation failed - 401
missing_credentialsMissing credentials - 401
invalid_api_keyInvalid API key - 401
invalid_tokenInvalid access token - 403
insufficient_scopeInsufficient scope - 403
feature_not_enabledFeature not enabled on this plan - 404
resource_not_foundResource not found - 429
rate_limitedRate limit exceeded - 429
quota_exhaustedPlan quota exhausted - 500
internal_errorInternal server error