/api/v1/assets/{record}/timeline/{type}/{entry}
Update an asset timeline entry
Edit an event or to-do on an asset’s timeline, and add, rename, or remove its files and comments.
Last updated
Request
PATCH /api/v1/assets/{record}/timeline/{type}/{entry}
Requires assets:read and assets:timeline:update. For a todo entry, assets:todos is required as well. See token permissions.
Send Authorization: Bearer YOUR_API_TOKEN and Accept: application/json. Send request bodies as JSON with Content-Type: application/json, or as multipart/form-data when uploading attachments. This write requires Idempotency-Key. Reuse the same key only when retrying the same action.
Path parameters
-
recordinteger Required - The numeric asset ID in your token’s organization.
-
typestring Required asset_eventfor an event recorded on this asset, ortodofor one of its to-dos. This matches thetypein the timeline.-
entryinteger Required - The entry’s
event_idfrom the timeline, or the to-doid.
Query parameters
This endpoint does not use query parameters.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
version |
string | Yes | The 64-character version from the latest GET of this entry. |
| Editable keys | varies | No | Any key listed in the entry’s fields, such as event_date, description, event_type_id, cost, or for to-dos name, notes, due_date, assigned_to, and is_complete. Send only what you want to change. |
acquisition, warranty, billing, field_values |
object | No | Partial objects for nested keys, such as {"billing":{"license_count":12}} or {"field_values":{"104":"B-2001"}}. Unsent nested values are kept. |
attachments[] |
file array | No | Up to 10 new files, each up to 10 MB: PNG, JPG, PDF, Word or Excel. Requires multipart/form-data. |
comments[] |
string array | No | Up to 20 new plain-text comments, each up to 10,000 characters. |
renamed_attachments |
object array | No | Objects with an attachment id from this entry and a new name that keeps the original file extension. |
deleted_attachment_ids |
integer array | No | Attachment IDs from this entry to remove. An ID cannot also be renamed in the same request. |
Get the entry first: its fields list the keys you can write for that entry, and its version is required.
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. Set VERSION to the version from your latest GET.
curl --request PATCH "https://my.assetcenter.app/api/v1/assets/123/timeline/asset_event/901" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header "Content-Type: application/json" \
--data '{"version":"VERSION","description":"Updated by our integration."}'
To add files, rename or remove existing ones, use multipart/form-data:
curl --globoff --request PATCH "https://my.assetcenter.app/api/v1/assets/123/timeline/asset_event/901" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--form "version=$VERSION" \
--form "renamed_attachments[0][id]=3" \
--form "renamed_attachments[0][name]=invoice.pdf" \
--form "comments[]=Invoice attached." \
--form "attachments[]=@photo.jpg"
Response
200 OK. The counts confirm what this request added, renamed, and removed.
{
"data": {
"entry_id": 901,
"entry_deleted": false,
"attachments_count": 1,
"comments_count": 1,
"renamed_attachments_count": 1,
"deleted_attachments_count": 0
}
}
Behavior and constraints
Only the values you send change; everything else on the entry is kept, including nested details you leave out. event_date needs seconds and an explicit offset or Z, such as 2026-09-30T10:00:00-07:00; responses use UTC. Text is stored as plain text and escaped for display. Keys that are not in the entry’s fields, such as tenant_id or read-only values, return 422.
If anything changed the entry since your GET, version no longer matches and the request returns 409; get the entry again and reapply your change. Editing the most recent billing, acquisition, or warranty entry also updates the matching summary on the asset; editing an older billing entry leaves current terms unchanged. Changing the date or type of a status event recalculates the asset’s status; a change that would reactivate an asset beyond your plan’s asset limit returns 422 with a plan error.
New files are stored privately and count toward your plan’s storage; exceeding it returns 422 with a plan error and changes nothing. Removed files are deleted once the request succeeds. If any step fails, nothing is changed. An Idempotency-Key retry must resend the same body and files.
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.