Name not found
This name could not be resolved. It may not exist or has no on-chain records.
—
.btc
Resolved
Specification
BNRP-IP-12
Profile Record Standard
A standard set of fields that any Bitcoin name holder can inscribe on-chain. Any resolver, wallet, or app that reads BNRP can display a consistent identity card from these records. Fields are optional — set only what you want to expose.
Profile fields
| Field | Type | Description |
|---|---|---|
| display | string | Display name — overrides the TLD name in UIs. Use your preferred handle or full name. |
| description | string | Short bio, max 160 chars. Plain text. Shown below the name in profile cards. |
| avatar | string | ord:<inscription_id> for an ordinal, or a full HTTPS URL. Resolves to the image at render time. |
| url | string | Primary website. Full HTTPS URL. |
| com.twitter | string | Twitter/X handle, without the @ symbol. |
| com.github | string | GitHub username. |
| com.nostr | string | Nostr public key in npub1... bech32 format. |
| com.telegram | string | Telegram handle, without the @ symbol. |
| com.discord | string | Discord tag (e.g. username#1234 or username for newer Discord names). |
| com.farcaster | string | Farcaster handle, without the @ symbol. |
Address fields
| Field | Type | Description |
|---|---|---|
| btc_taproot | string | Bitcoin Taproot address (bc1p...). Recommended primary BTC address. |
| btc_segwit | string | Bitcoin native SegWit address (bc1q...). |
| btc_p2sh | string | Bitcoin P2SH address for wallets that don't support SegWit. |
| btc_legacy | string | Bitcoin legacy address (1...). |
| eth | string | Ethereum address, checksummed. |
| sol | string | Solana address (base58). |
| spark | string | Spark protocol address for Bitcoin-native Lightning payments. |
| agent_address | string | Address designated for AI agent payments on behalf of this name. |
| lnurlp | string | Lightning Address in user@domain.com format. Enables instant BTC payments via Lightning. |
| nostr_pubkey | string | Nostr public key as hex string (64 chars). Used for encrypted messaging. |
| did | string | Decentralized Identifier, e.g. did:btc:satoshi.btc. Used in verifiable credential flows. |
Setting records
Records are set by inscribing a BNRP profile operation with a records object. Include only the fields you want to set. The resolver takes the latest valid inscription as the current state.
Inscription payload — BNRP profile op
{
"op": "profile",
"name": "satoshi.btc",
"records": {
"display": "Satoshi",
"description": "Bitcoin pioneer",
"avatar": "ord:a859c487...i0",
"url": "https://satoshi.org",
"com.twitter": "satoshi",
"com.nostr": "npub1...",
"lnurlp": "satoshi@getalby.com"
},
"addresses": {
"btc_taproot": "bc1p...",
"nostr_pubkey": "a1b2c3...",
"did": "did:btc:satoshi.btc"
}
}
Ready to set your profile? Connect your wallet and update your records from My Names.
Edit Profile
Full BNRP spec
Developers
Fetch a profile
The BNRP API returns the full profile object for any resolved name. One fetch, one JSON object, all records.
JavaScript
// Resolve a Bitcoin name
const res = await fetch('https://api.bnrp.name/v1/resolve/satoshi.btc');
const { profile, addresses } = await res.json();
// Render avatar
const avatarUrl = profile.avatar?.startsWith('ord:')
? `https://static.unisat.space/content/${profile.avatar.slice(4)}`
: profile.avatar;
// Send a payment to their Lightning address
const lnAddress = addresses.lnurlp; // e.g. "satoshi@getalby.com"
// Get their primary BTC address
const btcAddr = addresses.btc_taproot ?? addresses.btc_segwit;
cURL
curl https://api.bnrp.name/v1/resolve/satoshi.btc