/api/v1/assets/{record}
Update an asset
Update the supplied detail fields on an existing asset.
Last updated
Request
PATCH / PUT /api/v1/assets/{record}
Requires assets:update. 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.
record is the numeric asset ID in your token’s organization.
Request body
| Field | Type | Usage |
|---|---|---|
category_id |
integer | Optional on update. Asset category ID from options. |
model |
string | Optional on update. Up to 255 characters; cannot be empty when supplied. |
asset_tag |
string or null | Optional. Up to 255 characters; unique within the organization. |
manufacturer |
string or null | Optional. Up to 255 characters. |
model_number |
string or null | Optional. Up to 255 characters. |
serial_number |
string or null | Optional. Up to 255 characters. |
manufacture_date |
string or null | Optional. YYYY-MM-DD. |
parent_id |
integer or null | Optional. Parent asset in this organization; null removes the component relationship. Cycles are rejected. |
parent_cost_rollup |
boolean | Optional. Including component costs requires a parent asset. |
custom_fields |
object | Optional when retaining the category; only supplied values change. Key values by field ID. Changing category requires all of its required fields. Discover them with creation options. |
custom_field_times |
object | Optional. Key HH:mm times by date-field ID; also supply the matching custom_fields date. |
Example
Set ASSETCENTER_API_TOKEN as described in the quick start. Replace example record and option IDs with values from your organization.
curl --request PATCH "https://my.assetcenter.app/api/v1/assets/123" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '{"model":"Field laptop — engineering"}'
Response
200 OK. Example response; IDs, values, and timestamps will differ in your organization.
{
"data": {
"id": 123,
"asset_tag": "LAP-042",
"manufacturer": "Lenovo",
"model": "Field laptop \u2014 engineering",
"model_number": null,
"serial_number": null,
"manufacture_date": null,
"parent_id": null,
"parent_cost_rollup": false,
"status": "available",
"category_id": 7,
"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,
"created_at": "2026-09-07T16:00:00.000000Z",
"updated_at": "2026-09-07T16:00:00.000000Z"
}
}
Behavior and constraints
PATCH and PUT both update only the supplied fields. Supply at least one writable field. Unknown fields, lifecycle status, assignments, and file uploads are rejected. These inventory updates have no idempotency replay protection.
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. 429 means a rate limit was reached. See error handling and rate limits.