{"openapi":"3.1.0","info":{"title":"canix402 API","version":"1.0.0","description":"x402-gated Algorand DeFi opportunities data API. Numeric yield/USD fields (apy, apr, tvlUsd) are returned with a standard precision of 6 decimal places, extended up to 12 decimal places only when needed to represent small non-zero values. Asset decimals are always sourced on-chain from algod.","contact":{"name":"Neon Forge Ltd","email":"kieran@neonforge.ltd","url":"https://canix402.compx.io"},"x-guidance":"Use the gateway base URL in servers[0]. Fetch /discovery and /openapi.json before integrating. Paid routes return HTTP 402 with PAYMENT-REQUIRED; sign a USDC ASA transfer client-side and retry with PAYMENT-SIGNATURE. Human and LLM docs: https://canix402.compx.io/llms.txt","x-precision":{"fields":["apy","apr","tvlUsd"],"defaultDecimalPlaces":6,"maxDecimalPlaces":12,"notes":"Values are rounded to 6 decimal places by default; precision is extended up to 12 decimal places when 6 would collapse a small non-zero value to zero."}},"servers":[{"url":"https://canix402-api.compx.io"}],"x-discovery":{"docsUrl":"https://canix402.compx.io/x402","llmsTxtUrl":"https://canix402.compx.io/llms.txt"},"paths":{"/health":{"get":{"summary":"Service health check","tags":["system"],"security":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"examples":{"default":{"$ref":"#/components/examples/HealthResponseSample"}}}}}}}},"/metadata":{"get":{"summary":"Service metadata and policy surface","tags":["system","discovery"],"security":[],"responses":{"200":{"description":"Metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponse"},"examples":{"default":{"$ref":"#/components/examples/MetadataResponseSample"}}}}}}}},"/discovery":{"get":{"summary":"Machine-readable endpoint catalog for agents","tags":["discovery","agents"],"security":[],"responses":{"200":{"description":"Discovery document","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryResponse"},"examples":{"default":{"$ref":"#/components/examples/DiscoveryResponseSample"}}}}}}}},"/openapi.json":{"get":{"summary":"OpenAPI contract document","tags":["discovery","openapi"],"security":[],"responses":{"200":{"description":"OpenAPI JSON","content":{"application/json":{"schema":{"type":"object","description":"This OpenAPI 3.1 document."}}}}}}},"/favicon.ico":{"get":{"summary":"API favicon for directory indexing","tags":["system","discovery"],"security":[],"responses":{"200":{"description":"Favicon image","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}}}}},"/favicon.png":{"get":{"summary":"API favicon image","tags":["system","discovery"],"security":[],"responses":{"200":{"description":"Favicon image","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}}}}},"/.well-known/x402.json":{"get":{"summary":"x402 discovery manifest for agent and directory indexing","tags":["discovery","agents","x402"],"security":[],"responses":{"200":{"description":"x402 discovery manifest","content":{"application/json":{"schema":{"type":"object","required":["service","name","version","description","x402Version","docsUrl","llmsTxtUrl","openapiUrl","discoveryUrl","facilitator","chains","resources"],"properties":{"service":{"type":"string","const":"canix402"},"name":{"type":"string","const":"canix402"},"version":{"type":"string"},"description":{"type":"string"},"x402Version":{"type":"integer","const":2},"docsUrl":{"type":"string","format":"uri"},"llmsTxtUrl":{"type":"string","format":"uri"},"openapiUrl":{"type":"string","format":"uri"},"discoveryUrl":{"type":"string","format":"uri"},"facilitator":{"type":"string","format":"uri"},"chains":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","const":"algorand"},"network":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","const":"USDC"},"assetId":{"type":"string"},"decimals":{"type":"integer","const":6}}}}}}},"resources":{"type":"array","items":{"type":"object","required":["id","method","path","url","description","price","x402"],"properties":{"id":{"type":"string"},"method":{"type":"string","const":"GET"},"path":{"type":"string"},"url":{"type":"string","format":"uri"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"price":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string","const":"USDC"},"network":{"type":"string"},"asset":{"type":"string"}}},"x402":{"type":"object"}}}}}},"examples":{"default":{"$ref":"#/components/examples/X402ManifestSample"}}}}}}}},"/.well-known/x402":{"get":{"summary":"x402 discovery fan-out document","tags":["discovery","agents","x402"],"security":[],"responses":{"200":{"description":"Paid resource URL list for directory registration","content":{"application/json":{"schema":{"type":"object","required":["version","resources"],"properties":{"version":{"type":"integer","const":1},"resources":{"type":"array","items":{"type":"string","format":"uri"}}}}}}}}}},"/opportunities":{"get":{"summary":"Top 10 aggregated DeFi opportunities ranked by APY","description":"Returns ranked Algorand DeFi yield opportunities across supported protocols including Tinyman, Pact, Folks Finance, CompX, and Dork.fi. Use when an agent needs to compare APY/APR, TVL, asset pairs, opportunity type, protocol, source freshness, and caveats before presenting or ranking yield options. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities"],"parameters":[{"name":"protocol","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":10}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}},{"name":"includeInactive","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Opportunity list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitiesListResponse"},"examples":{"default":{"$ref":"#/components/examples/AggregateOpportunitiesSample"}}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"500":{"$ref":"#/components/responses/InternalError"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"x-x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.01"}}}},"/opportunities/search":{"get":{"summary":"Caller-filtered opportunities across supported platforms","description":"Returns Algorand DeFi opportunities filtered by platform, opportunity type, APY range, and TVL threshold across supported sources. Use when an agent needs targeted discovery such as high-yield liquidity pools, lending markets, protocol-specific yield, or minimum-liquidity opportunities on Algorand. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities","search"],"parameters":[{"name":"platform","in":"query","schema":{"type":"string","description":"Comma-separated list of platforms."}},{"name":"type","in":"query","schema":{"type":"string","description":"Comma-separated list of opportunity types."}},{"name":"minApy","in":"query","schema":{"type":"number"}},{"name":"maxApy","in":"query","schema":{"type":"number"}},{"name":"minTvlUsd","in":"query","schema":{"type":"number","minimum":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}},{"name":"includeInactive","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Filtered opportunity list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitiesListResponse"},"examples":{"default":{"$ref":"#/components/examples/FilteredOpportunitiesSample"}}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"500":{"$ref":"#/components/responses/InternalError"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"x-x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.01"}}}},"/opportunities/personalized":{"get":{"summary":"Top opportunities tuned to a wallet's held assets","description":"Returns Algorand DeFi opportunities whose underlying assets match a supplied wallet's holdings, including opted-in ASAs with positive balance and native ALGO when held. Use when an agent needs wallet-aware yield ideas based on assets the account already owns, with normalized APY/APR, TVL, asset ids, source freshness, and caveats. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities","personalized","wallet"],"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string"},"description":"Algorand account address to personalize opportunities for."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":10}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}},{"name":"includeInactive","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Personalized opportunity list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalizedOpportunitiesListResponse"},"examples":{"default":{"$ref":"#/components/examples/PersonalizedOpportunitiesSample"}}}}},"400":{"$ref":"#/components/responses/InvalidAddress"},"402":{"$ref":"#/components/responses/PaymentRequired"},"500":{"$ref":"#/components/responses/InternalError"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"}},"x-x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.05"}}}},"/protocols/{protocol}/opportunities":{"get":{"summary":"Top 25 DeFi opportunities for a single protocol ranked by APY","description":"Returns ranked DeFi opportunities for one Algorand protocol: tinyman, pact, folks-finance, compx, or dorkfi. Use when an agent already knows the target protocol and needs normalized APY/APR, TVL, asset pair, opportunity type, timestamps, and caveats for that venue. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities","protocol"],"parameters":[{"name":"protocol","in":"path","required":true,"schema":{"type":"string","enum":["tinyman","pact","folks-finance","compx","dorkfi"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}},{"name":"includeInactive","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Protocol opportunity list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitiesListResponse"},"examples":{"default":{"$ref":"#/components/examples/ProtocolOpportunitiesSample"}}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"500":{"$ref":"#/components/responses/InternalError"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"x-x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.01"}}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","enum":["VALIDATION_ERROR","INTERNAL_ERROR","NOT_FOUND","MISSING_PAYMENT_SIGNATURE","MALFORMED_PAYMENT_SIGNATURE","EXPIRED_PAYMENT_PROOF"]},"message":{"type":"string"},"details":{"description":"Optional structured context for the error."}}}}},"OpportunityRecord":{"type":"object","required":["protocol","opportunityType","opportunityId","assetPair","apy","yieldBasis","tvlUsd","sourceTimestamp","fetchedAt"],"properties":{"protocol":{"type":"string","description":"Source platform name.","enum":["tinyman","pact","folks-finance","compx","dorkfi"]},"opportunityType":{"type":"string","enum":["lp","farm","staking","lending"]},"opportunityId":{"type":"string","description":"Stable identifier for the opportunity within its protocol."},"assetPair":{"type":"string","description":"Protocol-specific market identifier (e.g. ALGO/USDC or a single asset)."},"assetIds":{"type":"array","items":{"type":"integer"},"description":"On-chain Algorand asset ids backing the opportunity. Native ALGO is asset id 0."},"apy":{"type":"number","description":"Yield as APY. Formatted to 6 decimal places (up to 12 for small non-zero values)."},"yieldBasis":{"type":"string","enum":["apy","apr"],"description":"Indicates whether the apy field reflects a compound APY or an APR-derived value."},"apr":{"type":"number","description":"Yield as APR when the upstream source provides it."},"tvlUsd":{"type":"number","description":"Total value locked / liquidity depth in USD."},"sourceTimestamp":{"type":"string","format":"date-time","description":"Upstream or on-chain update time when available; otherwise equals fetchedAt."},"fetchedAt":{"type":"string","format":"date-time","description":"When this service fetched and normalized the row."},"notes":{"type":"string","description":"Caveats about timestamp provenance, fallback identifiers, or yield estimates."}}},"PersonalizedOpportunityRecord":{"$ref":"#/components/schemas/OpportunityRecord"},"OpportunitiesListMeta":{"type":"object","required":["limit","offset","includeInactive","paymentRequired"],"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"includeInactive":{"type":"boolean"},"paymentRequired":{"type":"boolean"}}},"PersonalizedOpportunitiesListMeta":{"allOf":[{"$ref":"#/components/schemas/OpportunitiesListMeta"},{"type":"object","required":["address","heldAssetCount"],"properties":{"address":{"type":"string","description":"Algorand address the results were personalized for."},"heldAssetCount":{"type":"integer","description":"Number of distinct held assets used for matching."}}}]},"OpportunitiesListResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OpportunityRecord"}},"meta":{"$ref":"#/components/schemas/OpportunitiesListMeta"}}},"PersonalizedOpportunitiesListResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PersonalizedOpportunityRecord"}},"meta":{"$ref":"#/components/schemas/PersonalizedOpportunitiesListMeta"}}},"HealthResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["service","status"],"properties":{"service":{"type":"string","enum":["canix402"]},"status":{"type":"string","enum":["ok"]}}}}},"EndpointPolicyEntry":{"type":"object","required":["id","method","pathPattern","access","summary","tags"],"properties":{"id":{"type":"string"},"method":{"type":"string","enum":["GET"]},"pathPattern":{"type":"string"},"access":{"type":"string","enum":["free","paid"]},"summary":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"pathParams":{"type":"array","items":{"type":"string"}},"queryParams":{"type":"array","items":{"type":"string"}}}},"MetadataResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["service","environment","supportedProtocols","endpointPolicy"],"properties":{"service":{"type":"string","enum":["canix402"]},"environment":{"type":"string"},"supportedProtocols":{"type":"array","items":{"type":"string"}},"endpointPolicy":{"type":"array","items":{"$ref":"#/components/schemas/EndpointPolicyEntry"}}}}}},"DiscoveryResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["service","apiVersion","discoveryVersion","capabilities","x402ProtocolVersion","endpoints","errorCatalog"],"properties":{"service":{"type":"string","enum":["canix402"]},"apiVersion":{"type":"string"},"discoveryVersion":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"x402ProtocolVersion":{"type":"integer","enum":[2]},"endpoints":{"type":"array","items":{"type":"object"}},"errorCatalog":{"type":"array","items":{"type":"object"}}}}}}},"responses":{"PaymentRequired":{"description":"Payment required. The client must retry with a signed PAYMENT-SIGNATURE payload.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded JSON x402 payment requirements the client must satisfy before retrying.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"missingPayment":{"$ref":"#/components/examples/MissingPaymentSignatureError"},"malformedPayment":{"$ref":"#/components/examples/MalformedPaymentSignatureError"},"expiredProof":{"$ref":"#/components/examples/ExpiredPaymentProofError"}}}}},"InvalidAddress":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidAddress":{"$ref":"#/components/examples/InvalidAddressError"}}}}},"InternalError":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"internalError":{"$ref":"#/components/examples/InternalError"}}}}}},"examples":{"HealthResponseSample":{"summary":"Healthy service","value":{"data":{"service":"canix402","status":"ok"}}},"MetadataResponseSample":{"summary":"Service metadata (endpoint policy trimmed)","value":{"data":{"service":"canix402","environment":"production","supportedProtocols":["tinyman","pact","folks-finance","compx","dorkfi"],"endpointPolicy":[{"id":"opportunities","method":"GET","pathPattern":"/opportunities","access":"paid","summary":"Top 10 aggregated DeFi opportunities ranked by APY","description":"Returns ranked Algorand DeFi yield opportunities across supported protocols including Tinyman, Pact, Folks Finance, CompX, and Dork.fi. Use when an agent needs to compare APY/APR, TVL, asset pairs, opportunity type, protocol, source freshness, and caveats before presenting or ranking yield options. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities"],"queryParams":["protocol","limit","offset","includeInactive"]}]}}},"DiscoveryResponseSample":{"summary":"Discovery document (endpoints trimmed)","value":{"data":{"service":"canix402","apiVersion":"1.0.0","discoveryVersion":"1.0.0","capabilities":["algorand-defi-opportunities","x402-paid-data","wallet-personalization","agent-discovery","openapi"],"x402ProtocolVersion":2,"endpoints":[{"id":"opportunities","method":"GET","path":"/opportunities","access":"paid","summary":"Top 10 aggregated DeFi opportunities ranked by APY","description":"Returns ranked Algorand DeFi yield opportunities across supported protocols including Tinyman, Pact, Folks Finance, CompX, and Dork.fi. Use when an agent needs to compare APY/APR, TVL, asset pairs, opportunity type, protocol, source freshness, and caveats before presenting or ranking yield options. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities"],"pathParams":[],"queryParams":["protocol","limit","offset","includeInactive"],"responseCodes":[200,402,500],"x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"facilitator":"https://facilitator.goplausible.xyz","requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.01"}}}],"errorCatalog":[{"code":"MISSING_PAYMENT_SIGNATURE","httpStatus":402,"description":"The paid endpoint was called without PAYMENT-SIGNATURE."}]}}},"X402ManifestSample":{"summary":"x402 discovery manifest (resources trimmed)","value":{"service":"canix402","name":"canix402","version":"1.0.0","description":"x402-gated Algorand DeFi opportunities data API with USDC payment support.","x402Version":2,"docsUrl":"https://canix402.compx.io/x402","llmsTxtUrl":"https://canix402.compx.io/llms.txt","openapiUrl":"https://canix402-api.compx.io/openapi.json","discoveryUrl":"https://canix402-api.compx.io/discovery","facilitator":"https://facilitator.goplausible.xyz","chains":[{"namespace":"algorand","network":"algorand-mainnet","assets":[{"symbol":"USDC","assetId":"31566704","decimals":6}]}],"resources":[{"id":"opportunities","method":"GET","path":"/opportunities","url":"https://canix402-api.compx.io/opportunities","description":"Returns ranked Algorand DeFi yield opportunities across supported protocols including Tinyman, Pact, Folks Finance, CompX, and Dork.fi. Use when an agent needs to compare APY/APR, TVL, asset pairs, opportunity type, protocol, source freshness, and caveats before presenting or ranking yield options. This endpoint provides normalized market data only; it does not build or submit transactions.","tags":["defi","opportunities"],"price":{"amount":"0.01","currency":"USDC","network":"algorand-mainnet","asset":"31566704"},"x402":{"protocolVersion":2,"requiredHeaders":["PAYMENT-REQUIRED","PAYMENT-SIGNATURE","PAYMENT-RESPONSE"],"facilitator":"https://facilitator.goplausible.xyz","requirementTemplate":{"scheme":"exact","network":"algorand-mainnet","asset":"31566704","payTo":"REPLACE_WITH_PAYTO_ADDRESS","maxAmountRequired":"0.01"}}}]}},"AggregateOpportunitiesSample":{"summary":"Top aggregated opportunities","value":{"data":[{"protocol":"tinyman","opportunityType":"lp","opportunityId":"tinyman:pool:1002541853","assetPair":"ALGO/USDC","apr":10.512,"apy":12.5,"yieldBasis":"apy","tvlUsd":2450000.5,"sourceTimestamp":"2026-07-06T09:00:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z","notes":"sourceTimestamp reflects fetch time; upstream does not expose a per-row update time."},{"protocol":"folks-finance","opportunityType":"lending","opportunityId":"folks:lending:31566704","assetPair":"USDC","apy":6.06,"yieldBasis":"apy","tvlUsd":29846.609471,"sourceTimestamp":"2026-07-06T08:55:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z"}],"meta":{"limit":10,"offset":0,"includeInactive":false,"paymentRequired":true}}},"FilteredOpportunitiesSample":{"summary":"Filtered by platform=tinyman and minApy","value":{"data":[{"protocol":"tinyman","opportunityType":"lp","opportunityId":"tinyman:pool:1002541853","assetPair":"ALGO/USDC","apr":10.512,"apy":12.5,"yieldBasis":"apy","tvlUsd":2450000.5,"sourceTimestamp":"2026-07-06T09:00:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z"}],"meta":{"limit":25,"offset":0,"includeInactive":false,"paymentRequired":true}}},"PersonalizedOpportunitiesSample":{"summary":"Personalized to a wallet's held assets","value":{"data":[{"protocol":"folks-finance","opportunityType":"lending","opportunityId":"folks:lending:0","assetPair":"ALGO","assetIds":[0],"apy":4.25,"yieldBasis":"apy","tvlUsd":1875000.25,"sourceTimestamp":"2026-07-06T08:55:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z"},{"protocol":"tinyman","opportunityType":"lp","opportunityId":"tinyman:pool:1002541853","assetPair":"ALGO/USDC","assetIds":[0,31566704],"apr":10.512,"apy":12.5,"yieldBasis":"apy","tvlUsd":2450000.5,"sourceTimestamp":"2026-07-06T09:00:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z"}],"meta":{"limit":10,"offset":0,"includeInactive":false,"paymentRequired":true,"address":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","heldAssetCount":2}}},"ProtocolOpportunitiesSample":{"summary":"Single-protocol opportunities (tinyman)","value":{"data":[{"protocol":"tinyman","opportunityType":"lp","opportunityId":"tinyman:pool:1002541853","assetPair":"ALGO/USDC","apr":10.512,"apy":12.5,"yieldBasis":"apy","tvlUsd":2450000.5,"sourceTimestamp":"2026-07-06T09:00:00.000Z","fetchedAt":"2026-07-06T09:00:00.000Z"}],"meta":{"limit":25,"offset":0,"includeInactive":false,"paymentRequired":true}}},"MissingPaymentSignatureError":{"summary":"Paid route called without PAYMENT-SIGNATURE","value":{"error":{"code":"MISSING_PAYMENT_SIGNATURE","message":"The paid endpoint was called without PAYMENT-SIGNATURE."}}},"MalformedPaymentSignatureError":{"summary":"PAYMENT-SIGNATURE payload is malformed","value":{"error":{"code":"MALFORMED_PAYMENT_SIGNATURE","message":"PAYMENT-SIGNATURE payload is malformed."}}},"ExpiredPaymentProofError":{"summary":"PAYMENT-SIGNATURE proof has expired","value":{"error":{"code":"EXPIRED_PAYMENT_PROOF","message":"PAYMENT-SIGNATURE proof has expired."}}},"InvalidAddressError":{"summary":"Invalid Algorand address","value":{"error":{"code":"VALIDATION_ERROR","message":"Query parameter 'address' is not a valid Algorand address."}}},"InternalError":{"summary":"Internal server error","value":{"error":{"code":"INTERNAL_ERROR","message":"Internal server error."}}}}}}