Open Push Relay

Public push notifications by topic

Open Push Relay API

Open Push Relay is a public Web Push relay. Devices subscribe to a topic ID from/subscribe. Any system can publish a notification to that topic with a title, message, and click URL. No login, token, or dashboard is required.

Base URL

https://push.submit.codes

Publish a notification

Send a JSON request to a topic. Every device subscribed to that topic receives the push.

POST /api/topic/{topicId}
Content-Type: application/json

{
  "title": "New paid order",
  "body": "Order #1042 was paid by Catalina R.",
  "clickUrl": "https://store.example.com/admin/orders/1042"
}

cURL

curl -X POST https://push.submit.codes/api/topic/store-demo \
  -H "Content-Type: application/json" \
  -d '{  "title": "New paid order",  "body": "Order #1042 was paid by Catalina R.",  "clickUrl": "https://store.example.com/admin/orders/1042"}'

Request fields

FieldRequiredDescription
titleYesNotification title.
bodyNoNotification body text.
clickUrlNoURL opened when the notification is tapped.
tagNoBrowser notification tag for replacement/grouping.

Alternative publish endpoint

POST /api/publish
Content-Type: application/json

{
  "id": "store-demo",
  "title": "New paid order",
  "body": "Order #1042 was paid",
  "clickUrl": "https://store.example.com/admin/orders/1042"
}

Device subscription endpoint

Browsers should use /subscribe. It registers the service worker, requests notification permission, creates a Push API subscription, and sends it to:

POST /api/subscribe
Content-Type: application/json

{
  "id": "store-demo",
  "subscription": PushSubscription
}

Unsubscribe endpoint

POST /api/unsubscribe
Content-Type: application/json

{
  "id": "store-demo",
  "endpoint": "https://push-service.example/subscription-id"
}

Response

{
  "ok": true,
  "id": "store-demo",
  "sent": 3,
  "failed": 0,
  "subscribers": 3,
  "payload": {
    "title": "New paid order",
    "body": "Order #1042 was paid by Catalina R.",
    "clickUrl": "https://store.example.com/admin/orders/1042",
    "tag": "topic:store-demo",
    "topic": "store-demo"
  }
}

Topic rules

Topic IDs are normalized to lowercase and can contain letters, numbers, dots, dashes, and underscores. Maximum length is 80 characters.

Security model

This API is intentionally open. There is no authentication. Treat topic IDs like public channels. Use unguessable topic IDs if you do not want random publishers.