# Port 402 > Pay-per-use infrastructure for autonomous AI agents. No account, no API key: pay each call with x402. Base URL: https://port-402-production.up.railway.app Payment: x402 v2, scheme "exact", USDC on eip155:8453, paid to 0x672a660139eb7e487F62Fdb138B1519D7d48b7F7 Machine-readable catalog: https://port-402-production.up.railway.app/pricing.json ## How to use 1. Call any endpoint below. You will get HTTP 402 with the exact payment requirements. 2. Sign the payment with your x402 client and retry with the PAYMENT-SIGNATURE header. 3. You get the result. No signup, no API key, no human needed. ## Fair billing - Your request is validated BEFORE you pay. Invalid input, busy or unavailable service: HTTP 4xx/5xx with "charged": false. - Payments are settled on-chain before the service runs (x402 "upfront" flow). Each signed payment is single-use. ## Services - PUT /v1/memory/:key — $0.002 per call Store a JSON value under a key in your persistent memory (namespace = your paying wallet). body: {"value":} - GET /v1/memory/:key — $0.001 per call Read a value back from your persistent memory, with the time it was last written (updatedAt). - GET /v1/memory — $0.001 per call List the keys in your persistent memory. - DELETE /v1/memory/:key — $0.001 per call Delete a key from your persistent memory. - GET /v1/export — $0.002 per call Export your whole memory as one signed JSON document (format port402-memory-export/1, sha256 + Ed25519 integrity block). - POST /v1/migrate — $0.002 per call Move your memory to a new wallet (key rotation). Paid by the current wallet; the new wallet signs "Port 402: accept memory from to at " (lowercase addresses, unix seconds). Destination must be empty. body: {"from":"0x","to":"0x","timestamp":,"signature":"0x"} - POST /v1/inbox — $0.002 per call Get your inbox: a secret URL anyone (webhooks, other agents, humans) can POST messages to for free while you're asleep. Same URL every time; {"rotate":true} issues a new one. body: {"rotate": false} - GET /v1/inbox — $0.001 per call Read your inbox (oldest first, up to 50). ?ack=true removes what you read. Due reminders land here too. - POST /v1/reminders — $0.005 per call Alarm clock for agents: schedule a message for later (10 s to 366 days). When due it lands in your inbox and, if you give an https webhook, is POSTed to it too. body: {"inSeconds":3600 | "at":"", "message":, "webhook":"https://... (optional)"} - GET /v1/reminders — $0.001 per call List your pending reminders. - DELETE /v1/reminders/:id — $0.001 per call Cancel a pending reminder. ## Your memory Your persistent memory is tied to the wallet that pays. Same wallet = same memory, across sessions. Quota: 1000 keys and 5 MB per wallet. Every read returns "updatedAt" (ISO time of the last write), so you can tell how old what you remember is before acting on it. Keys written before 2026-11-01 have updatedAt: null. ## Your inbox and alarm clock You have no public address and can't wake yourself up. Port 402 does both, on the same wallet as your memory: - POST /v1/inbox gives you a secret URL. Hand it to webhooks, other agents or humans: they POST JSON to it for free, you read it with GET /v1/inbox (?ack=true to remove what you read). Keeps your last 200 messages. - POST /v1/reminders schedules a message for later (10 s to 366 days). When due it lands in your inbox, and is also POSTed to your https webhook if you gave one. Delivery is at-most-once; check the inbox if a webhook failed. Typical loop: schedule a reminder, stop, wake up on the webhook (or poll the inbox), read memory, carry on. ## Privacy, read this - Values are stored as plain JSON on the operator's server. Wallet namespacing protects you from OTHER agents, not from the operator or from a breach. If a value is sensitive, encrypt it client-side before the PUT: the service never needs to read your values. - If you lose your wallet key, your memory is unreachable. Rotate BEFORE you lose it: POST /v1/migrate (paid by the current wallet, accepted by a signature of the new wallet). - Export everything any time: GET /v1/export returns one JSON document, format "port402-memory-export/1": {"format","wallet","exportedAt","data":{key: value},"integrity":{...}}. The export is SIGNED (sha256 + Ed25519) so you can later prove it left Port 402 unaltered; how to verify is in the integrity block, public key at https://port-402-production.up.railway.app/.well-known/port402-signing-key.pem - Delete a key: DELETE /v1/memory/{key}. Delete everything: email the operator from the terms, or migrate then ask. Retention and shutdown promises: see https://port-402-production.up.railway.app/terms section 5. ## Limits 120 requests per minute per IP. ## Rules Read https://port-402-production.up.railway.app/terms before paying. Breaking them gets your wallet banned without refund.