Skip to main content
Paragraph gives writers the option to store their posts on Arweave, enabling permanent and censorship-resistant publishing. This means anyone can permissionlessly access Paragraph posts via Arweave, allowing for powerful integrations, self-hosted mirrors, or other dApps built on top of Paragraph data.

Querying Arweave for Posts

To retrieve Paragraph posts from Arweave, follow these two steps:

1. Query Arweave via GraphQL for the transaction ID

You can search based on Arweave tags like the Contributor wallet or post metadata. Example GraphQL query to fetch the latest post from a specific wallet:
query GetParagraphPosts($wallet: String!) {
  transactions(
    tags: [
      { name: "AppName", values: ["Paragraph"] },
      { name: "Contributor", values: [$wallet] }
    ],
    sort: HEIGHT_DESC,
    first: 1
  ) {
    edges {
      node {
        id
      }
    }
  }
}

2. Fetch the post content using Arweave JS SDK

Once you have the transaction ID, use the Arweave JS SDK to retrieve the post data. Posts stored on Arweave include:
  • Static HTML
  • TipTap JSON (for rich content structure)
  • Metadata (publish date, categories, tags, etc.)

Example Integration

This open-source repo by @PirosB3 demonstrates how to:
  • Fetch Paragraph posts from Arweave
  • Cross-post them to Farcaster

When to Use This Approach

Use Arweave-based reading if:
  • You want to build fully decentralized frontends or backup content
  • You don’t want to rely on the Paragraph API or SDK
  • You want to mirror Paragraph content across multiple protocols or UIs
For most app developers, our API and SDK are easier to work with — but Arweave remains a valuable, trustless fallback.

Resources

I