---
title: "Fetch the dispatcher's VAPID application-server public key"
method: GET
path: "/api/v1/push/vapid-public-key"
tags: ["Push"]
---

# Fetch the dispatcher's VAPID application-server public key

`GET /api/v1/push/vapid-public-key`

## Request

- Base URL: `https://api.uptimemonitoring.com`
- URL: `https://api.uptimemonitoring.com/api/v1/push/vapid-public-key`
- Auth: HTTP bearer

Returns the base64url-encoded application-server public key the
SPA must pass to `PushManager.subscribe({applicationServerKey})`
before posting the resulting subscription to
`POST /api/v1/push/subscribe`. The key is the public half of a
VAPID keypair generated on the dispatcher's first boot and
persisted thereafter — not a secret, but auth-gated so the SPA
already has a token by the time it asks. Returns 503 in the
defensive case where the dispatcher router is up but the
keypair has not been initialised yet (not reachable on the
current boot order).

## Response `200`

VAPID public key.

- object
  - `public_key` string, required: Base64url-encoded (unpadded) uncompressed P-256 public key, ~87 characters, alphabet `[-_A-Za-z0-9]`. Pass this directly as `applicationServerKey` to `PushManager.subscribe`.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: Account is currently suspended. On `POST /api/v1/monitors`, and on a `PUT /api/v1/monitors/{monitorID}` that changes `url` or `type` (issue #335), this can also be returned by the per-account port-scan heuristic when the triggering request crossed the port-fan threshold inside the sliding window (10 minutes by default; `SCAN_WINDOW`). A host-fan trip does NOT suspend the account — see the 429 response instead.
- `429`: Per-account dispatcher rate limit exceeded (200 requests/minute). The `Retry-After` header gives the integer seconds until at least one token has refilled. The `X-RateLimit-*` trio reflects the bucket whose rejection produced this response — usually the global 200/min cap; on `POST /api/v1/monitors` a 429 may instead reflect the per-route 20/min creation limit.
- `503`: VAPID keypair not yet initialised.

---

[API](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api.md) · [All operations](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/revisions/ddcb2a8bc70f?raw)
