Web3-Native Push Notifications

Push Notifications
Without the Party Poopers

Create apps, generate VAPID keys, and send push notifications — all with your wallet. No email signups. No credit cards. Just crypto-native simplicity.

See How It Works
Free
To Start
10K
Daily Pushes
Subscribers

Everything you need to push

No bloat. No complexity. Just push notifications that work.

Your Keys, Your Control

Each app gets unique VAPID keys. No shared infrastructure means no single point of failure.

Instant Setup

Connect wallet → Create app → Copy API key. Start sending notifications in under 60 seconds.

User & Channel Targeting

Tag subscriptions with userId or channelId to send targeted notifications to specific audiences.

Built-in Rate Limiting

Protect your app and our infrastructure with per-app rate limits. Upgrade for higher limits.

Simple REST API

Three endpoints: subscribe, send, done. Works with any language or framework.

Global Edge Network

Deployed on Vercel's edge network for low-latency notification delivery worldwide.

Three steps to push bliss

Copy, paste, push. It's really that simple.

1

Connect & Create

Connect your wallet and create an app to get your API key and VAPID keys.

2

Subscribe Users

Use the Web Push API to subscribe users and register their subscriptions.

3

Send Notifications

Call our API to send notifications to all users or target specific ones.

// 1. Get VAPID public key from your app
const response = await fetch('https://vapid.party/api/vapid/public-key', {
headers: { 'X-API-Key': 'YOUR_API_KEY' }
});
const { data: { publicKey } } = await response.json();
// 2. Subscribe user to push notifications
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicKey)
});
// 3. Send subscription to vapid.party
await fetch('https://vapid.party/api/subscribe', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: JSON.stringify({
endpoint: subscription.endpoint,
keys: {
p256dh: btoa(String.fromCharCode(...new Uint8Array(subscription.getKey('p256dh')))),
auth: btoa(String.fromCharCode(...new Uint8Array(subscription.getKey('auth'))))
},
userId: 'user_123', // Optional: for targeted notifications
channelId: 'announcements' // Optional: for channel-based targeting
})
});