---
title: "Send a test push to the signed in person's devices (console server)"
method: POST
path: "/notifications:test"
tags: ["Members"]
---

# Send a test push to the signed in person's devices (console server)

`POST /notifications:test`

## Request

- Base URL: `https://api.customdomain.ai/v1`
- URL: `https://api.customdomain.ai/v1/notifications:test`
- Auth: API key in header `X-Provision-Secret`

Pushes one test notification to every browser in which `user_id` turned push notifications on. The console's server calls this behind its "Send a test notification" button, guarded by the provision secret exactly like `POST /members:email-changed`: the console has already checked the session and passes the signed in person's id, and the route takes no account, so a secret for one workspace cannot name another. The control plane holds the VAPID keys; without them it answers 503 `push_not_configured`. More than five tests a minute for one person answer 429 `rate_limited` with `Retry-After: 60`.

## Request body

- object
  - `user_id` string, required: The signed in person's id in the console.

## Response `200`

What the test did

- object
  - `devices` integer, required: Browsers the person has turned push on in.
  - `sent` integer, required: Push services that accepted the message.
  - `removed` integer, required: Devices found gone and removed.
  - `failed` integer, required: Pushes that did not go through.

## Other responses

- `400`: Error envelope: {code, title, details}.
- `401`: Error envelope: {code, title, details}.
- `429`: Error envelope: {code, title, details}.
- `503`: Error envelope: {code, title, details}.

---

[API](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api.md) · [All operations](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/revisions/34d89cb7a7cd?raw)
