---
title: "Create a device asset"
method: POST
path: "/api/v2/assets/devices"
tags: ["Assets"]
---

# Create a device asset

`POST /api/v2/assets/devices`

## Request

- Base URL: `https://console.jumpcloud.com`
- URL: `https://console.jumpcloud.com/api/v2/assets/devices`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/jumpcloud/apis/jumpcloud-console-api/docs/api/v2/assets/devices/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new device asset

## Request body

- JumpcloudHttpAssetsCreateAssetRequest: Request payload for creating a new asset of any type
  - `fields` object, required: Map of field label to raw JSON value for each field to set (not `FieldValue` objects). Formats match the API overview (dates, RFC3339 datetimes, `{"id"}` for references, etc.).

## Response `201`

Device asset created successfully

- JumpcloudHttpAssetsAsset: Generic asset representation with field values. Each `fields` value is a `FieldValue` (`editable` plus typed `value`); see the API overview for how `value` is encoded by field type.
  - `id` string, required: The unique identifier of the asset
  - `jcSystemId` string: JumpCloud system identifier for device assets, as a lowercase hex string.
  - `fields` object, required: Asset field values keyed by field label (`FieldValue` per key). Labels match `GET /assets/field-configurations`.

## Other responses

- `400`: Bad request - invalid data
- `401`: Unauthorized - authentication required
- `409`: Conflict - asset with unique field value already exists
- `default`: Generic error response

---

[API](https://skmtc.dev/jumpcloud/apis/jumpcloud-console-api.md) - [All operations](https://skmtc.dev/jumpcloud/apis/jumpcloud-console-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jumpcloud/apis/jumpcloud-console-api/revisions/f396d9271b46?raw)
