Docs
Quickstart
1. Get a hook URL
Open the app and create a hook. You get a URL that looks like this:
https://in.zhooky.app/h/PUT-YOUR-KEY-HERE
The part after /h/ is the hook key. It is 32 characters, and it
is a bearer secret: anyone holding it can post to your hook, so treat it like a
password. Regenerating the key stops the old one working immediately.
2. Send it a request
Any POST, PUT or GET to that URL is accepted.
curl -X POST https://in.zhooky.app/h/PUT-YOUR-KEY-HERE \
-H 'content-type: application/json' \
-d '{"title":"Payment failed","message":"card declined"}'
The response is the id of the stored request:
{ "id": "01a0a4ab-0cb8-7659-81e4-d64ffee7d889" }
3. What happens next
The request is stored and every subscribed device is notified. The notification
carries the hook's handle — its channel-style name, written with a # — and a
one-line summary of what arrived:
#demo
POST · 52 B
The hook's colour and title are what the notification shows. Reading a title and a message out of the request body is not wired up yet — for now the body is kept whole and shown in the inbox, where you can read it in full.
4. Sub-paths
Anything after the key is recorded and kept, so several sources can share one hook and stay apart in the inbox:
curl -X POST https://in.zhooky.app/h/PUT-YOUR-KEY-HERE/stripe -d '{}'
curl -X POST https://in.zhooky.app/h/PUT-YOUR-KEY-HERE/github -d '{}'
The key never appears in the stored path — only /stripe and /github do.
5. Limits
- A request is deleted after 7 days.
- Up to 1,000 requests are kept per hook. Past that the oldest one goes — the hook keeps accepting and keeps notifying either way.
- A body may be up to 10 MB. Anything larger is rejected.
- Bodies over 64 KB are moved to object storage and streamed back on demand.