---
title: "Register a native notification device"
method: PUT
path: "/v1/mobile/devices"
tags: ["Notifications"]
---

# Register a native notification device

`PUT /v1/mobile/devices`

## Request

- Base URL: `https://api.revdesk.com`
- URL: `https://api.revdesk.com/v1/mobile/devices`
- Auth: HTTP bearer

Registers or refreshes one authenticated user's native RevDesk installation for Expo push delivery. The installation is bound to the OAuth actor and active organization; repeated calls are idempotent.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `installation_id` string, uuid, required
  - `expo_push_token` string, required
  - `platform` 'ios' | 'android', required
  - `environment` 'development' | 'preview' | 'production', required
  - `app_version` string, required

## Response `200`

Success

- object
  - `data` object, required
    - `installation_id` string, uuid, required
    - `platform` string, required
    - `environment` string, required
    - `app_version` string, required
    - `last_registered_at` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict (incl. idempotency conflicts)
- `429`: Rate limited

---

[API](https://skmtc.dev/revdesk/apis/revdesk-v1-api.md) · [All operations](https://skmtc.dev/revdesk/apis/revdesk-v1-api/llms.txt) · [OpenAPI document](https://skmtc.dev/revdesk/apis/revdesk-v1-api/revisions/fcbd43530a48?raw)
