Plan a task onto the board
POST
/v1/daily-plan/entriesPins a task (current version) onto one section of the credential user's board for a date — mirroring the in-app add: only tasks OWNED by the credential's user and not archived can be planned; a parent task brings its subtasks along; a task already on that section answers 400 `validation_failed`. Supports the optional `Idempotency-Key` header.
Required scopes
tasks:write
Availability
All plans
Quota cost
1 API call
Idempotency
Optional Idempotency-Key
Request
Request body
| Field | Type | Description |
|---|---|---|
daterequired | string (date) | Board date as YYYY-MM-DD (UTC day). |
task_idrequired | string | Task short id, e.g. `T-123` (a bare `123` is also accepted on input).e.g. T-123 |
sectionrequired | "TODO" | "PROGRESS" | Daily-board section: `TODO` = the plan list, `PROGRESS` = the in-progress list. |
▸ ▾ Raw request schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Board date as YYYY-MM-DD (UTC day)."
},
"task_id": {
"type": "string",
"pattern": "^(?:T-)?[0-9]{1,12}$",
"description": "Task short id, e.g. `T-123` (a bare `123` is also accepted on input).",
"example": "T-123"
},
"section": {
"$ref": "#/components/schemas/DailySection"
}
},
"required": [
"date",
"task_id",
"section"
],
"description": "Which task, which date, which section."
}Response 201
The created board entry.
Fields
| Field | Type | Description |
|---|---|---|
idrequired | string | Board-entry id. NOTE: moving an entry between sections re-creates it (mirroring the in-app move), so the id CHANGES on move. |
sectionrequired | "TODO" | "PROGRESS" | Daily-board section: `TODO` = the plan list, `PROGRESS` = the in-progress list. |
task_idrequired | string | The planned task's short id.e.g. T-123 |
titlerequired | string | The planned task's current title. |
statusrequired | "TODO" | "IN_PROGRESS" | "IN_REVIEW" | "COMPLETED" | "BLOCKED" | Task workflow status. |
created_atrequired | string (date-time) | When the task was placed on this section, ISO-8601 UTC. Entries within a section are ordered by this (oldest first) — there is no free positional reorder. |
▸ ▾ Raw response schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Board-entry id. NOTE: moving an entry between sections re-creates it (mirroring the in-app move), so the id CHANGES on move."
},
"section": {
"$ref": "#/components/schemas/DailySection"
},
"task_id": {
"type": "string",
"description": "The planned task's short id.",
"example": "T-123"
},
"title": {
"type": "string",
"description": "The planned task's current title."
},
"status": {
"description": "The planned task's current workflow status.",
"$ref": "#/components/schemas/TaskStatus"
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "When the task was placed on this section, ISO-8601 UTC. Entries within a section are ordered by this (oldest first) — there is no free positional reorder."
}
},
"required": [
"id",
"section",
"task_id",
"title",
"status",
"created_at"
],
"additionalProperties": false,
"description": "One task pinned onto one daily-board section."
}Example request
curl
curl -X POST https://app.nowgetitdone.com/v1/daily-plan/entries \
-H "Authorization: Bearer gid_YOUR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-07-24",
"task_id": "T-123",
"section": "TODO"
}'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 - 409
idempotency_in_progressA request with this Idempotency-Key is still in progress - 422
idempotency_key_reusedIdempotency-Key reused with a different request - 429
rate_limitedRate limit exceeded - 429
quota_exhaustedPlan quota exhausted - 500
internal_errorInternal server error