Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vapid Web Push Notifications

Schemesvapid://
Cargo featureservice-vapid
Servicehttps://datatracker.ietf.org/doc/html/draft-thomson-webpush-vapid
Body formatstext (first is the default)
Attachmentsno
Title lengthno title (merged into the body)
Body length4,000 characters
Body linesunlimited
Request throttlenone
Vendor URLs acceptedno

URL formats

{schema}://{subscriber}
{schema}://{subscriber}/{targets}

{schema} is one of vapid://.

URL tokens

TokenMeaningTypeRequiredDefaultNotes
{subscriber}API Keystringyessecret
{targets}Targetslistnoseparated by /

Query parameters

ParameterMeaningTypeDefaultNotes
fromAPI Keystringsets {subscriber}
keyfilePEM Private KeyFilestringsecret
modeModechoicechromeone of chrome, firefox, edge, opera, apple
subfileSubscripion Filestringsecret
toTargetslistsets {targets}
ttlttlint, 0 to 600

The common URL parameters (format, overflow, verify, redirect, cto, rto, retry, wait, store, tag, tz, user, password, port, optional, emojis) apply as well.

Examples

Rejected URLs:

vapid://
vapid://:@/
vapid://invalid-subscriber
vapid://user@example.com/user1?ttl=-4000

Notes

Vapid / Web Push (vapid://): Web Push messages signed with VAPID keys.

Messages are encrypted per subscription with RFC 8291 (aes128gcm: ephemeral ECDH P-256, HKDF-SHA256, AES-128-GCM) and authorised with an RFC 8292 VAPID ES256 JWT addressed to each endpoint’s origin.

The private key (?keyfile=, PEM) and the subscriptions (?subfile=, JSON) are read from local files or downloaded from http(s):// URLs. Without ?keyfile=, a disk-backed persistent store holds them: private_key.pem (generated on first use, with public_key.pem) and subscriptions.json in the URL’s store directory. Expired (404/410) endpoints are kept in the store (retired, 30 days) and skipped.

Differences with Apprise

  • Both files are re-read on every send.
  • Expired endpoints are never pruned from the subscription file (Apprise rewrites a writable one) and no starter file is written.