---
title: "Register this device for push notifications"
method: POST
path: "/v1/push-tokens"
tags: ["Push"]
---

# Register this device for push notifications

`POST /v1/push-tokens`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/push-tokens`
- Auth: `bearer` (a scheme the document does not define)

Bind the Expo push token of the calling device to the authenticated user. Idempotent on the token: re-registering refreshes `lastSeenAt` and re-binds it to the caller, so a phone changing hands never keeps notifying its previous owner's account.

## Request body

- RegisterPushTokenDto
  - `token` string, required: Expo push token of this device, as returned by expo-notifications' getExpoPushTokenAsync. Registering the same token again refreshes its lastSeenAt and re-binds it to the calling user.
  - `platform` 'ios' | 'android', required: OS of the device holding the token.

## Response `201`

Device registered

- PushTokenDto
  - `id` string, uuid, required: Entity UUID
  - `createdAt` string, date-time, required: Creation date (ISO 8601)
  - `updatedAt` string, date-time, required: Last update date (ISO 8601)
  - `token` string, required: The registered Expo push token.
  - `platform` 'ios' | 'android', required: OS of the device holding the token.

## Other responses

- `403`: Session-authenticated user required

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
