Change a task
const url = 'https://api.threadkite.app/v1/tasks/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"title":"example","note":"example","dueAt":"2026-04-15T12:00:00Z","dueDate":"2026-04-15","assigneeUserId":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.threadkite.app/v1/tasks/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "title": "example", "note": "example", "dueAt": "2026-04-15T12:00:00Z", "dueDate": "2026-04-15", "assigneeUserId": "example" }'A new time or person is reminded afresh.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
A new due time
A new due day (all day)
Give it to someone else (a Full seat)
Example generated
{ "title": "example", "note": "example", "dueAt": "2026-04-15T12:00:00Z", "dueDate": "2026-04-15", "assigneeUserId": "example"}Responses
Section titled “Responses”object
The thread’s inbox
object
When it is due; for an all-day task, 9am on its day (when it is reminded)
The time zone its day belongs to
Against today, in your time zone
object
Their picture; null to show their initials
object
object
You can change, complete and delete it
Example
{ "contact": { "name": "Sarah Turner" }, "title": "Follow up with Sarah", "timeZone": "Europe/London", "dueState": "overdue", "dueLabel": "Tomorrow, 9am", "assignee": { "id": "usr_8f2c", "name": "James Patel", "avatarUrl": "https://api.threadkite.app/avatars/0b7c3a52-5d9e-4f3a-9a51-2f1e8c6d4b10.jpg" }, "completedBy": { "id": "usr_8f2c", "name": "James Patel" }, "createdBy": { "id": "usr_8f2c", "name": "James Patel" }, "origin": "person"}object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Missing or invalid API key
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}The organisation is on the Free plan (code upgrade_required)
object
Stable machine-readable reason
The feature that needs Pro
Where to upgrade or pay, in the web app
Example
{ "statusCode": 402, "code": "upgrade_required", "message": "Connections are part of Pro. Upgrade to connect texts, calls and more.", "feature": "extraSeats", "upgradePath": "/settings/billing"}The key does not have the scope (or the person the permission)
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Rate limit reached
object
Stable machine-readable reason
Seconds until another request will be accepted
Example
{ "statusCode": 429, "code": "rate_limited", "message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.", "retryAfter": 12}