List assets
Lists assets with filters, sorting and offset pagination
Lists assets with filtering, sorting and offset pagination. Pass with_total=true to get the total count.
Harmony access key, sent as Authorization: AccessKey <your-key>. Create keys in Settings > Access Keys. The tenant is resolved from the key.
Minimum total RAM in GB (inclusive)
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Maximum total RAM in GB (inclusive)
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Minimum disk capacity in GB, taken as the largest of the device's disks (inclusive)
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Maximum disk capacity in GB, taken as the largest of the device's disks (inclusive)
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Minimum battery cycle count (inclusive)
Maximum battery cycle count (inclusive)
Filter by specific asset database IDs (UUIDs)
Filter by MDM device ID(s): the device identifier reported by the asset's MDM source
Search in asset name, model, family name, serial number or CPU type
Search in asset serial number
Filter by asset source
Filter by MDM enrolment. True returns only devices from a source-of-truth MDM, False everything else — manual and custom-script assets and enrichment-only sources such as Apple Business Manager. Omit for both. Derived from the provider classification, so a new MDM needs no caller change.
Filter by integration instance ID(s); OR-combined with 'source'
Filter by asset vendor (manufacturer)
Filter by asset model
Filter by asset family name
Filter by employee ID. Use 'N/A' for unassigned assets
Filter by assignment state. True returns only assets assigned to an employee, False only unassigned assets. Omit for both.
Filter by supplier/vendor from purchase details
Filter by OS version display from device
Filter by CPU type from device
Filter by location values. A bare value matches an asset's manual location or its formatted structured location (e.g., 'California, United States'). A prefix narrows the match: 'manual:' matches the manual location only, 'country:' the country name or ISO code, and 'effective:' the effective location — the manual value when set, the formatted one otherwise — which selects exactly the assets a warehouse location group counts.
Filter by the assigned employee's location. Matches the employee's text location or structured 'State, Country' format.
Filter by for-sale status
Filter assets whose last_seen date is before this datetime. Excludes assets with NULL last_seen.
JSON filter by custom field values. Structure: {config_id:field_id: [values]}
The maximum number of items to return (up to 10,000).
100The index of the first item to return. Default: 0 (the first item). Use with limit to get the next results.
0Whether to report the total number of matching assets. Counting them means visiting every match, which no page size can bound, so callers that only render the returned page — a type-ahead, say — can set this to false and get total_count as the size of that page instead.
truelast_seenPossible values: Qualified field ref (config_id:field_id) to sort by.
Field type hint for sort cast ('number' or 'text').
Sort direction options
ascPossible values: Include custom field config metadata
falseInclude each device's disks on the row. Off by default: the disks are a second query and a device reports several, so a page that does not read them should not pay for them. Limited to 1000 rows a page — see limit.
falseSuccessful Response
The total number of items available to return for this query.
Validation Error
GET /asset-management/api/v1/assets HTTP/1.1
Host: api.harmony.io
Authorization: YOUR_API_KEY
Accept: */*
{
"total_count": 1,
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"asset_id": "text",
"name": "text",
"serial_number": "text",
"manufacturer": "text",
"model": "text",
"family_name": "text",
"asset_type": "LAPTOP",
"status": "in_stock",
"mdm_status": "ACTIVE",
"retirement_sub_status": "auto_detected",
"retirement_notes": "text",
"ownership": "COMPANY_OWNED",
"for_sale": false,
"compliance": "COMPLIANT",
"source": "text",
"integration_id": "text",
"device_url": "https://example.com",
"last_seen": "2026-01-01T00:00:00.000Z",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z",
"employee_id": "text",
"employee_name": "text",
"employee_location": "text",
"former_assignee": "text",
"location": {
"city": "text",
"state": "text",
"country": "text",
"country_code": "text",
"region": "text",
"region_code": "text",
"region_type": "text",
"manual": "text",
"pinned": false
},
"purchase_number": "text",
"purchase_date": "2026-01-01",
"supplier": "text",
"warranty_end_date": "2026-01-01",
"warranty_type": "STANDARD",
"warranty_description": "text",
"sale_price": "text",
"sale_price_estimated": false,
"price": "text",
"manual_sale_price": "text",
"sale_price_mode": "POLICY_BASED",
"mdm_device_id": "text",
"os_type": "text",
"os_version_display": "text",
"enrollment_date": "2026-01-01T00:00:00.000Z",
"last_restart_time": "2026-01-01T00:00:00.000Z",
"cpu_type": "text",
"cpu_cores": 1,
"battery_cycles": 1,
"battery_health": "text",
"memory_total_gb": "text",
"storage_total_gb": "text",
"disks": [
{
"name": "text",
"identifier": "text",
"file_system": "text",
"total_capacity_gb": "text",
"available_capacity_gb": "text",
"is_encrypted": true,
"encryption_method": "FileVault"
}
],
"disk_encryption": "encrypted",
"estimated_price": "text",
"eol_date": "2026-01-01",
"days_until_eol": 1,
"edr_status": "active",
"edr_provider": "SENTINELONE",
"active_threats": 1,
"edr_last_scan_at": "2026-01-01T00:00:00.000Z",
"edr_agent_version": "text",
"edr_is_outdated": true,
"edr_url": "https://example.com",
"custom_fields": {
"ANY_ADDITIONAL_PROPERTY": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"custom_fields_with_config": {
"ANY_ADDITIONAL_PROPERTY": {
"ANY_ADDITIONAL_PROPERTY": {
"value": "text",
"label": "text",
"type": "number",
"required": false,
"options": [
"text"
]
}
}
}
}
]
}Last updated
Was this helpful?
