Skip to content

Quickstart

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.

Any POST, PUT or GET to that URL is accepted.

Terminal window
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" }

The request is stored and every subscribed device is notified. The notification carries the hook’s own name 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.

Anything after the key is recorded and kept, so several sources can share one hook and stay apart in the inbox:

Terminal window
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.

  • Requests are kept for 7 days.
  • 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.