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 is the canonical retrieval key — it never changes, regardless of which gateway serves the request.

TX_IDstable foreverarweave.net✕ down / slowar-io.dev respondingg8way.iofallbacksame bytescontent-addressed

Retrieval (REST / HTTP): the canonical URL for any Arweave transaction is https://{gateway}/{txId}. Gateways are interchangeable — if one is down or deprecated, substitute another. The transaction ID and the data it points to are unaffected.

TX_ID="eKkB0O6kty9YmwFzUYZe8uFirdsjEY9s5bqQdwUZPCY"

Primary (arweave.net)

curl -L "https://arweave.net/${TX_ID}" -o file.bin

If arweave.net is down, any of these serve the same bytes:

curl -L "https://ar-io.dev/${TX_ID}" -o file.bin
curl -L "https://g8way.io/${TX_ID}" -o file.bin
curl -L "https://permagate.io/${TX_ID}" -o file.bin
curl -L "https://gateway.irys.xyz/${TX_ID}" -o file.bin

For scripted fallback, try gateways in order and stop at the first success:

TX_ID="eKkB0O6kty9YmwFzUYZe8uFirdsjEY9s5bqQdwUZPCY"
GATEWAYS=("arweave.net" "ar-io.dev" "g8way.io" "permagate.io" "gateway.irys.xyz")

for gw in "${GATEWAYS[@]}"; do
echo "Trying ${gw}..."
if curl -sf -L "https://${gw}/${TX_ID}" -o file.bin; then
echo "Saved via ${gw}"
break
fi
done

Retrieval (ar.io Wayfinder): Wayfinder resolves ar:// URIs by automatically routing through the ar.io gateway network, handling failover without any manual gateway list. This is the preferred approach for production retrieval — gateway availability is managed by the SDK.

# 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);
}

// Wayfinder selects a live gateway automatically — no fallback logic needed
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});

node fetch.mjs "eKkB0O6kty9YmwFzUYZe8uFirdsjEY9s5bqQdwUZPCY" "file.pdf"

To find currently active ar.io gateways, the ar.io network observer lists operators and their status. Any gateway in good standing can serve any transaction.

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