> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Dynamic IPFS API

> Regenerate dynamic NFT metadata and position visuals for Raydium liquidity positions

The Dynamic IPFS API serves regenerated metadata and images for CLMM and CPMM liquidity positions on Solana. This service is designed for dApps that render dynamic NFTs—such as concentrated liquidity position cards—by providing real-time pool information, position valuation, and unclaimed fees without requiring on-chain lookups.

## Hosts

| Environment | Host                             |
| ----------- | -------------------------------- |
| Mainnet     | `dynamic-ipfs.raydium.io`        |
| Devnet      | `dynamic-ipfs-devnet.raydium.io` |

## Overview

The API exposes three endpoints, each returning a complete position interface object:

* **`/clmm/position`** — Fetch metadata for an active CLMM position
* **`/lock/clmm/position`** — Fetch metadata for a locked CLMM position
* **`/lock/cpmm/position`** — Fetch metadata for a locked CPMM position

Each response includes the full pool details (tokens, decimals, TVL), position amounts, USD valuation, TVL percentage within the pool, and accumulated (but unclaimed) fees and rewards.

## Use cases

Generate dynamic position visualization NFTs by requesting metadata for a specific position. The API computes real-time position state from on-chain data and caches results, making it ideal for:

* Rendering position cards with live USD value and fee accrual
* Displaying TVL percentage and token amounts in the pool
* Showing unclaimed trading fees and reward tokens
* Building portfolio dashboards that track position performance

## Authentication

No authentication is required. All endpoints are public.

## Rate limiting

None enforced. Best effort service.

## Common patterns

### Fetch a CLMM position

```bash theme={null}
curl -s "https://dynamic-ipfs.raydium.io/clmm/position?id=4Ygp92zRvl4kCr97V3Zs5xg4k3qX1tN6m8pR2vL9jA1"
```

The `id` parameter should be the on-chain public key of the position account (a Solana address in base58 format).

### Fetch a locked position

```bash theme={null}
curl -s "https://dynamic-ipfs.raydium.io/lock/clmm/position?id=<position_pda>"
```

## Related docs

See [CLMM](/products/clmm) for position account structure and how to derive position IDs.
