{"openapi":"3.1.0","info":{"title":"Nostr API","version":"1.0.0","description":"Live profile and notes for any Nostr account, read straight from the open Nostr relay network — no key, no account, nothing cached. Nostr is the decentralised, censorship-resistant social protocol with no central server, so this service queries several public relays in parallel and merges and de-duplicates what they return. Give it a public key, either as 64-character hex or as an npub… key (it decodes bech32 npub keys for you), and the profile endpoint returns the account's kind-0 metadata: name, display name, about/bio, picture, banner, website, NIP-05 verified identifier and Lightning address — fiatjaf's key resolves to name \"fiatjaf\", NIP-05 _@fiatjaf.com. The notes endpoint returns the account's most recent kind-1 text notes — the posts — newest first and de-duplicated across relays, each with its content, timestamp, note id and mention and reply counts. The relays endpoint lists the public relays queried. This is the profile-and-posts layer for any Nostr client, bot, indexer or social dashboard — live from the relay network, nothing stored. Distinct from centralised-platform social APIs — this reads the open Nostr protocol directly from its relays. 4 endpoints.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/nostr-api","description":"oanor gateway"}],"tags":[{"name":"Nostr"},{"name":"Reference"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/notes":{"get":{"operationId":"get_v1_notes","tags":["Nostr"],"summary":"Account recent notes","description":"","parameters":[{"name":"pubkey","in":"query","required":true,"description":"Public key: 64-hex or npub1…","schema":{"type":"string"},"example":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"},{"name":"limit","in":"query","required":false,"description":"Number of notes (default 20, max 50)","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":20,"notes":[{"id":"bb6fb81fee7298027e654deaa13a8a603fbee7a230ffdd320657b5040a9676ec","content":"Maybe Nostr could be governed by Futarchy, or at least OpenSats.","mentions":0,"tag_count":0,"created_at":1780967976,"replies_to":0},{"id":"d4c11312c688d2be284647e60719a277da10f873176e8a1ff59c911223136632","content":"There should be a Nostr newsletter that only talked about the drama and fights happening here.","mentions":0,"tag_count":0,"created_at":1780963367,"replies_to":0},{"id":"6a6fd11e2f37aa481507b7624aae7f6759885ee05537c84a45fc9672a53c97c0","content":"https://www.youtube.com/watch?v=m6BQKFs3-VM","mentions":0,"tag_count":0,"created_at":1780954831,"replies_to":0},{"id":"db28b3a9e451659fe117010920a4d3c56a611e4a77355c176be547c6a1c451aa","content":"This is expected, just like programmers tend to write software for other programmers, people from cinema often make movies about the process of making movies or acting, writers write books about writing.\n\nBut in the case of Bitcoiners for some reason it seems to be much worse.\n\nLook at how many wallets exist, or services that allow you to visualize Bitcoin things, lend Bitcoin, exchanges in all their shapes, what else?","mentions":1,"tag_count":2,"created_at":1780786247,"replies_to":1},{"id":"c814da92051bc7cda94c1072c6c8084e858ebdc87bc0581926b8c760b2a9e8dd","content":"Here it is: https://npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6.nsite.pyramid.fiatjaf.com/\n\nBut all the blobs and nsite manifests have to be published directly to the #pyramid for it to work. A natural anti-abuse mechanism.","mentions":1,"tag_count":3,"created_at":1780707711,"replies_to":1},{"id":"f2bcc986d5f450215037ad222320c66577f99f4d523b25a2b0452d8e21be7d68","content":"Because most web pages take years to load one would think it would be a good idea to launch them and switch to doing something else while they load, right?\n\nBut no, you are wrong. You can't do that because browsers have decided that they won't run the JavaScript of these pages if they are not focused.\n\nSo you are forced to stare at the loading screen of every web page while they load.","mentions":0,"tag_count":0,"created_at":1780679123,"replies_to":0},{"id":"a3e75fa5ceb384e972bf85451dc52c756558e3dd44a8bc0a5cc2313d13d16382","content":"I'm not seeing them, but who knows whose fault that was. I'm not aware of my relays blocking Tor exits, I don't use Cloudflare, so who knows. There are some incomplete NIP-17 clients out there that don't connect to the correct DM relays of the receiver, maybe that was it.\n\nI told Paul, maybe he will contact you in some other manner, I don't know.","mentions":2,"tag_count":4,"created_at":1780542164,"replies_to":2},{"id":"e8831ff6d65b11e1c58f3683b0a39d545d330ae7745de8551297012a52b0d334","content":"Can you write more marketing copy like that? We need one of those for every client and one for Nostr in general.","mentions":1,"tag_count":2,"created_at":1780539819,"replies_to":1},{"id":"00a1a0a1aed223d776d9a791b9ce5fa6e2a9ab3b713fc79d5af30e1e077ca5f4","content":"From a quick glance at the code you have a set of hardcoded relays that the app uses at all times and at no point you try to fetch outbox relays of users or their list of DM relays.\n\nThere is another \"pool\" that the app maintains with other relays. I don't know where those come from, but apparently you blast every DM to all these relays too?","mentions":2,"tag_count":4,"created_at":1780493560,"replies_to":2},{"id":"af9429898a054ce43bf53137c58973888c2fbced4f21a3a858a0c18ce150246e","content":"Stuff you publish to your homeserver doesn't have to be signed, so your key doesn't have to be hot.\n\nIf one wants to verify if you really said something they have to connect to your homeserver and ask.\n\nThis supposedly means that you can do access-control better, since there is no way to distribute your content beyond your home server.\n\nAlso because they don't do signatures they don't need a canonical event format, so the content that comes from the homeserver can be of any shape. They like the concept of serving arbitrary files.\n\nNostr keys can't publish to the BitTorrent DHT, because they use a different signature algorithm.","mentions":2,"tag_count":3,"created_at":1780403396,"replies_to":1},{"id":"afa1b3d19984a703976c67a84c432f76ff4c61f762c0363c9ad4fd842cc837b3","content":"Consider applying for an OpenSats grant.\n\n(This is valid for anyone else who thinks they can do this too.)","mentions":2,"tag_count":4,"created_at":1780351269,"replies_to":2},{"id":"931cfb1fae285171f617c33e000ea8fde090fbd1dc86fdcc29b36b035c5ac281","content":"I don't believe AI can perform these tasks but I would be happy to be proven wrong.","mentions":2,"tag_count":4,"created_at":1780314879,"replies_to":2},{"id":"01750cebb35671525b7cad7c735cfc984d31dda576759b574d2c75b52e0e7259","content":"It's a completely stupid situation, because programmers are simultaneously bad at tests and (in theory) much more expensive, so telling them to perform tests like that is a waste on every level.\n\nJoel Spolsky warned about that 16 years ago: https://www.joelonsoftware.com/2010/01/26/why-testers/","mentions":2,"tag_count":4,"created_at":1780314153,"replies_to":2},{"id":"cb6b1db8b523ab489b1dfb081005e9761db5aac9a66ffd5186362dd775672d4b","content":"I think Nostr would be probably 200% better if we had someone to test apps reliably.\n\nI'm not talking about a \"QA engineer\" whatever, just someone that isn't a programmer but can install things, click buttons and report bugs.\n\nI have the impression that this is a role that died in the industry of software development, but it is much needed now, and much more in the age of AI code.","mentions":0,"tag_count":0,"created_at":1780313711,"replies_to":0},{"id":"81dabb9e6d7ce4d129d5d2c1f1e76cfb75e1f5312830e95fd73b64597fea2d8c","content":"I just wanted proof that NIP-17 could work reliably, and now I got it.\n\nnostr:nevent1qvzqqqqqqypzqwlsccluhy6xxsr6l9a9uhhxf75g85g8a709tprjcn4e42h053vaqqszmh89k4tjlz9p2d437y2aex6hdfw4cqvkzl4zsgd73dy5l2mdsqgtc2mc5\n\nHowever the two clients cited above are nsec-only. This tells me that we definitely need some NIP-4E juice in order to allow bunker-powered clients to have good and fast DMs.\n\nAnother thing we definitely need are that clients are ready to perform AUTH with the user main key to relays when publishing, that allows relays to filter out spam. https://pyramid.fiatjaf.com/inbox is an example of a relay that filters out blocked people and people not in the relay unified WoT.","mentions":0,"tag_count":1,"created_at":1780312546,"replies_to":0},{"id":"f53b7f1f977e0b9a8d48e06f634d70d41a515adce49cebe8fbda64d7df92d537","content":"On Jumble they were working pretty well two weeks ago, now they're empty, I have zero chats. I don't know why. Maybe because Coop has refreshed my encryption key. Maybe NIP-4E is too complicated and we have to simplify it.\n\nCoop used to work pretty well for a while but a little before the NIP-4E transition started it got pretty broken and hasn't recovered yet. I'm waiting for nostr:npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445 to finish his mobile app and fix it. Still hopeful.","mentions":2,"tag_count":4,"created_at":1780312254,"replies_to":2},{"id":"2ddce5b5572f88a1536b1f115dc9b576a5d5c019617ea2821be8b494fab6d801","content":"https://nospeak.chat/ is the first NIP-17 chat app that I saw that works very reliably since https://wisp.mobile/. It is amazing, if you don't have a problem with pasting your nsec you should definitely try it. By the way, two people can chat one using Wisp and the other Nospeak. Mindblowing!, a slap in the face of everybody who said Nostr DMs would never work\n\nAs nostr:npub1dergggklka99wwrs92yz8wdjs952h2ux2ha2ed598ngwu9w7a6fsh9xzpc said recently: \"if you know what you're doing NIP-17 works really well\".\n\n(I also don't know who makes it, so don't trust it with your nsec!)","mentions":0,"tag_count":0,"created_at":1780274213,"replies_to":0},{"id":"4f41e293ec954535c68c4cc8129fc9eb115076dc606a5a041db30eaade7be16a","content":"Miners selling their stock of coins has nothing to do with them renting their infrastructure to AI companies, that sounds like a non sequitur. And it looks like Bitcoin hashrate is looking pretty fine still. I would also welcome some shift of mining activity from these big public US companies to more grassroots activity, so maybe the video is right that this could be good news.\n\nBut things will definitely get dire in some years if Bitcoin remains in the disgusting state of complete apathy as it is. Bitcoin needs a ton more activity, adoption, scaling and real-world usage. Most importantly, all these users have to pay a small mining fee and somehow they all have to fit into smaller blocks.","mentions":1,"tag_count":2,"created_at":1780183774,"replies_to":1},{"id":"a8775bee6920445623fc1104fc7981cc487d0ba9a2b70222b534b3295595426d","content":"Thank you very much, that's it!","mentions":2,"tag_count":4,"created_at":1780079547,"replies_to":2},{"id":"d3783ee43d422a9f4fec3f78bd7811abb358cf77478119341506ab85e256638f","content":"I've seen a video here some weeks ago and now I can't find it.\n\nIt was a dramatic voice reading something like a big tweet, the phrases were being shown as they were read. The entire tweet was a list of complaints about the current state of the internet, how annoying is to make logins on websites, do phone verification, KYC, and then everything is full of spam and so on.\n\nI think it was an old video that someone reposted, something like that.\n\nIf you know what I'm talking about please help.","mentions":0,"tag_count":0,"created_at":1780064746,"replies_to":0}],"pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"},"meta":{"timestamp":"2026-06-09T11:40:02.730Z","request_id":"59fd5a2d-bbee-49dc-8b9d-44064dcebe05"},"status":"ok","message":"Notes retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/profile":{"get":{"operationId":"get_v1_profile","tags":["Nostr"],"summary":"Account profile metadata","description":"","parameters":[{"name":"pubkey","in":"query","required":true,"description":"Public key: 64-hex or npub1…","schema":{"type":"string"},"example":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"fiatjaf","about":"~","lud16":"npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6@npub.cash","nip05":"_@fiatjaf.com","banner":"https://cdn.satellite.earth/8f10244a702cbc2ca57b6c27a57b8cc02d5fdddccab0fc2e5988ce17e08f1732.jpg","pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","picture":"https://fiatjaf.com/static/favicon.jpg","website":"https://stuff.fiatjaf.com/","updated_at":1755901618},"meta":{"timestamp":"2026-06-09T11:40:02.863Z","request_id":"5461f06e-de54-44e1-b49f-9f1f73103be0"},"status":"ok","message":"Profile retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/relays":{"get":{"operationId":"get_v1_relays","tags":["Reference"],"summary":"Relays queried","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":6,"relays":["wss://relay.damus.io","wss://nos.lol","wss://relay.primal.net","wss://relay.nostr.band","wss://nostr.wine","wss://relay.snort.social"],"protocol":"Nostr NIP-01 over WebSocket"},"meta":{"timestamp":"2026-06-09T11:40:02.973Z","request_id":"e47ba7d0-5b4c-4e40-ba6b-d8856c611937"},"status":"ok","message":"Relays retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"source":"Public Nostr relays over WebSocket (NIP-01, live)","service":"nostr-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/notes":"An account's recent text notes (pubkey=…, limit up to 50).","GET /v1/relays":"The public relays queried.","GET /v1/profile":"An account's profile metadata (pubkey=64-hex or npub1…)."},"description":"Live profile and notes for any Nostr account, read directly from the open Nostr relay network: kind-0 profile metadata (name, display name, about, picture, banner, website, NIP-05, Lightning address) and recent kind-1 text notes (content, timestamp, id, mention and reply counts), merged across several public relays and de-duplicated. Accepts 64-hex or npub1… keys. Live, no key, nothing stored. Distinct from centralised-platform social APIs — this reads the decentralised Nostr protocol straight from its relays.","upstream_status":"ok"},"meta":{"timestamp":"2026-06-09T11:40:03.115Z","request_id":"9dea45c9-dff8-4261-8ade-f4bd0463ef67"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":12000,"rps_limit":3,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":650,"monthly_call_quota":150000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1750,"monthly_call_quota":700000,"rps_limit":15,"hard_limit":true},{"slug":"scale","name":"Scale","price_cents_month":4100,"monthly_call_quota":3500000,"rps_limit":30,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/nostr-api"}