---
title: "Register or refresh this app installation for push"
method: PUT
path: "/api/push/installation"
tags: ["Push"]
---

# Register or refresh this app installation for push

`PUT /api/push/installation`

## Request

- Base URL: `https://api.hiyd.ai`
- URL: `https://api.hiyd.ai/api/push/installation`
- Auth: HTTP bearer

Upserts the installation (keyed by installation_id, which the app generates once). Reporting a token another installation holds moves it here. app_state=foreground also records that the user has the app open (used to hold back sync nudges).

## Request body

- object
  - `installation_id` string, required
  - `fcm_token` string, nullable: null = no token yet; a token already stored for this installation is kept
  - `platform` 'ios' | 'android', required
  - `firebase_project` string, nullable
  - `app_version` string, nullable
  - `locale` string, nullable
  - `timezone` string, nullable: IANA zone, stored under its canonical name; an unknown zone is stored as null
  - `authorization_status` 'authorized' | 'provisional' | 'denied' | 'not_determined' | 'ephemeral' | 'unknown'
  - `capabilities` string[]
  - `app_state` 'foreground' | 'background'

## Response `200`

The stored installation, the user's notification preferences and the server clock

---

[API](https://skmtc.dev/hiyd/apis/hiyd-backend-api.md) - [All operations](https://skmtc.dev/hiyd/apis/hiyd-backend-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hiyd/apis/hiyd-backend-api/revisions/23598d347e1b?raw)
