Permanent Data Storage

The server page indexes files permanently stored on the Arweave network. Access is typically served through decentralized ar.io gateways, where the same underlying data can be retrieved from any participating gateway domain. Files are written once, hashed, signed, and stored in a content-addressed structure across globally distributed nodes. There are no subscriptions or backend dependencies—availability is sustained by the network’s protocol economics and replication incentives.

Assets include footwear design documents, apparel patents, scanned brand catalogs, and technical references in .pdf, .jpg, or .zip formats. Once on the permaweb, files cannot be altered, replaced, deleted, or censored. The transaction ID (content hash) is the canonical retrieval key, ensuring access remains possible regardless of domain or hosting changes.

Retrieval (REST / HTTP): use any gateway that supports the Arweave HTTP API and request raw bytes from /tx/{id}/data. Gateways are interchangeable infrastructure; the transaction ID is the stable identifier.

# Save raw bytes for a known transaction ID (TX_ID)
TX_ID="eKkB0O6kty9YmwFzUYZe8uFirdsjEY9s5bqQdwUZPCY"

# Standard Arweave HTTP API endpoint (works on most gateways)
curl -L "https://arweave.net/tx/${TX_ID}/data" -o "file.bin"

# Optional: inspect response headers (Content-Type, length, etc.)
curl -I "https://arweave.net/tx/${TX_ID}/data"

Retrieval (ar.io Wayfinder): Wayfinder resolves ar:// URIs by routing requests through the ar.io network for decentralized access and optional verification. This is the preferred approach for gateway-agnostic production retrieval logic.

# Minimal Node setup using Wayfinder Core
mkdir wayfinder-fetch && cd wayfinder-fetch
npm init -y
npm install @ar.io/wayfinder-core @ar.io/sdk
// fetch.mjs
import fs from "node:fs";
import { createWayfinderClient } from "@ar.io/wayfinder-core";

const txId = process.argv[2];
const outPath = process.argv[3] || txId;

if (!txId) {
  console.error("Usage: node fetch.mjs <TX_ID> [output_filename]");
  process.exit(1);
}

const wayfinder = createWayfinderClient();

const res = await wayfinder.request(`ar://${txId}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);

const buf = Buffer.from(await res.arrayBuffer());
fs.writeFileSync(outPath, buf);
console.log(`Saved: ${outPath}`);
# Fetch using ar:// (Wayfinder selects/uses ar.io gateways)
node fetch.mjs "eKkB0O6kty9YmwFzUYZe8uFirdsjEY9s5bqQdwUZPCY" "file.pdf"

Documentation: ar.io gateways, Fetch Data (REST), Arweave HTTP API (tx/{id}/data), Wayfinder, Wayfinder Core, @ar.io/wayfinder-core (npm).

SCEAU Corp., Ltd. ©