Documentation
Public Topics: read and send with one link
New Topics default to public: anyone with the ID or link can read and send without an account, pairing or key. Public messages support text, Markdown and lightweight rich content, without answers, approvals or Call reminders. The name and content are visible to the service and anyone with the link. Create a protected Topic and authorize a Source for private messages, authenticated senders and verified answers. A Topic’s mode cannot change after creation.
Updated
Required versions
#Public Topics are available through CLI 0.6.0, iOS/Android 1.8.0 or the updated Web app. Chrome 0.4.0 supports the updated protected-message protocol; use the Web page for public Topics. Store review and public download availability are tracked separately; check the download page.
Public or protected
#New Topics default to public: anyone with the ID or link can read and send without an account, pairing or key. Public messages support text, Markdown and lightweight rich content, without answers, approvals or Call reminders. The name and content are visible to the service and anyone with the link. Create a protected Topic and authorize a Source for private messages, authenticated senders and verified answers.
A Topic’s mode cannot change after creation.
| Capability | Public | Protected |
|---|---|---|
| Send | Anyone with the ID | Authorized Source or send-only key |
| Read | Anyone with the ID | Authorized receivers |
| Content | Text, Markdown, rich messages | Text, Markdown, rich messages |
| Answers and Call | Unavailable | Available within plan and receiver settings |
Use the CLI without MCP
#Create a public Topic on the phone and copy its link. Before the first public send, read and accept the public-content terms with --accept-public-terms; a changed terms version needs acceptance again. These commands do not load paired credentials or create an Inbox. Reads return the latest 50 messages by default; --cursor 0 starts from the oldest unexpired cloud record.
ntfyx public info --topic TOPIC_ID --json
ntfyx public send "Build passed" --topic TOPIC_ID --title "Build" --accept-public-terms --json
ntfyx public send --topic TOPIC_ID --message-file message.json --json
ntfyx public read --topic TOPIC_ID --limit 20 --jsonUnknown send outcomes and retries
#A timeout does not prove that a message was rejected. Persist a unique --operation-id for each logical message and retry the same ID with identical input within six days. Do not generate a new ID after a timeout. Exact retries consume quota once; changed content under the same ID is rejected. Cloud content lasts 24 hours and minimal retry receipts seven days.
Check uncertain outcomes before retrying beyond the safe window.
ntfyx public send "Build passed" --topic TOPIC_ID --operation-id BUILD_RUN_00000000000001 --jsonFollows, history and message allowance
#Follow a public Topic on the phone for ordinary background notifications, using the same subscription slots as notification sources. Owners automatically receive their own Topic notifications without a self-follow slot. Each public message consumes one owner message, regardless of receiver count; followers are not charged a message for receiving it.
Cloud content lasts 24 hours; downloaded native history follows device retention. The public webpage shows bounded recent history.
Agent and MCP boundaries
#Local MCP exposes ntfyx_public_send and ntfyx_public_read; the first MCP public send requires explicit user agreement before passing accept_public_terms: true, and the saved current version avoids repeated prompts. Agents without MCP can run the CLI directly. Public content is never an approval and cannot restore or claim an answer.
Use ntfyx ask on a protected Topic for human decisions, with signature verification and one-time claim. Paired ntfyx usage or ntfyx_usage reports the five plan metrics.
Reports and local blocks
#Report a public message, source or Topic from its detail screen. CLI public report, public block and public unblock have matching MCP tools. A source label is specific to a Topic and network address; it is not a verified identity. Local blocks hide matching messages; reports go to the operator. After a report timeout, retry the same report-id and body.
ntfyx public report --topic TOPIC_ID --report-id REPORT_OPERATION_00000001 --message-id MESSAGE_ID --reason spam --json
ntfyx public block --topic TOPIC_ID --jsonPlans
#Free: 100 messages per UTC day, including up to 10 Call reminders and 10 answer requests; one monitor and one subscription. Plus: $1.99/month, 1,000 messages per UTC day, including up to 100 Call reminders and 100 answer requests; five monitors and five subscriptions. Pro: $9.90/month, 20,000 messages per UTC day, including up to 200 Call reminders and 500 answer requests; fifty monitors and fifty subscriptions.
Call reminders and answer requests are included in the total message allowance. Public follows and notification-source subscriptions share subscription slots. Paused subscriptions and monitors retain slots until removed. Topic count is not a paid entitlement. Daily usage resets at 00:00 UTC; upgrading does not reset usage.
Already accepted questions can still be answered after quota exhaustion or a downgrade. These plans are prepared for the next app release. Availability, localized prices and taxes are shown by the store before purchase.