# notifi: push notifications to iPhone and Mac from one request

> One HTTP request to notifi.it, and a native push notification is on your
> iPhone, iPad or Mac. No account. Notification content is encrypted
> with your public key, so neither we nor Apple can read your notifications.

If you are a coding agent, read [llms.txt](https://notifi.it/llms.txt) instead:
it is the same product with the install steps, the key handover script, the full
parameter list and the hook recipes.

## When to use notifi

Reach for notifi when a program you control needs to interrupt a person who is
not watching a terminal:

- A long build, backup, migration or training run has finished, or failed.
- A CI job or deploy broke and someone should look now rather than at standup.
- A coding agent has finished a task, or is blocked waiting on a decision.
- A cron job, home server or monitoring script noticed something: a disk
  filling, a certificate expiring, a service that stopped answering.
- A webhook you already receive should reach a phone as well as a log.

It is the wrong tool for notifying anyone who has not handed you one of their
own send keys, for marketing, and for anything where a missed notification
causes harm: a key delivers only to the device that made it, and delivery is
best-effort.

## Start

1. Install the app: [iPhone and iPad](https://apps.apple.com/app/id1563961135)
   (iOS 17 or later) or [Mac](https://notifi.it/download/mac) (macOS 14 or
   later; also on the [Mac App Store](https://apps.apple.com/app/id1563961135?platform=mac)
   and as `brew install --cask notifi-it/tap/notifi`).
2. Allow notifications when the app asks.
3. Open the Keys tab, pick `Device`, press **Copy key**. It starts with `nk_`.
4. Send something:

```
curl -X POST https://notifi.it/send \
  -H "Authorization: Bearer $NOTIFI_KEY" \
  -d "title=Hello from notifi" \
  -d "message=Your first notification." \
  -d "link=https://notifi.it/docs" \
  -d "image=https://notifi.it/anaglyph-bell.png"
```

`202` with `{"ok":true}` means the server took it.

## The API

One endpoint: `GET` or `POST https://notifi.it/send`, JSON or form-encoded.
Authenticate with `Authorization: Bearer nk_yourkey`, or pass `key` as a
parameter.

- `key`: required unless you send it as a bearer token. Picks the device that gets the notification.
- `title`: required, 1 to 200 characters.
- `message`: the body, Markdown, up to 16,000 characters.
- `link`: a link to a website or internal app, up to 2,048 characters.
- `image`: URL of an image shown with the notification, up to 2,048 characters.
- `occurred_at`: unix milliseconds; changes the timestamp shown in the app.
- `is_critical`: breaks through Focus, if the key allows it.

The full reference is at [notifi.it/docs](https://notifi.it/docs), machine-readable
at [notifi.it/openapi.json](https://notifi.it/openapi.json).

## Why not just use ...

- Quicker to set up than an **SMTP relay**
- Your important notifications in one place, not your **email inbox**
- Lighter than running **Slack**
- No bot to register, unlike **Telegram**
- Richer formatting than **SMS** allows
- Encrypted, unlike **Ntfy**
- Free, where **Pushover** charges

## What it costs

Nothing. There is no paid tier and nothing to sign up for. The app, the API and
the cryptography are open source at
[github.com/notifi-it/notifi](https://github.com/notifi-it/notifi).

---

This page as HTML: https://notifi.it/

## More from notifi

- [Docs](https://notifi.it/docs)
- [FAQ](https://notifi.it/faq)
- [Privacy](https://notifi.it/privacy)
- [Terms](https://notifi.it/terms)
- Email: hello@notifi.it
- [llms.txt](https://notifi.it/llms.txt)
- [GitHub](https://github.com/notifi-it/notifi)
- [X](https://x.com/notifiit)
- [Instagram](https://instagram.com/notifidotit)
- [Facebook](https://facebook.com/notifidotit)
