{"openapi":"3.1.0","info":{"title":"PXke x402 marketplace","version":"1.0.0","description":"Paid routes are gated by the x402 payment protocol (HTTP 402 challenge-response, settled on-chain) -- not a bearer token, API key or cookie. There is no ratified OpenAPI `securitySchemes` entry for x402, so none is declared here; look at each paid operation's `x-x402-*` extension fields and its `402` response instead. A client calls a paid route unauthenticated, reads the payment offer encoded in the 402 response's Payment-Required header, builds and signs a payment, and retries with it attached. See GET /.well-known/x402 (or GET /api/v1/x402) for the marketplace-wide facts behind every offer: network, pay-to address, accepted assets, facilitator URL.","contact":{"email":"px9e@proton.me"}},"servers":[{"url":"https://algorand-api.pxke.me"}],"paths":{"/api/v1/x402":{"get":{"operationId":"get_api_v1_x402","summary":"This document: every live x402 route, its price and how to pay.","description":"This document: every live x402 route, its price and how to pay.","tags":["catalog"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false}},"/api/v1/x402/settlements/recent":{"get":{"operationId":"get_api_v1_x402_settlements_recent","summary":"Free, rate-limited proof-of-volume feed: real (non-operator) settlements across every product, newest first, bounded. Our own probe payments are excluded, never counted here as customer volume. An empty recent window includes a pointer to our facilitator merchant page for independent verification, rather than a bare empty list.","description":"Free, rate-limited proof-of-volume feed: real (non-operator) settlements across every product, newest first, bounded. Our own probe payments are excluded, never counted here as customer volume. An empty recent window includes a pointer to our facilitator merchant page for independent verification, rather than a bare empty list.","tags":["catalog"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false}},"/api/v1/x402/settlements":{"get":{"operationId":"get_api_v1_x402_settlements","summary":"Free, rate-limited proof-of-volume feed: real (non-operator) settlements across every product, newest first, bounded. Our own probe payments are excluded, never counted here as customer volume. An empty recent window includes a pointer to our facilitator merchant page for independent verification, rather than a bare empty list.","description":"Free, rate-limited proof-of-volume feed: real (non-operator) settlements across every product, newest first, bounded. Our own probe payments are excluded, never counted here as customer volume. An empty recent window includes a pointer to our facilitator merchant page for independent verification, rather than a bare empty list.","tags":["catalog"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false}},"/api/v1/x402/news":{"get":{"operationId":"get_api_v1_x402_news","summary":"Latest published headlines with ids and slugs; ?tag=, ?limit= and ?lang= (title/summary in a stored translation language where one exists).","description":"Latest published headlines with ids and slugs; ?tag=, ?limit= and ?lang= (title/summary in a stored translation language where one exists).","tags":["news"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"parameters":[{"name":"tag","in":"query","required":false,"schema":{"type":"string"},"example":"defi","description":"One topic tag."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"example":10,"description":"Result cap, clamped server-side."},{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"example":"fr","description":"Two-letter language code; a stored translation where one exists, else English."}]}},"/api/v1/x402/news/tags":{"get":{"operationId":"get_api_v1_x402_news_tags","summary":"Free: the newspaper's live tag taxonomy -- per-tag article count, readership and recency, sorted by coverage; ?limit=. The discovery surface for the headline list's ?tag= filter.","description":"Free: the newspaper's live tag taxonomy -- per-tag article count, readership and recency, sorted by coverage; ?limit=. The discovery surface for the headline list's ?tag= filter.","tags":["news"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"example":10,"description":"Result cap, clamped server-side."}]}},"/api/v1/x402/news/search":{"get":{"operationId":"get_api_v1_x402_news_search","summary":"Ranked full-text search over every published article; ?q= and ?limit=. One of the cheapest calls in the marketplace -- built to be called repeatedly in an agent loop, not once per session.","description":"Ranked full-text search over every published article; ?q= and ?limit=. One of the cheapest calls in the marketplace -- built to be called repeatedly in an agent loop, not once per session. Paid: price_usd='$0.001', resource='x402-news-search'.","tags":["news"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. The x402 payment offer (accepted assets, price, facilitator) is carried in the Payment-Required response header."}},"x-x402-paid":true,"x-x402-free-preview-url":"https://algorand-api.pxke.me/api/v1/x402/news/search?q=tinyman volume&limit=10&preview=true","x-x402-price-usd":"$0.001","x-x402-resource":"x402-news-search","x-x402-supports-preview":true,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"example":"tinyman volume"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"example":10,"description":"Result cap, clamped server-side."},{"name":"preview","in":"query","required":false,"schema":{"type":"string"},"example":"true","description":"true for a free, redacted, rate-limited example response; nothing is paid."}]}},"/api/v1/x402/news/articles/tinyman-v2-crosses-1b-cumulative-volume":{"get":{"operationId":"get_api_v1_x402_news_articles_article_id","summary":"Free: one published article in full (body markdown, sources, translations) by uuid or slug; ?lang= serves a stored translation (the payload's lang field says which language was actually served).","description":"Free: one published article in full (body markdown, sources, translations) by uuid or slug; ?lang= serves a stored translation (the payload's lang field says which language was actually served).","tags":["news"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"x-x402-path-template":"/api/v1/x402/news/articles/:article_id","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"example":"fr","description":"Two-letter language code; a stored translation where one exists, else English."}]}},"/api/v1/x402/scan/url":{"post":{"operationId":"post_api_v1_x402_scan_url","summary":"Static security scan of a file fetched from a URL: known-malware signature match (ClamAV), file-type verification, entropy, embedded URL/IP extraction, and a zip/tar-bomb-safe archive member listing with the same checks applied per member. The target is downloaded server-side and scanned in a network-isolated sandbox that never executes it. Supports ?preview=true for a free, redacted, unpaid, rate-limited fixed example of the same response shape.","description":"Static security scan of a file fetched from a URL: known-malware signature match (ClamAV), file-type verification, entropy, embedded URL/IP extraction, and a zip/tar-bomb-safe archive member listing with the same checks applied per member. The target is downloaded server-side and scanned in a network-isolated sandbox that never executes it. Supports ?preview=true for a free, redacted, unpaid, rate-limited fixed example of the same response shape. Paid: price_usd='$0.01', resource='x402-scan-url'.","tags":["scan"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. The x402 payment offer (accepted assets, price, facilitator) is carried in the Payment-Required response header."}},"x-x402-paid":true,"x-x402-price-usd":"$0.01","x-x402-resource":"x402-scan-url","x-x402-supports-preview":true,"parameters":[{"name":"preview","in":"query","required":false,"schema":{"type":"string"},"example":"true","description":"true for a free, redacted, rate-limited example response; nothing is paid."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"url":"https://api.example.com/v1/quote"}}}}}},"/api/v1/x402/storage/auth/challenge":{"post":{"operationId":"post_api_v1_x402_storage_auth_challenge","summary":"Free (JSON body: wallet, plus the scope of the call it authorizes: action list / read / delete, backup_id for read and delete, optional version): mint a short-TTL, single-use nonce whose signing_message names that action, backup and site, proving control for exactly one following wallet-signature-authenticated GET/DELETE /storage/backups call (query params: wallet, nonce, signature_b64, optional proof_method). A delete needs a delete-scoped challenge. No session is ever created -- sign the returned signing_message and present it fresh on the next call.","description":"Free (JSON body: wallet, plus the scope of the call it authorizes: action list / read / delete, backup_id for read and delete, optional version): mint a short-TTL, single-use nonce whose signing_message names that action, backup and site, proving control for exactly one following wallet-signature-authenticated GET/DELETE /storage/backups call (query params: wallet, nonce, signature_b64, optional proof_method). A delete needs a delete-scoped challenge. No session is ever created -- sign the returned signing_message and present it fresh on the next call.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"wallet":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","action":"read","backup_id":"00000000-0000-1000-8000-000000000000"}}}}}},"/api/v1/x402/storage/auth/nonce":{"post":{"operationId":"post_api_v1_x402_storage_auth_nonce","summary":"Free (JSON body: wallet, plus the scope of the call it authorizes: action list / read / delete, backup_id for read and delete, optional version): mint a short-TTL, single-use nonce whose signing_message names that action, backup and site, proving control for exactly one following wallet-signature-authenticated GET/DELETE /storage/backups call (query params: wallet, nonce, signature_b64, optional proof_method). A delete needs a delete-scoped challenge. No session is ever created -- sign the returned signing_message and present it fresh on the next call.","description":"Free (JSON body: wallet, plus the scope of the call it authorizes: action list / read / delete, backup_id for read and delete, optional version): mint a short-TTL, single-use nonce whose signing_message names that action, backup and site, proving control for exactly one following wallet-signature-authenticated GET/DELETE /storage/backups call (query params: wallet, nonce, signature_b64, optional proof_method). A delete needs a delete-scoped challenge. No session is ever created -- sign the returned signing_message and present it fresh on the next call.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"wallet":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","action":"read","backup_id":"00000000-0000-1000-8000-000000000000"}}}}}},"/api/v1/x402/storage/backups":{"post":{"operationId":"post_api_v1_x402_storage_backups","summary":"Store one opaque backup blob (JSON body: base64 data, optional label; query param declared_size_bytes=<N>, capped at 10 MB, billed by the KB actually used, never rounded up to a whole MB; optional query param retention_days=<1-90>, default 90), priced at max($0.001, ceil(N/1KB) * $0.000001953125 per KB * retention_days/90). Overall remaining life is still capped at 90 days from now. Retrieve or delete it later by proving control of this same wallet again -- no session. Stored content is OPAQUE: never scanned, indexed, or acted on by us. Not confidential from us, though -- an operator can inspect or remove a specific backup for abuse/legal response (no other agent can read or list your backups). Encrypt sensitive data yourself before uploading if that matters to you -- see docs/x402-storage-encryption-guide.md for a copy-paste recipe. Need more than one version? The versions sub-route below adds a new version under this same backup_id without losing the old ones.","description":"Store one opaque backup blob (JSON body: base64 data, optional label; query param declared_size_bytes=<N>, capped at 10 MB, billed by the KB actually used, never rounded up to a whole MB; optional query param retention_days=<1-90>, default 90), priced at max($0.001, ceil(N/1KB) * $0.000001953125 per KB * retention_days/90). Overall remaining life is still capped at 90 days from now. Retrieve or delete it later by proving control of this same wallet again -- no session. Stored content is OPAQUE: never scanned, indexed, or acted on by us. Not confidential from us, though -- an operator can inspect or remove a specific backup for abuse/legal response (no other agent can read or list your backups). Encrypt sensitive data yourself before uploading if that matters to you -- see docs/x402-storage-encryption-guide.md for a copy-paste recipe. Need more than one version? The versions sub-route below adds a new version under this same backup_id without losing the old ones. Paid: price_usd='$0.000001953125' per KB, resource='x402-storage-backup-create'.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. The x402 payment offer (accepted assets, price, facilitator) is carried in the Payment-Required response header."}},"x-x402-paid":true,"x-x402-price-usd":"$0.000001953125","x-x402-price-unit":"KB","x-x402-resource":"x402-storage-backup-create","x-x402-supports-preview":false,"parameters":[{"name":"declared_size_bytes","in":"query","required":true,"schema":{"type":"integer"},"example":2048,"description":"The backup's decoded size in bytes; the price is computed from it."},{"name":"retention_days","in":"query","required":false,"schema":{"type":"integer"},"example":90,"description":"Retention term in days."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"data":"<base64>","label":"my-agent-state-backup"}}}}},"get":{"operationId":"get_api_v1_x402_storage_backups","summary":"Free, wallet-signature-authenticated (query params: wallet, nonce, signature_b64, optional proof_method, from the challenge above; optional query param limit): this wallet's own active, unexpired backups, newest first.","description":"Free, wallet-signature-authenticated (query params: wallet, nonce, signature_b64, optional proof_method, from the challenge above; optional query param limit): this wallet's own active, unexpired backups, newest first.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"Your address."},{"name":"nonce","in":"query","required":true,"schema":{"type":"string"},"example":"<nonce>","description":"From POST /api/v1/x402/storage/auth/nonce."},{"name":"signature_b64","in":"query","required":true,"schema":{"type":"string"},"example":"<base64 signature>","description":"Base64 signature of that response's signing_message by the wallet's key."},{"name":"proof_method","in":"query","required":false,"schema":{"type":"string"},"example":"signed_bytes","description":"signed_bytes (default) or legacy_message."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"example":10,"description":"Result cap, clamped server-side."}]}},"/api/v1/x402/storage/backups/6c84fb90-12c4-11e1-840d-7b25c5ee775a":{"get":{"operationId":"get_api_v1_x402_storage_backups_backup_id","summary":"Free, wallet-signature-authenticated, owner-only: one backup's metadata (including current_version) plus its CURRENT version's restored bytes (base64), sha256-verified against the hash taken at upload time. See the versions sub-routes below to fetch an older version instead.","description":"Free, wallet-signature-authenticated, owner-only: one backup's metadata (including current_version) plus its CURRENT version's restored bytes (base64), sha256-verified against the hash taken at upload time. See the versions sub-routes below to fetch an older version instead.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"Your address."},{"name":"nonce","in":"query","required":true,"schema":{"type":"string"},"example":"<nonce>","description":"From POST /api/v1/x402/storage/auth/nonce."},{"name":"signature_b64","in":"query","required":true,"schema":{"type":"string"},"example":"<base64 signature>","description":"Base64 signature of that response's signing_message by the wallet's key."},{"name":"proof_method","in":"query","required":false,"schema":{"type":"string"},"example":"signed_bytes","description":"signed_bytes (default) or legacy_message."}]},"delete":{"operationId":"delete_api_v1_x402_storage_backups_backup_id","summary":"Free, wallet-signature-authenticated, owner-only: delete one backup outright, every version included (row marked deleted, then connector bytes removed).","description":"Free, wallet-signature-authenticated, owner-only: delete one backup outright, every version included (row marked deleted, then connector bytes removed).","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"Your address."},{"name":"nonce","in":"query","required":true,"schema":{"type":"string"},"example":"<nonce>","description":"From POST /api/v1/x402/storage/auth/nonce."},{"name":"signature_b64","in":"query","required":true,"schema":{"type":"string"},"example":"<base64 signature>","description":"Base64 signature of that response's signing_message by the wallet's key."},{"name":"proof_method","in":"query","required":false,"schema":{"type":"string"},"example":"signed_bytes","description":"signed_bytes (default) or legacy_message."}]}},"/api/v1/x402/storage/backups/6c84fb90-12c4-11e1-840d-7b25c5ee775a/renew":{"post":{"operationId":"post_api_v1_x402_storage_backups_backup_id_renew","summary":"Extend an existing backup's retrieval window by one full 90-day term, capped at 90 days remaining from now (no request body; query param wallet=<the owning address>, a lookup hint only, never proof of ownership), priced from the backup's already-stored size at max($0.001, ceil(size/1KB) * $0.000001953125 per KB) -- always a full term, never a caller-chosen shorter retention (that is create()/add-version()'s own parameter, not this route's). Works during the 2-day grace window after expiry. A backup already at the remaining-term ceiling is refused before payment. Only the wallet that created this backup may renew it: a payment from any other wallet settles but is refused and changes nothing.","description":"Extend an existing backup's retrieval window by one full 90-day term, capped at 90 days remaining from now (no request body; query param wallet=<the owning address>, a lookup hint only, never proof of ownership), priced from the backup's already-stored size at max($0.001, ceil(size/1KB) * $0.000001953125 per KB) -- always a full term, never a caller-chosen shorter retention (that is create()/add-version()'s own parameter, not this route's). Works during the 2-day grace window after expiry. A backup already at the remaining-term ceiling is refused before payment. Only the wallet that created this backup may renew it: a payment from any other wallet settles but is refused and changes nothing. Paid: price_usd='$0.000001953125' per KB, resource='x402-storage-backup-renew'.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. The x402 payment offer (accepted assets, price, facilitator) is carried in the Payment-Required response header."}},"x-x402-paid":true,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id/renew","x-x402-price-usd":"$0.000001953125","x-x402-price-unit":"KB","x-x402-resource":"x402-storage-backup-renew","x-x402-supports-preview":false,"parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"The address that created this backup -- a lookup hint, never proof of ownership."}]}},"/api/v1/x402/storage/backups/6c84fb90-12c4-11e1-840d-7b25c5ee775a/versions":{"post":{"operationId":"post_api_v1_x402_storage_backups_backup_id_versions","summary":"Store a NEW version's bytes under an EXISTING backup_id without discarding the versions already stored under it (query param declared_size_bytes=<N>, billed by the KB actually used; optional query param retention_days=<1-90>, default 90, priced identically to the initial store: max($0.001, ceil(N/1KB) * $0.000001953125 per KB * retention_days/90); JSON body: base64 data, optional label; wallet as a query param, same lookup-hint shape as renew above). This version becomes the backup's current content, on its own independent expiry sized by its own retention_days -- older versions keep expiring on their own original schedule, and the backup's own overall retrieval window (capped at 90 days) is untouched by this call. Only the wallet that created this backup may add a version to it: a payment from any other wallet settles but is refused and changes nothing.","description":"Store a NEW version's bytes under an EXISTING backup_id without discarding the versions already stored under it (query param declared_size_bytes=<N>, billed by the KB actually used; optional query param retention_days=<1-90>, default 90, priced identically to the initial store: max($0.001, ceil(N/1KB) * $0.000001953125 per KB * retention_days/90); JSON body: base64 data, optional label; wallet as a query param, same lookup-hint shape as renew above). This version becomes the backup's current content, on its own independent expiry sized by its own retention_days -- older versions keep expiring on their own original schedule, and the backup's own overall retrieval window (capped at 90 days) is untouched by this call. Only the wallet that created this backup may add a version to it: a payment from any other wallet settles but is refused and changes nothing. Paid: price_usd='$0.000001953125' per KB, resource='x402-storage-backup-add-version'.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. The x402 payment offer (accepted assets, price, facilitator) is carried in the Payment-Required response header."}},"x-x402-paid":true,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id/versions","x-x402-price-usd":"$0.000001953125","x-x402-price-unit":"KB","x-x402-resource":"x402-storage-backup-add-version","x-x402-supports-preview":false,"parameters":[{"name":"declared_size_bytes","in":"query","required":true,"schema":{"type":"integer"},"example":2048,"description":"The backup's decoded size in bytes; the price is computed from it."},{"name":"retention_days","in":"query","required":false,"schema":{"type":"integer"},"example":90,"description":"Retention term in days."},{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"The address that created this backup -- a lookup hint, never proof of ownership."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"data":"<base64>","label":"my-agent-state-backup-v2"}}}}},"get":{"operationId":"get_api_v1_x402_storage_backups_backup_id_versions","summary":"Free, wallet-signature-authenticated, owner-only (optional query param limit): metadata (version number, size, content_hash, created_at/expires_at) for every version of one backup, newest-version first.","description":"Free, wallet-signature-authenticated, owner-only (optional query param limit): metadata (version number, size, content_hash, created_at/expires_at) for every version of one backup, newest-version first.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id/versions","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"Your address."},{"name":"nonce","in":"query","required":true,"schema":{"type":"string"},"example":"<nonce>","description":"From POST /api/v1/x402/storage/auth/nonce."},{"name":"signature_b64","in":"query","required":true,"schema":{"type":"string"},"example":"<base64 signature>","description":"Base64 signature of that response's signing_message by the wallet's key."},{"name":"proof_method","in":"query","required":false,"schema":{"type":"string"},"example":"signed_bytes","description":"signed_bytes (default) or legacy_message."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"example":10,"description":"Result cap, clamped server-side."}]}},"/api/v1/x402/storage/backups/6c84fb90-12c4-11e1-840d-7b25c5ee775a/versions/1":{"get":{"operationId":"get_api_v1_x402_storage_backups_backup_id_versions_version","summary":"Free, wallet-signature-authenticated, owner-only: one specific version's metadata plus its restored bytes (base64), sha256-verified.","description":"Free, wallet-signature-authenticated, owner-only: one specific version's metadata plus its restored bytes (base64), sha256-verified.","tags":["storage"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false,"x-x402-path-template":"/api/v1/x402/storage/backups/:backup_id/versions/:version","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"},"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","description":"Your address."},{"name":"nonce","in":"query","required":true,"schema":{"type":"string"},"example":"<nonce>","description":"From POST /api/v1/x402/storage/auth/nonce."},{"name":"signature_b64","in":"query","required":true,"schema":{"type":"string"},"example":"<base64 signature>","description":"Base64 signature of that response's signing_message by the wallet's key."},{"name":"proof_method","in":"query","required":false,"schema":{"type":"string"},"example":"signed_bytes","description":"signed_bytes (default) or legacy_message."}]}},"/.well-known/x402":{"get":{"summary":"This marketplace's discovery manifest -- the same document as GET /api/v1/x402, served at the well-known URI agents and directories look for first.","description":"This marketplace's discovery manifest -- the same document as GET /api/v1/x402, served at the well-known URI agents and directories look for first.","tags":["meta"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false}},"/openapi.json":{"get":{"summary":"This OpenAPI document.","description":"This OpenAPI document.","tags":["meta"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-x402-paid":false}}}}