# Using Nostr Media from a Nostr client

Nostr Media implements both [Blossom](https://github.com/hzrd149/blossom) and
[NIP-96](https://github.com/nostr-protocol/nips/blob/master/96.md), so any client that
supports either protocol can use it. There is nothing to install and no account to
create — your Nostr key *is* the account.

## The one setting you need

In your client's media server, file server or image host setting, enter:

```
https://nostrmedia.com
```

Save it. From then on every upload from that client goes to your Nostr Media storage.

Some clients ask you to choose between Blossom and NIP-96 first. Either works; the same
address is used for both.

## Client-by-client

These clients are known to work with Nostr Media:

| Client | Platform |
| --- | --- |
| [Amethyst](https://github.com/vitorpamplona/amethyst) | Android |
| [Primal](https://primal.net) | Web, iOS, Android |
| [Nostur](https://nostur.com) | iOS, macOS |
| [noStrudel](https://nostrudel.ninja) | Web |
| [YakiHonne](https://yakihonne.com) | Web, mobile |
| [0xchat](https://0xchat.com) | iOS, Android |
| [Snort](https://snort.social) | Web |

Any other Blossom or NIP-96 client works the same way. The setting lives in each
client's own settings screen and the wording differs between apps and versions — look
for whichever of "media server", "file server", "Blossom server", "image host" or
"upload service" your build offers, and put `https://nostrmedia.com` in it.

## What is and is not supported over the wire

Uploading and mirroring are implemented for both protocols. Listing and deleting are
**not** yet exposed over Blossom or NIP-96 — a client calling Blossom `GET /list/<pubkey>`
or `DELETE /<sha256>` will not get a useful answer today.

To list, rename or delete files, use one of:

- the web file manager at <https://nostrmedia.com/manage>, or
- the `/edit` and `/delete` endpoints in the
  [API reference](https://nostrmedia.com/docs/api.md).

Full Blossom and NIP-96 compliance is planned.

## Signing in on the website

The website itself accepts any of the usual Nostr login methods, handled by
`nostr-login`:

- a NIP-07 browser extension (Alby, nos2x, and similar),
- a NIP-46 remote signer ("connect"),
- a local key stored in the browser.

The site requests permission to sign kind `1`, kind `24242` and to use `nip04_encrypt`.
Kind `24242` is the Blossom authorization event described in the
[API reference](https://nostrmedia.com/docs/api.md); it is what proves an upload,
listing or deletion came from you.

## Troubleshooting

**Uploads fail with "A paid subscription is required".**
Nostr Media has no free tier. Subscribe at <https://nostrmedia.com/#plan> — with a card
through Stripe, or with Bitcoin at <https://lightning.nostrmedia.com/subscribe>. Zap-paid
subscriptions can take a moment to appear on the subscriber list after payment.

**Uploads fail only for large files.**
A single `POST /upload` is capped at 125 MB. Clients that do not implement the presigned
multipart flow will fail above that. Upload large files through the website instead,
which uses the presigned endpoint and supports up to 5 GB per file.

**A document, archive or audio file is rejected on Purple.**
Purple covers images and video. Audio, documents and archives need Onyx or Gold.

**The upload succeeded but the file will not open.**
Files whose bytes match no known signature are stored as `.bin`. Check that the client
sent a correct `Content-Type`.

**I changed my Nostr key.**
Storage is bound to a pubkey. A new key is a new account with no access to the old key's
files, and a subscription does not follow you across keys.
