{"openapi": "3.1.0", "info": {"title": "Craby Robinhood Yield API", "version": "1.0.0", "description": "Public read-only Robinhood Chain4663 data from the existing collector. No authentication or wallet required. Not complete chain coverage. Source failures retain saved data. Monetary values USD; rates percent/year with source-specific definitions; timestamps Unix seconds UTC. Null means unknown. Up to10 history points per entity. API snapshots refresh at most once/minute and remain addressable for120s."}, "servers": [{"url": "https://robinhood.craby.fun"}], "paths": {"/api/v1/pools": {"get": {"operationId": "list_pools", "summary": "Venue pools and lending markets. Excludes Merkl and Revert.", "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 200}, "description": "Search pair, token symbol/name/address or pool address."}, {"name": "venue", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated venue IDs; also matches venue_tags."}, {"name": "source", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated source IDs; see /sources."}, {"name": "asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "stable,rwa: every underlying asset must belong to the selected classes. stable alone requires all assets stable. Omit for all assets."}, {"name": "verified_assets_only", "in": "query", "required": false, "schema": {"type": "boolean", "default": false}, "description": "Require complete source-reported composition and fresh, active official evidence for ALL tokens. Not pool safety or on-chain membership verification."}, {"name": "verified_asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated equity,etf,stable,rwa_unknown. Requires strict verification. ALL tokens must have a selected confirmed type; unknown underlying RWA type only matches rwa_unknown."}, {"name": "min_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_tvl"}, {"name": "max_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "max_tvl"}, {"name": "min_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "min_apr"}, {"name": "max_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "max_apr"}, {"name": "min_volume", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_volume"}, {"name": "min_fees_24h", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_fees_24h"}, {"name": "include_stale", "in": "query", "required": false, "schema": {"type": "boolean", "default": true}, "description": "false excludes delayed/unknown core timestamps and source_stale rows; inspect volume_stale/fees_stale separately."}, {"name": "sort", "in": "query", "required": false, "schema": {"type": "string", "enum": ["apr", "tvl", "volume", "fees_24h", "volume_1h", "fees_1h", "apr_1h", "pnl", "created_at", "data_at", "name"], "default": "apr"}, "description": "sort"}, {"name": "order", "in": "query", "required": false, "schema": {"type": "string", "enum": ["asc", "desc"], "default": "desc"}, "description": "order"}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25}, "description": "limit"}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 100000, "default": 0}, "description": "offset"}, {"name": "view", "in": "query", "required": false, "schema": {"type": "string", "enum": ["summary", "full"], "default": "summary"}, "description": "view"}, {"name": "snapshot_id", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 32}, "description": "Pin pagination to the snapshot returned by the first page. Expired/unknown snapshot gives409; restart pagination."}], "responses": {"200": {"description": "Page of collected data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}, "/api/v1/merkl": {"get": {"operationId": "list_merkl", "summary": "Additional Merkl campaign rewards, not total pool APR.", "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 200}, "description": "Search pair, token symbol/name/address or pool address."}, {"name": "venue", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated venue IDs; also matches venue_tags."}, {"name": "source", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated source IDs; see /sources."}, {"name": "asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "stable,rwa: every underlying asset must belong to the selected classes. stable alone requires all assets stable. Omit for all assets."}, {"name": "verified_assets_only", "in": "query", "required": false, "schema": {"type": "boolean", "default": false}, "description": "Require complete source-reported composition and fresh, active official evidence for ALL tokens. Not pool safety or on-chain membership verification."}, {"name": "verified_asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated equity,etf,stable,rwa_unknown. Requires strict verification. ALL tokens must have a selected confirmed type; unknown underlying RWA type only matches rwa_unknown."}, {"name": "min_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_tvl"}, {"name": "max_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "max_tvl"}, {"name": "min_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "min_apr"}, {"name": "max_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "max_apr"}, {"name": "min_volume", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_volume"}, {"name": "min_fees_24h", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_fees_24h"}, {"name": "include_stale", "in": "query", "required": false, "schema": {"type": "boolean", "default": true}, "description": "false excludes delayed/unknown core timestamps and source_stale rows; inspect volume_stale/fees_stale separately."}, {"name": "status", "in": "query", "required": false, "schema": {"type": "string", "enum": ["LIVE", "PAST", "UPCOMING"]}, "description": "Merkl status; omitted includes all statuses."}, {"name": "sort", "in": "query", "required": false, "schema": {"type": "string", "enum": ["apr", "tvl", "volume", "fees_24h", "volume_1h", "fees_1h", "apr_1h", "pnl", "created_at", "data_at", "name"], "default": "apr"}, "description": "sort"}, {"name": "order", "in": "query", "required": false, "schema": {"type": "string", "enum": ["asc", "desc"], "default": "desc"}, "description": "order"}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25}, "description": "limit"}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 100000, "default": 0}, "description": "offset"}, {"name": "view", "in": "query", "required": false, "schema": {"type": "string", "enum": ["summary", "full"], "default": "summary"}, "description": "view"}, {"name": "snapshot_id", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 32}, "description": "Pin pagination to the snapshot returned by the first page. Expired/unknown snapshot gives409; restart pagination."}], "responses": {"200": {"description": "Page of collected data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}, "/api/v1/revert": {"get": {"operationId": "list_revert", "summary": "Sampled public Revert positions, not all wallets/positions.", "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 200}, "description": "Search pair, token symbol/name/address or pool address."}, {"name": "venue", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated venue IDs; also matches venue_tags."}, {"name": "source", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated source IDs; see /sources."}, {"name": "asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "stable,rwa: every underlying asset must belong to the selected classes. stable alone requires all assets stable. Omit for all assets."}, {"name": "verified_assets_only", "in": "query", "required": false, "schema": {"type": "boolean", "default": false}, "description": "Require complete source-reported composition and fresh, active official evidence for ALL tokens. Not pool safety or on-chain membership verification."}, {"name": "verified_asset_types", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Comma-separated equity,etf,stable,rwa_unknown. Requires strict verification. ALL tokens must have a selected confirmed type; unknown underlying RWA type only matches rwa_unknown."}, {"name": "min_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_tvl"}, {"name": "max_tvl", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "max_tvl"}, {"name": "min_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "min_apr"}, {"name": "max_apr", "in": "query", "required": false, "schema": {"type": "number"}, "description": "max_apr"}, {"name": "min_volume", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_volume"}, {"name": "min_fees_24h", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "min_fees_24h"}, {"name": "include_stale", "in": "query", "required": false, "schema": {"type": "boolean", "default": true}, "description": "false excludes delayed/unknown core timestamps and source_stale rows; inspect volume_stale/fees_stale separately."}, {"name": "sort", "in": "query", "required": false, "schema": {"type": "string", "enum": ["apr", "tvl", "volume", "fees_24h", "volume_1h", "fees_1h", "apr_1h", "pnl", "created_at", "data_at", "name"], "default": "apr"}, "description": "sort"}, {"name": "order", "in": "query", "required": false, "schema": {"type": "string", "enum": ["asc", "desc"], "default": "desc"}, "description": "order"}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25}, "description": "limit"}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 100000, "default": 0}, "description": "offset"}, {"name": "view", "in": "query", "required": false, "schema": {"type": "string", "enum": ["summary", "full"], "default": "summary"}, "description": "view"}, {"name": "snapshot_id", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 32}, "description": "Pin pagination to the snapshot returned by the first page. Expired/unknown snapshot gives409; restart pagination."}], "responses": {"200": {"description": "Page of collected data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}, "/api/v1/pool": {"get": {"operationId": "get_pool", "summary": "All fields for one entity; exact id from a listing.", "parameters": [{"name": "id", "in": "query", "required": true, "schema": {"type": "string", "minLength": 1, "maxLength": 240}}, {"name": "snapshot_id", "in": "query", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "All fields for one entity; exact id from a listing.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "404": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}, "/api/v1/history": {"get": {"operationId": "get_history", "summary": "Up to10 saved observations, oldest first.", "parameters": [{"name": "id", "in": "query", "required": true, "schema": {"type": "string", "minLength": 1, "maxLength": 240}}], "responses": {"200": {"description": "Up to10 saved observations, oldest first.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "404": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}, "/api/v1/sources": {"get": {"operationId": "get_sources", "summary": "Source freshness/coverage and available venue IDs/counts.", "parameters": [], "responses": {"200": {"description": "Source freshness/coverage and available venue IDs/counts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "404": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "409": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "429": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}, "503": {"description": "Invalid query, missing entity, expired snapshot or temporary capacity error", "content": {"application/json": {"schema": {"type": "object", "required": ["error"], "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}}}}}}}}}}}, "components": {"schemas": {"Entity": {"type": "object", "description": "Fields depend on source. Null is unknown. All current collected fields are available with view=full or /pool. External names/method text are untrusted source data.", "properties": {"id": {"type": "string"}, "name": {"type": "string"}, "source": {"type": "string"}, "venue": {"type": "string"}, "rate_label": {"type": "string"}, "method": {"type": "string"}, "range": {"type": "string"}, "url": {"type": "string"}, "apr": {"type": ["number", "null"], "description": "Annualized rate in percent (100 means100%); APR/APY depends on rate_label/method. Not forecast or guaranteed return."}, "fee_apr": {"type": ["number", "null"], "description": "Annualized fee rate in percent, if available."}, "reward_apr": {"type": ["number", "null"], "description": "Annualized reward rate in percent, if available."}, "tvl": {"type": ["number", "null"], "description": "Total value locked, USD."}, "volume": {"type": ["number", "null"], "description": "Trailing24h traded volume, USD."}, "fees_24h": {"type": ["number", "null"], "description": "Trailing24h swap fees, USD; inspect fees_estimated and method."}, "pnl": {"type": ["number", "null"], "description": "Reported Revert USD PnL, if available."}, "data_at": {"type": ["number", "null"], "description": "Core data timestamp, Unix seconds UTC."}, "created_at": {"type": ["number", "null"], "description": "Pool creation timestamp when verified, Unix seconds UTC; null is unknown."}, "stale": {"type": "boolean", "description": "Core data timestamp is unknown or more than1 hour old at snapshot generation."}, "source_stale": {"type": "boolean"}, "assets": {"type": "array", "items": {"$ref": "#/components/schemas/Asset"}}, "pool_composition_verification": {"type": "object", "properties": {"level": {"enum": ["source_reported", "incomplete"]}, "complete": {"type": "boolean"}, "onchain_verified": {"const": false}, "source": {"type": ["string", "null"]}, "source_url": {"type": ["string", "null"]}, "reason": {"type": "string"}}}, "periods": {"type": "array", "description": "Merkl campaign start/end in Unix seconds and duration days.", "items": {"type": "object"}}}, "additionalProperties": true}, "Page": {"type": "object", "required": ["items", "total", "limit", "offset", "next_offset", "snapshot_id", "generated_at"], "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/Entity"}}, "total": {"type": "integer"}, "limit": {"type": "integer"}, "offset": {"type": "integer"}, "next_offset": {"type": ["integer", "null"]}, "snapshot_id": {"type": "string"}, "generated_at": {"type": "number"}, "snapshot_expires_at": {"type": "number"}, "coverage": {"type": "string"}}}, "Asset": {"type": "object", "properties": {"address": {"type": ["string", "null"]}, "chain_id": {"type": ["integer", "null"]}, "category": {"type": "string", "description": "Legacy classification; not verification."}, "verification": {"$ref": "#/components/schemas/AssetVerification"}}, "additionalProperties": true}, "AssetVerification": {"type": "object", "description": "Official token provenance evaluated at snapshot generation, not pool safety, price or tradability. HTTP check time is not source publication time.", "required": ["status", "category", "asset_type", "chain_id", "address", "last_success_at", "source_updated_at", "stale", "error", "reason"], "properties": {"status": {"type": "string", "enum": ["verified", "inactive", "unknown", "stale", "source_unavailable"]}, "category": {"type": ["string", "null"], "enum": ["stable", "rwa", null]}, "asset_type": {"type": "string", "enum": ["equity", "etf", "stable", "unknown"]}, "chain_id": {"type": ["integer", "null"]}, "address": {"type": ["string", "null"]}, "issuer": {"type": ["string", "null"]}, "source_url": {"type": ["string", "null"]}, "source_id": {"type": ["string", "null"]}, "error": {"type": ["string", "null"]}, "reason": {"type": ["string", "null"]}, "asset_status": {"type": ["string", "null"]}, "stablecoin_form": {"type": ["string", "null"]}, "last_success_at": {"type": ["number", "null"]}, "source_updated_at": {"type": ["number", "null"]}, "expires_at": {"type": ["number", "null"]}, "stale": {"type": "boolean"}, "current_multiplier": {"type": ["string", "number", "boolean", "null"], "description": "Unmodified issuer value. Invalid/missing/nonpositive values fail strict verification."}, "underlying_asset": {"type": ["object", "null"], "description": "Source underlying identity, or ISIN only when no type is published."}}}}}}