---
title: "Register or refresh a mobile push token"
method: PUT
path: "/api/v3/mobile/push-tokens"
tags: ["Mobile Push Notifications"]
---

# Register or refresh a mobile push token

`PUT /api/v3/mobile/push-tokens`

## Request

- Base URL: `https://api.endless.health` (the document declares no server; this is the origin it was published from)
- URL: `https://api.endless.health/api/v3/mobile/push-tokens`
- Auth: none declared

Registers the device Expo push token for the signed-in user with eh-notifications. Re-registering the same token refreshes metadata; registering a token already owned by another user moves it.

## Request body

- MobilePushTokenRegisterRequest: Mobile app body for registering an Expo push token.
  - `expo_push_token` string, required
  - `platform` 'ios' | 'android', required: Mobile platform for an Expo push token.
  - `device_id` string, nullable
  - `app_version` string, nullable

## Response `200`

Successful Response

- PushTokenResponse: Registered push token metadata (token value omitted).
  - `id` integer, required
  - `user_id` integer, required
  - `platform` 'ios' | 'android', required: Mobile platform for an Expo push token.
  - `is_active` boolean, required
  - `device_id` string, nullable
  - `app_version` string, nullable

## Other responses

- `401`: No valid session
- `404`: Not found
- `422`: Invalid body or Expo push token
- `502`: Notifications service rejected the request
- `503`: Notifications service unavailable

---

[API](https://skmtc.dev/endless/apis/eh-core-v3-api-prod.md) - [All operations](https://skmtc.dev/endless/apis/eh-core-v3-api-prod/llms.txt) - [OpenAPI document](https://skmtc.dev/endless/apis/eh-core-v3-api-prod/revisions/9046a1eb2d0c?raw)
