/api/v1/assets/{record}/assignments/location
Assign an asset to a location
Assign an asset to a location.
Last updated
Request
PUT /api/v1/assets/{record}/assignments/location
Requires assets:assignments. 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, or as multipart/form-data when uploading attachments. 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.
Query parameters
This endpoint does not use query parameters.
Request body
| Field | Type | Usage |
|---|---|---|
event_date |
string | Optional. ISO 8601 timestamp with seconds and an explicit offset, such as 2026-09-01T10:30:00-07:00. Defaults to now. |
description |
string or null | Optional. Plain text, up to 10,000 characters. |
location_id |
integer | Required. Location in this organization. |
sublocation_id |
integer or null | Optional. Space belonging to location_id. |
date_due |
string or null | Optional. YYYY-MM-DD. Omitting it clears a previous due date. |
attachments[] |
file array | Optional. Up to 10 files, each up to 10 MB: PNG, JPG, PDF, Word (.doc, .docx) or Excel (.xls, .xlsx). Requires a multipart/form-data body. |
Fetch available values before choosing IDs. IDs and required fields vary by organization.
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 PUT "https://my.assetcenter.app/api/v1/assets/123/assignments/location" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data '{"location_id":18}'
To upload files, send multipart/form-data instead of JSON. Let curl set the Content-Type header, and send booleans as 1 or 0.
curl --globoff --request PUT "https://my.assetcenter.app/api/v1/assets/123/assignments/location" \
--header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--form "location_id=18" \
--form "attachments[]=@inspection.jpg" \
--form "attachments[]=@report.pdf"
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": [
901
],
"subscription_event_ids": [],
"todo": null,
"tracker_disconnect_pending": false,
"state": {
"status": "deployed",
"person_id": null,
"location_id": 18,
"sublocation_id": null,
"is_in_storage": false,
"person_loan_due": null,
"location_loan_due": null,
"condition_id": null,
"decommission_event_type_id": null
},
"attachments_count": 0,
"comments_count": 0
}
}
Behavior and constraints
State changes reject future timestamps (422) and dates preceding newer relevant state changes (409). Omit event_date to use now. Equivalent assignments do not add history. The sublocation must belong to the selected location. Inactive locations remain assignable.
Attachments are saved on the assignment event, and attachments_count in the response confirms how many were added. Files are stored privately and count toward your plan’s storage; a request that would exceed it returns 422 with a plan error and changes nothing. If any file fails to save, the whole action is rolled back. In a multipart body, leave out a field rather than sending null. An Idempotency-Key retry must resend the same files; a different file is a different request and returns 409. Comments are not supported on this action. Re-sending the current location with attachments is the exception to equivalent assignments not adding history: it records a new assignment event to hold the 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.