{"openapi":"3.1.0","info":{"title":"CarryLens API","version":"0.2.1","description":"Live, cost-aware cross-venue perpetual-funding screens for trading agents. x402 payment; no API key or account.","x-guidance":"Call GET /v1/perps/preview for free proof. For paid analysis, choose notionalUsd per matched leg, holdingHours, and totalCostBps; then call pulse for three pairs, radar for fifteen, or report for regime and risk context. Treat projected net funding as a screen, not guaranteed profit.","contact":{"url":"https://carry-lens-api.netlify.app"}},"servers":[{"url":"https://carry-lens-api.netlify.app"}],"tags":[{"name":"free","description":"No-payment discovery and product proof."},{"name":"paid","description":"x402-protected Base USDC resources."}],"paths":{"/v1/perps/preview":{"get":{"tags":["free"],"security":[],"summary":"Free live carry teaser","description":"Shows one current cost-aware opportunity without revealing its venue pair.","parameters":[{"name":"notionalUsd","description":"Matched USD notional on each hedged leg.","schema":{"type":"number","minimum":100,"maximum":100000000,"default":10000},"in":"query","required":false},{"name":"holdingHours","description":"Expected time the matched position remains open.","schema":{"type":"number","minimum":1,"maximum":2160,"default":168},"in":"query","required":false},{"name":"totalCostBps","description":"All-in entry and planned-exit fees plus slippage, against one leg's notional.","schema":{"type":"number","minimum":0,"maximum":2000,"default":20},"in":"query","required":false}],"responses":{"200":{"description":"Live teaser.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid cost assumptions."}}}},"/v1/perps/pulse":{"get":{"tags":["paid"],"summary":"Cost-aware carry pulse","description":"Three ranked venue pairs with projected gross, assumed costs, projected net funding, break-even time, liquidity tier, and benchmark context.","operationId":"cost-aware_carry_pulse","parameters":[{"name":"notionalUsd","description":"Matched USD notional on each hedged leg.","schema":{"type":"number","minimum":100,"maximum":100000000,"default":10000},"in":"query","required":false},{"name":"holdingHours","description":"Expected time the matched position remains open.","schema":{"type":"number","minimum":1,"maximum":2160,"default":168},"in":"query","required":false},{"name":"totalCostBps","description":"All-in entry and planned-exit fees plus slippage, against one leg's notional.","schema":{"type":"number","minimum":0,"maximum":2000,"default":20},"in":"query","required":false}],"responses":{"200":{"description":"Fresh cost-aware perpetual-funding analysis.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid cost assumptions; no payment is requested.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. Requirements are encoded in Payment-Required.","headers":{"Payment-Required":{"description":"Base64-encoded x402 v2 payment requirements.","schema":{"type":"string"}}}},"502":{"description":"Fresh upstream data could not be produced."}},"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]}}},"/v1/perps/radar":{"get":{"tags":["paid"],"summary":"Cross-venue carry radar","description":"Fifteen cost-aware opportunities across interval-normalized funding predictions.","operationId":"cross-venue_carry_radar","parameters":[{"name":"notionalUsd","description":"Matched USD notional on each hedged leg.","schema":{"type":"number","minimum":100,"maximum":100000000,"default":10000},"in":"query","required":false},{"name":"holdingHours","description":"Expected time the matched position remains open.","schema":{"type":"number","minimum":1,"maximum":2160,"default":168},"in":"query","required":false},{"name":"totalCostBps","description":"All-in entry and planned-exit fees plus slippage, against one leg's notional.","schema":{"type":"number","minimum":0,"maximum":2000,"default":20},"in":"query","required":false}],"responses":{"200":{"description":"Fresh cost-aware perpetual-funding analysis.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid cost assumptions; no payment is requested.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. Requirements are encoded in Payment-Required.","headers":{"Payment-Required":{"description":"Base64-encoded x402 v2 payment requirements.","schema":{"type":"string"}}}},"502":{"description":"Fresh upstream data could not be produced."}},"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]}}},"/v1/perps/report":{"get":{"tags":["paid"],"summary":"Carry risk report","description":"Cost-aware opportunities plus regime, breadth, basis, crowding, open interest, persistence, and risk flags.","operationId":"carry_risk_report","parameters":[{"name":"notionalUsd","description":"Matched USD notional on each hedged leg.","schema":{"type":"number","minimum":100,"maximum":100000000,"default":10000},"in":"query","required":false},{"name":"holdingHours","description":"Expected time the matched position remains open.","schema":{"type":"number","minimum":1,"maximum":2160,"default":168},"in":"query","required":false},{"name":"totalCostBps","description":"All-in entry and planned-exit fees plus slippage, against one leg's notional.","schema":{"type":"number","minimum":0,"maximum":2000,"default":20},"in":"query","required":false}],"responses":{"200":{"description":"Fresh cost-aware perpetual-funding analysis.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid cost assumptions; no payment is requested.","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required. Requirements are encoded in Payment-Required.","headers":{"Payment-Required":{"description":"Base64-encoded x402 v2 payment requirements.","schema":{"type":"string"}}}},"502":{"description":"Fresh upstream data could not be produced."}},"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.030000"},"protocols":[{"x402":{}}]}}},"/health":{"get":{"tags":["free"],"security":[],"summary":"Health check","responses":{"200":{"description":"Service is running."}}}},"/.well-known/x402":{"get":{"tags":["free"],"security":[],"summary":"x402 resource manifest","responses":{"200":{"description":"Machine-readable x402 resource catalog."}}}}},"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"Payment-Signature","description":"x402 v2 exact-payment authorization. Make an unsigned request first to receive Payment-Required."}}}}