IDLE
Messages Stored
Last Published
Topic Length
Connection Config
Connection Log
Ready. Configure your topic and API key above.\n
Publish Encrypted Message

Post an encrypted message to your topic. Any existing message will be automatically deleted first — only 1 message is ever stored.

Publish Log
Waiting for publish action...
Read Latest Message

Fetch the current stored message. No API key required for reading — access key (topic) only. This is what the Android app calls.

Current Stored Message
No message fetched yet...
Read Log
Waiting for read action...
Topic Management
No config saved yet

Manage Log
Waiting for action...
API Reference

All endpoints operate under /api/{topic}

GET /api/{topic}
Returns: {"message":"<base64>","published_at":"<iso>"}
Auth: none (topic = access key)
Used by: Android app NtfyManager.kt
POST /api/{topic}
Body: raw base64 encrypted string (text/plain)
Header: X-API-Key: <your_api_key>
Action: deletes old → stores new (1 msg max)
Used by: Python server ntfy_manager.py
DELETE /api/{topic}
Header: X-API-Key: <your_api_key>
Action: deletes the stored message
Returns: {"deleted":true}
GET /api/{topic}/status
Returns: {"exists":true/false,"published_at":"..."}
Auth: none

NOTE: This site uses Cloudflare Workers + KV for storage.
Deploy the worker code alongside this HTML file.
Set KV namespace binding: SIYA_KV
Set Worker secret: API_KEY in environment vars.
Cloudflare Worker Code (functions/api/[[path]].js)