# Get member push notification tokens

`GET /api/members/{memberID}/push-notification-token`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`), Consumer (`CONSUMER`) (any one of these products, not all)
- **Features:** Online Bookings (`ONLINEBOOK`), Online Joining (`ONLINEJOIN`), Front of House Generic Access (`FOHGENERIC`) (any one of these features, not all)

HTML version: [Get member push notification tokens](https://support.gladstonesoftware.cloud/reference/members/get-member-push-notification-tokens)

## Overview

Lists every device registration a member currently holds for push notifications. A member can be registered on several devices and in several apps at once, so this typically returns more than one entry.

The one thing to plan for: a member with **no** registrations returns **`404`**, not `200` with an empty array. Checking "is this member registered for push?" therefore means treating `404` as a normal negative answer rather than an error. The same `404` shape is used for a member id that does not exist, with a different message.

Use it before sending a notification, or to reconcile what your app thinks it registered against what the platform actually holds. To remove a registration, see [Delete member push notification token](delete-member-push-notification-token.md) — and note that the delete endpoint matches on `appBundleId`, so keep the value you see here.

## Endpoint

`GET {base_url}/api/members/{memberID}/push-notification-token`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `memberID` | integer (int32) | Yes | The member whose registrations you want. The member must exist, or you get `404` with a different message from the no-registrations case. With a member-scoped token this must be the token's own member; linked members are not accepted. |

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/members/{memberID}/push-notification-token' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `tokens` | array of object | Every device registration held for the member, one entry per app bundle plus at most one entry with no bundle. Never empty on a `200` — a member with none gives `404` instead. No ordering is guaranteed. |
| `tokens[].id` | integer (int32) | The registration's own id. Informational only: the delete endpoint identifies a registration by member and `appBundleId`, not by this id. |
| `tokens[].memberID` | integer (int32) | The member the registration belongs to. Always the member you asked for. |
| `tokens[].pushToken` | string | The device token issued by the push provider, stored verbatim. This is the value you send to APNs or FCM. Device tokens are rotated by the operating system, so a value here can be stale — a send failure is the only way you find out, and the platform does not prune them for you. |
| `tokens[].appBundleId` | string | The app the registration belongs to, stored lower-cased. `null` for a registration made without a bundle id — the single-app case. Pass this exact value to [Delete member push notification token](delete-member-push-notification-token.md); calling that endpoint without a bundle id will not match a registration that has one. |

## Sample response

```json title="200 OK"
{
  "tokens": [
    {
      "id": 12345,
      "memberID": 12345,
      "pushToken": "string",
      "appBundleId": "string"
    }
  ]
}
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `403` | Forbidden | The token belongs to a different member. Linked members are not accepted here. The body is `The given member ID of {memberID} does not belong to the logged in member`. |
| `404` | Not found | `memberID` does not exist. The body is `The member does not exist.` |
| `404` | Not found | The member exists but has no device registrations at all. The body is `The member does not have any push notification device tokens.` This is the expected answer for most members and should not be treated as a failure. |
| `500` | Internal server error | An unexpected server-side failure while reading the registrations. |
