Skip to content

Create a ABM provisioning request using device serial number
Stable

Request

⚠️ Apple devices only.

Creates an ABM provisioning request for a single device using its serial number supplied in a JSON request body, pre-assigning it to a blueprint and optionally a group, alias, and tags.

About Create ABM Provisioning Request (Serial Number)

This endpoint is the JSON-body alternative to the CSV upload path for seamless ABM provisioning. It accepts a SeamlessRequestBody containing the assigned_blueprint_id, an optional group_id, an optional alias, an optional tags array, and a seamless_info object with unique_ids (a single device identifier) and unique_id_type. This endpoint provisions exactly one device per request; for bulk provisioning of multiple devices, use POST /api/v2/seamless/upload. On success it returns a single SeamlessRequest record. This is the preferred method for programmatic or API-driven provisioning workflows where a device identifier is available at runtime rather than in a pre-prepared file.

Key Fields

assigned_blueprint_id (body, required) — UUID of the blueprint to assign to the device

group_id (body, optional) — UUID of the group to assign the device to

alias (body, optional) — Human-readable alias to assign to the device; omitting this field never clears an existing device alias

tags (body, optional) — Array of tag names to assign to the device (maximum 5); tag names are resolved to (or created as) tags for the tenant asynchronously

seamless_info.unique_ids (body) — A single device identifier (e.g., a serial number)

seamless_info.unique_id_type (body) — Integer type code identifying the identifier format

id (response) — SeamlessRequest UUID

assigned_blueprint_id (response) — Confirmed blueprint assignment

group_id (response) — Confirmed group assignment (nullable)

alias (response) — Confirmed alias assignment (nullable)

tags (response) — Confirmed tag names assignment (nullable)

Common Use Cases

Programmatically pre-assigning a specific device to a blueprint as part of an automated provisioning pipeline

Registering a known device serial number for zero-touch enrollment without preparing a CSV file

Integrating ABM provisioning into a device lifecycle management workflow driven by an external system

Best Practices

Ensure assigned_blueprint_id references a published blueprint version — assigning an unpublished blueprint will result in a device that cannot complete hands-free enrollment

This endpoint accepts exactly one device identifier per request; a comma-separated or otherwise multi-value unique_ids is rejected with a 400 — use POST /api/v2/seamless/upload with a CSV to provision multiple devices in a single call

For large-scale bulk provisioning, POST /api/v2/seamless/upload with a CSV may be more practical

Security
device_onboarding_apiKey
Bodyapplication/jsonrequired
assigned_blueprint_idstring, (uuid)
Example:"3e41fd18-d53d-4673-a10a-23089cbb6b73"
group_idstring, (uuid)
Example:"3e41fd18-d53d-4673-a10a-23089cbb6b73"
aliasstring or null
Example:"front-desk-ipad"
tagsArray of strings or null, <= 5 items
Example:
[ "warehouse-a", "kiosk" ]
seamless_infoobject(device_onboarding_SeamlessInfo)
cURL
curl -i -X POST \
  https://api.esper.io/_mock/openapi/v2/seamless \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "assigned_blueprint_id": "3e41fd18-d53d-4673-a10a-23089cbb6b73",
    "group_id": "3e41fd18-d53d-4673-a10a-23089cbb6b73",
    "alias": "front-desk-ipad",
    "tags": [
      "warehouse-a",
      "kiosk"
    ],
    "seamless_info": {
      "unique_ids": "3e41fd18-d53d-4673-a10a-23089cbb6b73",
      "unique_id_type": 2
    }
  }'

Responses

Seamless request successfully created.

Bodyapplication/json
codeinteger
messagestring
contentobject(device_onboarding_SeamlessRequest)
Response
{ "code": 0, "message": "string", "content": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "assigned_blueprint_id": "678876e6-5b0b-4680-9ed4-36c363853b1e", "group_id": "306db4e0-7449-4501-b76f-075576fe2d8f", "alias": "string", "tags": [], "unique_ids": "string", "unique_id_type": 0, "tenant_id": "string" } }