↑ ↓ to navigate · ↵ to open See all results
POST /api/v1/assets/{record}/acquisitions

Record an asset acquisition

Record how an asset was acquired and update its acquisition details.

Last updated

Request

POST /api/v1/assets/{record}/acquisitions

Requires assets:lifecycle. 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.
event_type_id integer Required. An eligible event type ID from this action’s options.
field_values object Optional unless the event type requires custom values. Keys are field IDs; values follow each field’s datatype and allowed option IDs.
acquired_from string or null Optional. Up to 255 characters.
price number or null Optional purchase price, 0–999,999,999.99. Defaults to cost when omitted.
cost number or null Optional amount paid at acquisition; down payment for financed acquisitions. 0–999,999,999.99.
salvage_value number or null Optional. 0–999,999,999.99.
finance_amount number or null Optional when enabled by the event type. 0–999,999,999.99.
payment number or null Optional when enabled by the event type. 0–999,999,999.99.
billing_frequency string or null Required with payment. monthly, Quarterly, or yearly; type must support payments.
number_of_payments integer or null Optional when supported. 1–1,000,000.
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.
comments[] string array Optional. Up to 20 comments, each plain text up to 10,000 characters. Works in JSON or multipart bodies.

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 / Bash
curl --request POST "https://my.assetcenter.app/api/v1/assets/123/acquisitions" \
  --header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --data '{"event_type_id":12,"acquired_from":"Example supplier","price":1200,"cost":1200}'

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 / Bash
curl --globoff --request POST "https://my.assetcenter.app/api/v1/assets/123/acquisitions" \
  --header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --form "event_type_id=12" \
  --form "price=1200" \
  --form "comments[]=Photos taken on site." \
  --form "attachments[]=@inspection.jpg" \
  --form "attachments[]=@report.pdf"

Response

201 Created. Illustrative response structure. Event arrays, to-do/space values, and current state depend on the action and the record.

JSON
{
  "data": {
    "asset_id": 123,
    "asset_event_ids": [
      901
    ],
    "subscription_event_ids": [],
    "todo": null,
    "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
    },
    "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. Use an acquisition event type. Required fields vary by type. A new acquisition can reactivate a decommissioned asset, subject to plan limits; the response can contain more than one event ID.

Attachments and comments are saved on the acquisition event (not the restore event that reacquiring a decommissioned asset also records), and attachments_count and comments_count in the response confirm 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, send object fields with bracketed keys (such as field_values[12]=Blue) and 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.

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.