Send from anywhere
Trigger notifications from scripts, services, CI jobs, cron tasks or any tool that can make an HTTP request.
Send alerts from any script, service, or shell, then receive them on mobile, desktop, or in your terminal.
# publish a message to an open topic
$ curl https://pingd.dev/topics/alerts/messages \
-H 'Content-Type: application/json' \
-d '{"payload":{"body":"Deploy finished: v2.4.1"}}'
{ "id": "a3f9...", "topic": "alerts",
"time": "2026-04-26T21:00:31Z" }
# publish a message
$ pingd-cli messages publish --topic alerts --body "Deploy finished: v2.4.1"
# watch a topic live over SSE
$ pingd-cli messages watch --topic alerts
• [21:00:31] Deploy finished: v2.4.1
import requests
requests.post(
"https://pingd.dev/topics/alerts/messages",
json={"payload": {"body": "Deploy finished: v2.4.1"}},
)
Trigger notifications from scripts, services, CI jobs, cron tasks or any tool that can make an HTTP request.
Use public flags, share tokens and pattern-based permissions to decide who can read or publish each topic.
See a delivery row for every push to every device, with status, retry count and timestamps.
Deliver alerts to phones, desktops, browsers and terminals through APNS, Web Push and CLI-friendly flows.
Give external services an inbound URL and map incoming JSON into clean push messages.
Run one small service with Docker and SQLite, keeping messages, devices, tokens and history on your own infrastructure.