/api/v1/assets/{record}/todos/{todo}
Update an asset to-do
Change only the supplied fields on this to-do.
Last updated
Request
PATCH /api/v1/assets/{record}/todos/{todo}
Requires assets:todos. See token permissions. Every listed permission is required for this endpoint.
Send Authorization: Bearer YOUR_API_TOKEN and Accept: application/json. Send request bodies as JSON with Content-Type: application/json. This workflow write requires Idempotency-Key. Reuse the same key only when retrying the same action.
record is the numeric asset ID in your token’s organization. todo is the numeric to-do ID belonging to this record; obtain it from the to-do list.
Request body
| Field | Type | Usage |
|---|---|---|
name |
string | Required on creation; optional on PATCH, but cannot be empty. Up to 255 characters. |
notes |
string or null | Optional. Plain text, up to 10,000 characters. |
due_date |
string or null | Optional. YYYY-MM-DD. |
assigned_to |
integer or null | Optional. Organization user ID from the to-do options endpoint. A user is a login account; it is distinct from an inventory person. |
is_complete |
boolean | Optional. Set true to complete or false to reopen. |
Example
Set ASSETCENTER_API_TOKEN as described in the quick start. Replace example record and option IDs with values from your organization. Set IDEMPOTENCY_KEY to a new UUID for this action; keep it for retries.
curl --request PATCH "https://my.assetcenter.app/api/v1/assets/123/todos/77" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data '{"is_complete":true}'
Response
200 OK. Illustrative response structure. Event arrays, to-do/space values, and current state depend on the action and the record.
{
"data": {
"asset_id": 123,
"asset_event_ids": [],
"subscription_event_ids": [],
"todo": {
"id": 77,
"name": "Verify inventory",
"notes": null,
"due_date": null,
"assigned_to": null,
"created_by": 4,
"is_complete": true,
"created_at": "2026-09-07T16:00:00.000000Z",
"updated_at": "2026-09-07T16:00:00.000000Z"
},
"tracker_disconnect_pending": false,
"state": {
"status": "available",
"person_id": null,
"location_id": null,
"sublocation_id": null,
"is_in_storage": false,
"person_loan_due": null,
"location_loan_due": null,
"condition_id": null,
"decommission_event_type_id": null
}
}
}
Behavior and constraints
Supply at least one supported field. The child must belong to this record. To-do notes are treated as plain text on input and may be HTML in responses.
Errors
401 means the token is missing, expired, revoked, or not a customer API token. 403 means a required permission or administrator access is missing. 404 means the record or child record is unavailable in this organization. 422 identifies invalid or unsupported input; inspect the errors object when present. 409 indicates a conflicting state or concurrent change; inspect the message and refresh the record before deciding how to proceed. Reusing an idempotency key with a different method, path, or body also returns 409. 429 means a rate limit was reached. See error handling and rate limits.