---
title: "Add or update a customer device"
method: PUT
path: "/api/v1/customers/{identifier}/devices"
tags: ["Track Customers"]
---

# Add or update a customer device

`PUT /api/v1/customers/{identifier}/devices`

Customers can have more than one device. Use this method to add iOS and Android devices to, or update devices for, a customer profile.

## Request body

- object — Define the device you want to add to the customer profile.
  - `device` DeviceObject, required — Device information common to the v1 and v2 APIs.
    - `id` string, required — The device token.
    - `last_used` integer — The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app.
    - `platform` 'ios' | 'android', required — The device/messaging platform.
    - `attributes` object — Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.
      - `device_os` string — The operating system, including the version, on the device.
      - `device_model` string — The model of the device a person uses.
      - `app_version` string — The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do.
      - `cio_sdk_version` string — The version of the Customer.io SDK in the app.
      - `_last_status` '' | 'bounced' | 'sent' | 'suppressed' — The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.
      - `device_locale` string — The device's [IETF language code](/journeys/channels/localization/getting-started/#supported-languages), such as `en-MX` or `es-ES`.
      - `push_enabled` 'true' | 'false' — If `"true"`, the device is opted-in and can receive push notifications.

## Response `200`

A successful request returns an empty object response.

## Other responses

- `400` — Invalid or malformed request.
- `401` — Unauthorized request. Make sure that you provided the right credentials.

---

[API](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference.md) · [All operations](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/customer/customer-io-journeys-api-reference/revisions/4b391af7cb06/schema)
