Bulk create or update assets
POST
/assets/bulk
const url = 'https://safe-api.safetyradar.com/v2/assets/bulk';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"assets":[{"id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","name":"example","description":"example","address1":"example","address2":"example","city":"example","state":"example","zip":"example","latitude":1,"longitude":1,"status":"active","type":"equipment","parentId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","externalId":"example","createdAt":"example","updatedAt":"example","deletedAt":"example","equipmentTypeId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","tagIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"externalParentId":"example"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://safe-api.safetyradar.com/v2/assets/bulk \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "assets": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "address1": "example", "address2": "example", "city": "example", "state": "example", "zip": "example", "latitude": 1, "longitude": 1, "status": "active", "type": "equipment", "parentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "externalId": "example", "createdAt": "example", "updatedAt": "example", "deletedAt": "example", "equipmentTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "tagIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "externalParentId": "example" } ] }'Create or update multiple assets in a single request. Assets are upserted based on externalId. Maximum 1000 assets per request. Equipment assets require equipmentTypeId.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
assets
required
Array<object>
object
id
string format: uuid
name
required
string
description
string
address1
string
address2
string
city
string
state
string
zip
string
latitude
number
longitude
number
status
string
type
Asset type. If omitted on update, preserves existing type.
string
parentId
string format: uuid
externalId
required
External identifier (required for bulk upsert)
string
createdAt
string
updatedAt
string
deletedAt
string
equipmentTypeId
string format: uuid
tagIds
Array<string>
externalParentId
External ID of the parent asset. If provided, resolves to parentId. Takes precedence over parentId if both are specified.
string
Responses
Section titled “Responses”Bulk operation completed
Media typeapplication/json
object
data
required
object
results
required
Array<object>
object
externalId
required
string
success
required
boolean
created
boolean
id
string format: uuid
error
string
summary
required
object
total
required
number
created
required
number
updated
required
number
failed
required
number
Examplegenerated
{ "data": { "results": [ { "externalId": "example", "success": true, "created": true, "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "error": "example" } ], "summary": { "total": 1, "created": 1, "updated": 1, "failed": 1 } }}Bad request - equipment assets require equipmentTypeId
Media typeapplication/json
object
code
required
string
message
required
string
details
object
key
additional properties
Examplegenerated
{ "code": "example", "message": "example", "details": { "additionalProperty": "example" }}Unauthorized
Media typeapplication/json
object
code
required
string
message
required
string
details
object
key
additional properties
Examplegenerated
{ "code": "example", "message": "example", "details": { "additionalProperty": "example" }}
