Skip to content

Send notifications from your systems

Your pipelines and scripts can push events into DedNets: a curl one-liner (or any HTTP client) publishes to a topic in your account, and the event shows up instantly in the Console’s Notifications page. (Since v0.1.10.)

Notifications from your own systems authenticate with an API token, not your password:

  1. In the Console, go to Notifications and click Set up notifications.
  2. Name the token after what will use it (ci, backup-cron) and click Create token and continue.
  3. Copy the dak_… secret now - it is shown exactly once.

Tokens are scoped to notifications only: one leaked from a CI log cannot touch your hosts, services, or account. The wizard prepares the first publish command and waits for its event so you can verify the integration immediately. Create or revoke more tokens from the API tokens section on Notifications or Settings. The Notifications token view also shows every topic used by each token, its message count, and when it last published.

The wizard mints a notifications-only token. Tokens can also carry host, service, watchdog and read-only scopes for scripting and AI agents: see API tokens and scopes. (Since v0.4.1.)

Terminal window
curl -H "Authorization: Bearer dak_your_token_here" \
-d "nightly backup finished" \
https://console.dednets.com/api/v0/notify/backups

That’s it. The topic (backups here) is created the first time you publish to it - any name of letters, digits, - and _ works, and you can keep separate topics per system (ci, alerts, deploys, …).

Optional headers add metadata:

Terminal window
curl -H "Authorization: Bearer dak_your_token_here" \
-H "X-Title: Backup failed" \
-H "X-Priority: urgent" \
-H "X-Tags: prod,disk" \
-H "X-Click: https://console.dednets.com/hosts/" \
-d "backup job exited with status 1" \
https://console.dednets.com/api/v0/notify/backups
Header Meaning
X-Title headline shown above the message
X-Priority min, low, default, high, urgent (or 1-5)
X-Tags comma-separated labels
X-Click URL opened when the notification is clicked

Prefer JSON? Send Content-Type: application/json with {"message": "…", "title": "…", "priority": "high", "tags": ["prod"], "click": "https://…"} instead.

The publish API speaks the same wire format as the popular open-source ntfy project, so existing ntfy client libraries (Python, Go, JavaScript, and more) work as-is - point them at https://console.dednets.com/api/v0/notify/<topic> with your token as a bearer header.

Open Notifications in the Console sidebar. Events arrive live (no reload), newest at the bottom, filterable by topic. Each topic row on the same page controls its delivery settings and can be deleted when you no longer need it - deleting a topic also clears its history.

Events are kept for 30 days.

Besides the events you publish, the Console raises its own alerts into two built-in topics that show up on the Notifications page the first time they fire. Route them to your phone or Telegram exactly like your own topics. (Since v0.3.0.)

  • watchdogs - your watchdog monitors going missed or recovering.
  • services - a published service going down or recovering. A service is confirmed down after a few consecutive failed checks and recovers after it answers healthily again; a brand-new service that never came up, and a host that is merely offline, do not page you.

Both are ordinary topics downstream: set their Telegram delivery and priority threshold in the topic row like any other.

The notification center speaks the ntfy protocol, so the official ntfy apps work as your push client - no DedNets app needed. (Since v0.1.10.)

  1. Install ntfy (Android, iOS, or F-Droid).
  2. Open Notifications → Mobile apps in the Console and copy the address of the topic you want on your phone (the nt… string).
  3. In the app, add a subscription: tap Use another server, enter https://push.dednets.com as the server and paste the address as the topic name.

Every event published to that topic now pops up as a push notification, with the title, priority, and tap-to-open link you set at publish time.

Treat the address like a password: it is random and unguessable, and it is the only thing needed to read that topic. Deleting the topic in the Console revokes the address immediately.

iOS note: instant delivery on iPhone relies on a small wake-up ping relayed through ntfy.sh (Apple does not allow apps to keep their own connection open in the background). The ping carries only a random hash and a message id - never your message content, which the app fetches directly from DedNets.

Want the events on your phone or in a team chat? (Since v0.1.10.)

An administrator first opens Admin > Telegram, creates a bot with @BotFather, and saves its HTTP API token in Bot configuration. The Console validates and encrypts the token; it does not return the token after it is saved.

Only administrators can configure the shared bot. After that, every signed-in account can connect its own Telegram chat.

An administrator can also use Support notifications on that page to connect one separate Telegram chat for the support inbox. That chat receives an alert for every new support ticket and every message from users or administrators. Use Send test message there to verify the complete delivery path.

From the connected support chat you can answer a ticket without leaving Telegram: reply directly to any support notification (Telegram’s native reply) and your text posts straight into that ticket as a team answer, appearing in the Console conversation in real time - just like answering from the web UI. Answers are text only, and a closed ticket must be reopened in the Console first; anything the bot can’t route (a reply to the wrong message, an empty or non-text reply, or one over 4000 characters) gets a short note back. Only the connected support chat can answer this way. (Since v0.3.0.)

  1. Open Notifications > Telegram and click Connect Telegram.
  2. Telegram opens on the platform bot; press Start. That’s the whole handshake - the page updates to “Connected” by itself.

From then on, every event lands in that chat too. Per topic you can:

  • turn Telegram delivery off entirely (the toggle in the topic row), or
  • only forward important events: set the topic’s priority threshold to high and up or urgent only, and publish routine events at normal priority.

Send /stop to the bot (or click Disconnect in the Console) to unlink at any time.

  • Message up to 4096 characters; title up to 256.
  • Publishes are rate-limited per account (default 120/minute).
  • Up to 50 topics and 20 API tokens per account.