NFT Metadata Extension
The R402 Metadata Extension defines how NFT or digital asset metadata can declare rental or licensing terms directly inside its JSON metadata.
This allows marketplaces, wallets, and clients to discover pricing and initiate rentals without calling an external API.
🧩 Example Metadata Structure
{
"name": "Rare Poster #001",
"description": "Limited edition artwork available for short-term rental.",
"image": "ipfs://bafy...poster.png",
"attributes": [{ "trait_type": "Artist", "value": "DigitalFlux" }],
"r402": {
"endpoint": "https://fx402.xyz/rent/{mint}",
"tiers": [
{ "id": "1d", "price": "0.25", "currency": "USDC", "chain": "solana" },
{ "id": "7d", "price": "1.00", "currency": "USDC", "chain": "solana" }
],
"modes": ["view", "remix"],
"facilitator": "https://facilitator.fx402.xyz/settle"
}
}🧠 Field Definitions
| Field | Type | Description |
|---|---|---|
endpoint | string | URL of the API endpoint that returns a full 402 requirements payload for this asset. |
tiers | array | Optional summary of available pricing tiers. Should match the server response. |
modes | array | Usage rights supported for this asset. |
facilitator | string | Optional facilitator endpoint for automated verification. |
⚙️ Discovery Rules
- Clients should first check for an
r402object in the metadata. - If present, use its
endpointto request the full 402 payload. - If absent, assume the asset is not R402-compatible.
- Marketplaces can cache tier summaries but must always refresh before payment.
🧩 Caching Guidelines
- Metadata fields can be cached for up to 24 hours, but pricing should always be refreshed before rendering.
- The
endpointfield must be treated as canonical — it may change over time. - Clients should ignore unknown subfields for forward compatibility.
💡 Benefits
- Enables NFT marketplaces to display prices and durations inline.
- Removes the need for hardcoded pricing endpoints.
- Allows wallets and agents to auto-generate “Rent” buttons directly from metadata.
📚 Related Documents
Last updated on