Skip to content
reelspanDocs

Networks

Post to Nostr

Publish signed Nostr notes with video, photos or text to your relays, with media hosted on nostr.build and shown inline by most clients.

Reelspan signs a note with your Nostr key and sends it to your relays. Videos and photos go to nostr.build first, and their links go in the note, where most clients show them inline.

What you can post

Post How it appears
Text A note (kind 1)
Photos A note with up to 10 photos or videos, their links added after the text
Video A note with the video's link added after the text

Each media link is also tagged in the note (imeta), and every #hashtag in the text becomes a topic tag, so clients can find the note by it.

The result's url opens the note on njump.me, post_id is the note's event id, and relays lists the relays that took it.

Connect your key

You need your private key. Setup takes about a minute.

  1. Copy your private key (nsec1…) from your Nostr app's key or account settings.
  2. In the Reelspan dashboard, open Accounts → Connect account, choose the profile and Nostr, and paste the key.
  3. Name the relays to publish to, or leave them empty for wss://relay.damus.io, wss://nos.lol and wss://relay.primal.net.

Your private key is stored encrypted and only signs the notes you send through Reelspan, plus the upload authorisation nostr.build asks for. If you'd rather not share your main key, make a separate key for the account you post from.

With the API

curl -X POST https://api.reelspan.com/v1/accounts/nostr \
  -H "Authorization: Bearer $REELSPAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"profile_username": "my-brand", "nsec": "nsec1...", "relays": ["wss://relay.damus.io", "wss://nos.lol"]}'
{ "success": true, "platform": "nostr", "account": "npub1abcdefghijk…", "reconnected": false }
Field Required Also accepted (Upload-Post)
nsec Yes. nsec1…, or the key as 64 hex characters private_key
relays No. A list, or one string separated by spaces or commas. Up to 10 are used

Connecting again replaces the Nostr account on that profile. See Connect with credentials.

Example post

A video note:

curl -X POST https://api.reelspan.com/v1/posts/video \
  -H "Authorization: Bearer $REELSPAN_API_KEY" \
  -F "user=my-brand" \
  -F "platform[]=nostr" \
  -F "title=Launch day" \
  -F "nostr_title=We shipped. Here's the 60-second tour #launch #buildinpublic" \
  -F "[email protected]"
{
  "success": true,
  "request_id": "9b1f6c2e8a3d4f50b7e1c9a2d6f3e8b1",
  "results": {
    "nostr": {
      "success": true,
      "url": "https://njump.me/note1…",
      "post_id": "5c83da77…",
      "relays": ["wss://relay.damus.io", "wss://nos.lol"]
    }
  }
}

Fields

Field Meaning
nostr_title The note's text. Falls back to title.
title The caption every network uses, when nostr_title isn't sent.

Nostr has no options of its own in the dashboard composer. A first_comment isn't posted on Nostr; the result says "first_comment": "unsupported" with a warning.

Limits and behaviour

  • Media: up to 10 items per note, each up to 100 MB, uploaded to nostr.build (a NIP-96 server, authorised with a NIP-98 signature from your key). The media server can't be changed today.
  • Relays: the note goes to every relay at once, and each has 10 seconds to accept it. The post succeeds when at least one relay takes it; each relay that didn't is named in a warning.
  • Text: no limit is applied by Reelspan. The dashboard composer stops at 10,000 characters.
  • Signing: each note is signed with your key on Reelspan's servers; the key never leaves them.

Common errors

Code When Fix
INVALID_KEY Connecting: the key isn't nsec1… or 64 hex characters Copy the private key (nsec1…), not the public one (npub1…).
INVALID_RELAY Connecting: a relay isn't a wss:// address Use wss:// addresses only.
nostr_relays_failed No relay accepted the note; each relay's answer is in error. Retried automatically Check the relays still accept your notes, or connect again with others.
nostr_media_error nostr.build didn't take the file. Retried automatically on 5xx Read error for the server's reason.
file_too_large A file is over 100 MB Send a smaller file.
MISSING_FIELD Connecting without nsec Send it.

Errors when connecting come back as a 400 with the code in error_code. Errors when posting are in that network's result. See Errors.

Something unclear or missing? Write to [email protected] and we’ll fix the page.