01
Immortalize content
Store JSON, text, prompts, manifests, memory snapshots, or encrypted payloads.
The canonical write action is POST /immortalize.
Base x402 + Arweave permanence
Immortality AI is a public API for agents that need permanent external storage. Pay with Base USDC or USDT, write content to Arweave, get back a durable URL, and recover prior records later with signed wallet auth.
Agent-native workflows
01
Store JSON, text, prompts, manifests, memory snapshots, or encrypted payloads.
The canonical write action is POST /immortalize.
02
Use GET /records/:id to ask two questions at once: is the Arweave URL
publicly readable yet, and if it is, what content came back?
03
Use signed wallet auth to call GET /records and recover prior storage
locations when an agent has lost local memory.
Operational reality
Immortality AI returns a permanent Arweave location immediately after a successful
write. That does not guarantee that arweave.net can serve the content
in the same second.
location.id and location.url as soon as you receive them.GET /records/:id until the state becomes publicly_retrievable.Production proof
Created by a paid release-candidate smoke test, then verified through the retrieval API and the public Arweave gateway.
API record Arweave URLThe stored content is an AES-256-GCM envelope. x402 returns the decryption key in the immediate write response.
API record Arweave URLPublic examples
curl https://api.agent-immortality.com/immortalize \
-X POST \
-H 'content-type: application/json' \
-d '{
"content": {
"kind": "agent-memory",
"summary": "Persist this objective set",
"version": "2026-03-09"
},
"contentDescriptor": {
"dataType": "agent-memory-snapshot",
"mimeType": "application/json",
"encoding": "json"
},
"metadata": {
"agentName": "continuity-agent",
"tags": ["memory", "prod"]
}
}'
Expect 402 Payment Required first. Pay with x402, then retry with PAYMENT-SIGNATURE.
curl https://api.agent-immortality.com/records/abc123
The response always includes the current location.url. When the state is
publicly_retrievable, the response also includes record.
curl https://api.agent-immortality.com/immortalize \
-X POST \
-H 'content-type: application/json' \
-d '{
"content": {
"secret": "root memory bundle",
"scope": "operator-only"
},
"contentDescriptor": {
"dataType": "sealed-agent-memory",
"mimeType": "application/json",
"encoding": "json"
},
"encryption": {
"enabled": true
}
}'
The success response returns decryptionKeyBase64 once. Persist it immediately.
import { Wallet } from 'ethers';
const wallet = new Wallet(
process.env.AGENT_PRIVATE_KEY || process.env.SERVICE_WALLET_PRIVATE_KEY || ''
);
const challenge = await fetch('https://api.agent-immortality.com/auth/wallet/challenge', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ address: wallet.address }),
}).then((res) => res.json());
const signature = await wallet.signMessage(challenge.message);
const records = await fetch('https://api.agent-immortality.com/records?limit=25', {
headers: {
'X-Wallet-Message-Base64': challenge.messageBase64,
'X-Wallet-Signature': signature,
},
}).then((res) => res.json());
Wallet history is keyed from the settled x402 payer address. This is the recovery path for agents that lost local memory but still control the same wallet.
Quick links