{"openapi":"3.1.0","info":{"title":"Peerlytics public activity and aggregate files","version":"1.0.0","contact":{"name":"Galleon Labs","url":"https://andrewwilkinson.io","email":"gm@galleonlabs.io"},"description":"Published Peer protocol route aggregates. Per-request USDC on Base via x402; no accounts or API keys. Discovery exposes coverage and schemas, never paid rows. Public activity is available at /api/explorer/latest. Versioning: the former /api/v1 API is retired and returns HTTP 410 with a Link successor-version header pointing to /api/mcp. Current public and paid paths are unversioned; the OpenAPI info.version identifies this document, not an active /v1 API. No future deprecation schedule is declared."},"servers":[{"url":"https://peerlytics.xyz"}],"externalDocs":{"url":"https://peerlytics.xyz/explorer/data"},"paths":{"/api/explorer/latest":{"get":{"operationId":"peerlytics_latest_activity","summary":"Public Peer protocol activity on Base","description":"Read-only activity and summary used by the homepage. Public cache hits expose RateLimit-Limit only: a cached remaining/reset value would describe another request. Origin errors expose the current instance budget. Legacy X-RateLimit fields are origin snapshots and can be cached; they are not a live quota balance. The in-memory budget is shared with /api/indexer and /api/explorer/search/suggest (60-request threshold) and is not a global quota across instances.","security":[],"parameters":[{"name":"limit","in":"query","description":"Clamped to 1–250; omitted or zero uses 10.","schema":{"type":"integer","default":10}},{"name":"filter","in":"query","description":"Unknown values use all.","schema":{"type":"string","enum":["all","fills","intents","deposits","delegations","protection"],"default":"all"}},{"name":"address","in":"query","schema":{"type":"string"}},{"name":"deposit","in":"query","schema":{"type":"string"}},{"name":"intent","in":"query","schema":{"type":"string"}},{"name":"integrator","in":"query","schema":{"type":"string"}},{"name":"verifier","in":"query","schema":{"type":"string"}},{"name":"platform","in":"query","schema":{"type":"string"}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"vault","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Activity with a protocol summary. A retained response can include data.stale=true and X-Peerlytics-Stale: 1.","headers":{"RateLimit-Limit":{"description":"Existing per-instance client limit: 120 origin requests per 60-second window, shared with /api/indexer and /api/explorer/search/suggest (which rejects at its existing 60-request threshold in the same window). Cache hits do not consume the origin budget.","schema":{"type":"integer","const":120}}},"content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","required":["events","summary"],"properties":{"events":{"type":"array","items":{"type":"object","required":["id","type","timestamp"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"timestamp":{"type":"string"}}}},"summary":{"type":"object","description":"Protocol activity summary, including its generatedAt source timestamp."},"stale":{"type":"boolean"}}}}}}}},"429":{"description":"Origin client limit or upstream rate limit reached.","headers":{"RateLimit-Limit":{"description":"Existing per-instance client limit: 120 origin requests per 60-second window, shared with /api/indexer and /api/explorer/search/suggest (which rejects at its existing 60-request threshold in the same window). Cache hits do not consume the origin budget.","schema":{"type":"integer","const":120}},"RateLimit-Remaining":{"description":"Remaining origin requests in the current instance's window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current window resets, measured when the origin checks admission.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds to wait when the local client budget is exhausted; may be absent for upstream rate limits.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Limit":{"description":"Existing per-instance client limit: 120 origin requests per 60-second window, shared with /api/indexer and /api/explorer/search/suggest (which rejects at its existing 60-request threshold in the same window). Cache hits do not consume the origin budget.","schema":{"type":"integer","const":120}},"RateLimit-Remaining":{"description":"Remaining origin requests in the current instance's window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current window resets, measured when the origin checks admission.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Indexer unavailable or request timed out.","headers":{"RateLimit-Limit":{"description":"Existing per-instance client limit: 120 origin requests per 60-second window, shared with /api/indexer and /api/explorer/search/suggest (which rejects at its existing 60-request threshold in the same window). Cache hits do not consume the origin budget.","schema":{"type":"integer","const":120}},"RateLimit-Remaining":{"description":"Remaining origin requests in the current instance's window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current window resets, measured when the origin checks admission.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/v1":{"get":{"operationId":"peerlytics_retired_v1_get","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"head":{"operationId":"peerlytics_retired_v1_head","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}}}}},"post":{"operationId":"peerlytics_retired_v1_post","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"put":{"operationId":"peerlytics_retired_v1_put","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"patch":{"operationId":"peerlytics_retired_v1_patch","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"delete":{"operationId":"peerlytics_retired_v1_delete","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"options":{"operationId":"peerlytics_retired_v1_options","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}}},"/api/v1/{path}":{"parameters":[{"name":"path","in":"path","required":true,"description":"Retired endpoint suffix. This template describes one segment; deeper /api/v1 descendants (with slashes in the suffix) also return the same 410 response.","schema":{"type":"string"}}],"get":{"operationId":"peerlytics_retired_v1_path_get","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"head":{"operationId":"peerlytics_retired_v1_path_head","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}}}}},"post":{"operationId":"peerlytics_retired_v1_path_post","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"put":{"operationId":"peerlytics_retired_v1_path_put","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"patch":{"operationId":"peerlytics_retired_v1_path_patch","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"delete":{"operationId":"peerlytics_retired_v1_path_delete","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}},"options":{"operationId":"peerlytics_retired_v1_path_options","deprecated":true,"security":[],"responses":{"410":{"description":"Retired API. The existing path returns 410 with links to current HTTP aggregate datasets and the free activity/receipt MCP; it is not an alias for current data endpoints. Read the catalogue for coverage and free or paid access limits.","headers":{"Link":{"description":"MCP endpoint with rel=successor-version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetiredApiError"}}}}}}},"/api/data/paid/liquidity-depth/2026-10.csv":{"get":{"operationId":"liquidity_depth_2026_10_csv","summary":"Liquidity depth history · 2026-10 · CSV","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.25"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-10-14T10:54:44.529Z","to":"2026-10-31T23:00:59.025Z","rows":14406,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"text/csv":{"schema":{"type":"string"}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/liquidity-depth/2026-10.json":{"get":{"operationId":"liquidity_depth_2026_10_json","summary":"Liquidity depth history · 2026-10 · JSON","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.25"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-10-14T10:54:44.529Z","to":"2026-10-31T23:00:59.025Z","rows":14406,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"application/json":{"schema":{"type":"object","properties":{"dataset":{"type":"string","const":"liquidity-depth"},"file":{"type":"string","const":"2026-10"},"generatedAt":{"type":"string","format":"date-time"},"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"observed_at":{"type":["string","number","null"]},"platform_id":{"type":["string","number","null"]},"currency":{"type":["string","number","null"]},"listed_usdc":{"type":["string","number","null"]},"deposits":{"type":["string","number","null"]},"sellers":{"type":["string","number","null"]},"best_premium_pct":{"type":["string","number","null"]},"largest_order_within_2pct_usdc":{"type":["string","number","null"]},"usdc_within_0_5pct":{"type":["string","number","null"]},"sellers_within_0_5pct":{"type":["string","number","null"]},"usdc_within_1pct":{"type":["string","number","null"]},"sellers_within_1pct":{"type":["string","number","null"]},"usdc_within_2pct":{"type":["string","number","null"]},"sellers_within_2pct":{"type":["string","number","null"]},"usdc_within_3pct":{"type":["string","number","null"]},"sellers_within_3pct":{"type":["string","number","null"]}},"additionalProperties":false}}},"required":["dataset","file","generatedAt","columns","rows"],"additionalProperties":false}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/liquidity-depth/2026-11.csv":{"get":{"operationId":"liquidity_depth_2026_11_csv","summary":"Liquidity depth history · 2026-11 · CSV","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.25"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-11-01T00:01:00.968Z","to":"2026-11-03T01:00:50.111Z","rows":1702,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"text/csv":{"schema":{"type":"string"}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/liquidity-depth/2026-11.json":{"get":{"operationId":"liquidity_depth_2026_11_json","summary":"Liquidity depth history · 2026-11 · JSON","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.25"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-11-01T00:01:00.968Z","to":"2026-11-03T01:00:50.111Z","rows":1702,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"application/json":{"schema":{"type":"object","properties":{"dataset":{"type":"string","const":"liquidity-depth"},"file":{"type":"string","const":"2026-11"},"generatedAt":{"type":"string","format":"date-time"},"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"observed_at":{"type":["string","number","null"]},"platform_id":{"type":["string","number","null"]},"currency":{"type":["string","number","null"]},"listed_usdc":{"type":["string","number","null"]},"deposits":{"type":["string","number","null"]},"sellers":{"type":["string","number","null"]},"best_premium_pct":{"type":["string","number","null"]},"largest_order_within_2pct_usdc":{"type":["string","number","null"]},"usdc_within_0_5pct":{"type":["string","number","null"]},"sellers_within_0_5pct":{"type":["string","number","null"]},"usdc_within_1pct":{"type":["string","number","null"]},"sellers_within_1pct":{"type":["string","number","null"]},"usdc_within_2pct":{"type":["string","number","null"]},"sellers_within_2pct":{"type":["string","number","null"]},"usdc_within_3pct":{"type":["string","number","null"]},"sellers_within_3pct":{"type":["string","number","null"]}},"additionalProperties":false}}},"required":["dataset","file","generatedAt","columns","rows"],"additionalProperties":false}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/liquidity-depth/all.csv":{"get":{"operationId":"liquidity_depth_all_csv","summary":"Liquidity depth history · all · CSV","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-10-14T10:54:44.529Z","to":"2026-11-03T01:00:50.111Z","rows":16108,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"text/csv":{"schema":{"type":"string"}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/liquidity-depth/all.json":{"get":{"operationId":"liquidity_depth_all_json","summary":"Liquidity depth history · all · JSON","description":"Hourly observations of public USDC liquidity per payment platform and currency: listed depth, sellers, best premium, largest order near mid-market and depth within 0.5%, 1%, 2% and 3% of mid-market. Past hours cannot be reconstructed, so coverage starts at the first observation.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2026-10-14T10:54:44.529Z","to":"2026-11-03T01:00:50.111Z","rows":16108,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"application/json":{"schema":{"type":"object","properties":{"dataset":{"type":"string","const":"liquidity-depth"},"file":{"type":"string","const":"all"},"generatedAt":{"type":"string","format":"date-time"},"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"observed_at":{"type":["string","number","null"]},"platform_id":{"type":["string","number","null"]},"currency":{"type":["string","number","null"]},"listed_usdc":{"type":["string","number","null"]},"deposits":{"type":["string","number","null"]},"sellers":{"type":["string","number","null"]},"best_premium_pct":{"type":["string","number","null"]},"largest_order_within_2pct_usdc":{"type":["string","number","null"]},"usdc_within_0_5pct":{"type":["string","number","null"]},"sellers_within_0_5pct":{"type":["string","number","null"]},"usdc_within_1pct":{"type":["string","number","null"]},"sellers_within_1pct":{"type":["string","number","null"]},"usdc_within_2pct":{"type":["string","number","null"]},"sellers_within_2pct":{"type":["string","number","null"]},"usdc_within_3pct":{"type":["string","number","null"]},"sellers_within_3pct":{"type":["string","number","null"]}},"additionalProperties":false}}},"required":["dataset","file","generatedAt","columns","rows"],"additionalProperties":false}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/seller-rates-weekly/all.csv":{"get":{"operationId":"seller_rates_weekly_all_csv","summary":"Weekly seller rates · all · CSV","description":"Realised seller premiums against the raw Peer onchain oracle at each fill's signal block for every ISO week since the first Base fill, per route and per currency. Route-weeks that fail the publishing rules keep only the reason; a currency-week aggregates only that week's published routes, so it never reveals a withheld one.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2025-01-20","to":"2026-10-26","rows":1402,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"text/csv":{"schema":{"type":"string"}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/paid/seller-rates-weekly/all.json":{"get":{"operationId":"seller_rates_weekly_all_json","summary":"Weekly seller rates · all · JSON","description":"Realised seller premiums against the raw Peer onchain oracle at each fill's signal block for every ISO week since the first Base fill, per route and per currency. Route-weeks that fail the publishing rules keep only the reason; a currency-week aggregates only that week's published routes, so it never reveals a withheld one.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"x-peerlytics-coverage":{"from":"2025-01-20","to":"2026-10-26","rows":1402,"generatedAt":"2026-11-03T01:00:02.745Z"},"responses":{"200":{"description":"Stored gzip file after successful payment. Only published aggregate rows; no per-fill or per-deposit figures.","content":{"application/json":{"schema":{"type":"object","properties":{"dataset":{"type":"string","const":"seller-rates-weekly"},"file":{"type":"string","const":"all"},"generatedAt":{"type":"string","format":"date-time"},"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"week":{"type":["string","number","null"]},"week_start":{"type":["string","number","null"]},"scope":{"type":["string","number","null"]},"reference_id":{"type":["string","number","null"]},"platform_id":{"type":["string","number","null"]},"currency":{"type":["string","number","null"]},"status":{"type":["string","number","null"]},"withheld_reasons":{"type":["string","number","null"]},"fills":{"type":["string","number","null"]},"usdc_volume":{"type":["string","number","null"]},"distinct_sellers":{"type":["string","number","null"]},"median_premium_pct":{"type":["string","number","null"]},"p25_premium_pct":{"type":["string","number","null"]},"p75_premium_pct":{"type":["string","number","null"]},"at_or_below_mid_share_pct":{"type":["string","number","null"]},"median_signal_to_fulfil_seconds":{"type":["string","number","null"]},"p90_signal_to_fulfil_seconds":{"type":["string","number","null"]},"galleon_delegate_fill_share_pct":{"type":["string","number","null"]}},"additionalProperties":false}}},"required":["dataset","file","generatedAt","columns","rows"],"additionalProperties":false}}}},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema; the JSON body describes file coverage and price.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown, unpublished or vanished file; no settlement."},"503":{"description":"Manifest or payment service unavailable."}}}},"/api/data/best-sell-rate":{"get":{"operationId":"best_sell_rate","summary":"Best USDC sell rate by currency and payment platform","description":"Best rate to sell USDC for fiat, by currency and optional payment app (Revolut, Wise, Venmo, PayPal...). Ranks Peer (ZKP2P) routes on Base by the median premium sellers actually received over mid-market in the last 30 days, with live listed liquidity and the best listed premium. Returns a ready USDCtoFiat sell link for the top route. For agents choosing the best USDC off-ramp rate. Aggregates only; not an executable quote.","parameters":[{"in":"query","name":"currency","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Fiat currency to receive, ISO 4217 (e.g. EUR, GBP, USD)."}},{"in":"query","name":"platform","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]{1,32}$","description":"Optional payment platform id (e.g. revolut, wise, venmo, paypal)."}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"description":"Omit to receive an unpaid 402 quote. An x402 client supplies the signed payment payload when retrying the request.","schema":{"type":"string"}}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"x-peerlytics-payment":{"network":"eip155:8453","asset":"USDC","payTo":"0xC141Cbe4f4a9CAbc3cc78159a9268a4e008922CD"},"responses":{"200":{"description":"Routes ranked by 30-day median realised seller premium, with live listed depth and a USDCtoFiat sell link.","content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string"},"platform":{"type":["string","null"]},"best":{"anyOf":[{"type":"object","properties":{"platform":{"type":"string"},"platformName":{"type":"string"},"currency":{"type":"string"},"realised30d":{"type":["object","null"],"properties":{"premiumPct":{"type":"object","properties":{"median":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["median","p25","p75"]},"fills":{"type":"integer"},"usdcVolume":{"type":"number"},"sellers":{"type":"integer"}}},"sellerRatesStatus":{"type":"string","enum":["published","withheld","absent","unavailable"]},"live":{"type":["object","null"],"properties":{"listedUsdc":{"type":"number"},"sellers":{"type":["integer","null"]},"bestListedPremiumPct":{"type":["number","null"]},"within2PctUsdc":{"type":["number","null"]}}},"sellUrl":{"type":"string","format":"uri"}},"required":["platform","currency","realised30d","sellerRatesStatus","live","sellUrl"]},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string"},"platformName":{"type":"string"},"currency":{"type":"string"},"realised30d":{"type":["object","null"],"properties":{"premiumPct":{"type":"object","properties":{"median":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["median","p25","p75"]},"fills":{"type":"integer"},"usdcVolume":{"type":"number"},"sellers":{"type":"integer"}}},"sellerRatesStatus":{"type":"string","enum":["published","withheld","absent","unavailable"]},"live":{"type":["object","null"],"properties":{"listedUsdc":{"type":"number"},"sellers":{"type":["integer","null"]},"bestListedPremiumPct":{"type":["number","null"]},"within2PctUsdc":{"type":["number","null"]}}},"sellUrl":{"type":"string","format":"uri"}},"required":["platform","currency","realised30d","sellerRatesStatus","live","sellUrl"]}},"sellUrl":{"type":"string","format":"uri"},"window":{"type":["object","null"]},"liveStatus":{"type":"string","enum":["fresh","stale","truncated","unavailable"]},"liveAsOf":{"type":["string","null"]},"method":{"type":"string"},"source":{"type":"string","format":"uri"}},"required":["currency","platform","best","routes","sellUrl"]}}}},"400":{"description":"Malformed currency or platform; no 402 and no settlement."},"402":{"description":"Payment required. The PAYMENT-REQUIRED header carries the authoritative x402 v2 terms and Bazaar input schema.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 PaymentRequired JSON."}},"content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No Peer route for this currency and platform; no settlement."},"503":{"description":"Source data or payment service unavailable."}}}}},"components":{"securitySchemes":{},"schemas":{"ApiErrorResponse":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["status","code","message","retryable"],"properties":{"status":{"type":"integer"},"code":{"type":"string","enum":["RATE_LIMITED","INDEXER_TIMEOUT","INVALID_INPUT","NOT_FOUND","UNAUTHORIZED","SERVICE_UNAVAILABLE","INTERNAL"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}},"meta":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"integer","description":"Unix time in milliseconds."}}}}},"RetiredApiError":{"type":"object","required":["error","message","mcp","docs","datasets"],"properties":{"error":{"type":"string","const":"gone"},"message":{"type":"string"},"mcp":{"type":"string","format":"uri"},"docs":{"type":"string","format":"uri"},"datasets":{"type":"object","description":"Current HTTP aggregate sources. These links do not restore retired endpoints or bypass dataset coverage and access limits.","required":["docs","catalog","reports","weeklyCsv","sellerRates","sellerRatesCsv"],"properties":{"docs":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"},"reports":{"type":"string","format":"uri"},"weeklyCsv":{"type":"string","format":"uri"},"sellerRates":{"type":"string","format":"uri"},"sellerRatesCsv":{"type":"string","format":"uri"}}}}}}}}