{"openapi":"3.1.0","info":{"title":"SilphCo Analytics API","version":"0.3.0","description":"TCG marketplace intelligence API (Pokemon and One Piece). Curated public data routes only — see /openapi.json for the full server schema."},"servers":[{"url":"https://silphcoanalytics.xyz","description":"Production"}],"paths":{"/api/v3/cards":{"get":{"tags":["cards"],"summary":"Paginated card list (card-gold.v3)","operationId":"list_cards_api_v1_cards_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":256,"default":"","title":"Q"}},{"name":"set_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Set Id"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(en|ja|zh-cn|zh-tw)$"},{"type":"null"}],"title":"Language"}},{"name":"rarity","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Rarity"}},{"name":"variant","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Variant"}},{"name":"card_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Card Number"}},{"name":"marketplace","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Comma-separated marketplace whitelist, e.g. ?marketplace=courtyard,tcgplayer. Matches market_sources (TCG market lanes) and venues[].marketplace (on-chain lanes). ``tcgcsv`` is aliased to ``tcgplayer``. Default mode (marketplace_mode=any) returns cards that include ANY listed marketplace; marketplace_mode=only returns cards whose populated sources are ALL in the list.","title":"Marketplace"},"description":"Comma-separated marketplace whitelist, e.g. ?marketplace=courtyard,tcgplayer. Matches market_sources (TCG market lanes) and venues[].marketplace (on-chain lanes). ``tcgcsv`` is aliased to ``tcgplayer``. Default mode (marketplace_mode=any) returns cards that include ANY listed marketplace; marketplace_mode=only returns cards whose populated sources are ALL in the list."},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Alias for marketplace.","title":"Source"},"description":"Alias for marketplace."},{"name":"marketplace_mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(any|only)$","description":"any (default): card matches if ANY listed marketplace appears in market_sources or venues[].marketplace. only: card matches if EVERY populated source is in the list.","default":"any","title":"Marketplace Mode"},"description":"any (default): card matches if ANY listed marketplace appears in market_sources or venues[].marketplace. only: card matches if EVERY populated source is in the list."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(volume|name|price)$","default":"volume","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Order"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response List Cards Api V1 Cards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/cards/{card_id}":{"get":{"tags":["cards"],"summary":"Get a single card (card-gold.v3)","operationId":"get_card_api_v1_cards__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"include","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated subresources: price_history, tvwap_history, tvwap_slots, grade_momentum, recent_sales, market_summary, grade_breakdown, population_overview, grading_economics","default":"","title":"Include"},"description":"Comma-separated subresources: price_history, tvwap_history, tvwap_slots, grade_momentum, recent_sales, market_summary, grade_breakdown, population_overview, grading_economics"},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Api V1 Cards  Card Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/cards/{card_id}/analytics":{"get":{"tags":["cards"],"summary":"Single-card analytics dashboard (card-analytics.v1)","operationId":"get_card_analytics_api_v1_cards__card_id__analytics_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"window","in":"query","required":false,"schema":{"type":"string","description":"Time window (1y, 6m, 3m, 1m, 1w, all)","default":"1y","title":"Window"},"description":"Time window (1y, 6m, 3m, 1m, 1w, all)"},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Analytics Api V1 Cards  Card Id  Analytics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/cards/{card_id}/market-history":{"get":{"tags":["cards"],"summary":"Card market price history time-series","operationId":"get_card_market_history_api_v1_cards__card_id__market_history_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"condition","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"Alias for date_from (YYYY-MM-DD). When set, overrides date_from.","title":"Since"},"description":"Alias for date_from (YYYY-MM-DD). When set, overrides date_from."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":365,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Market History Api V1 Cards  Card Id  Market History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/cards/{card_id}/marketplace-sales":{"get":{"tags":["cards"],"summary":"Per-marketplace raw sales time-series (marketplace-sales.v1)","operationId":"get_card_marketplace_sales_api_v1_cards__card_id__marketplace_sales_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"condition","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Condition"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":365,"title":"Limit"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date To"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"Alias for date_from (YYYY-MM-DD). When set, overrides date_from.","title":"Since"},"description":"Alias for date_from (YYYY-MM-DD). When set, overrides date_from."},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Marketplace Sales Api V1 Cards  Card Id  Marketplace Sales Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/cards/{card_id}/price-history":{"get":{"tags":["cards"],"summary":"Graded oracle price history (price-history.v3)","operationId":"get_card_price_history_api_v1_cards__card_id__price_history_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"grade","in":"query","required":false,"schema":{"type":"string","maxLength":256,"default":"raw:near_mint","title":"Grade"}},{"name":"method","in":"query","required":false,"schema":{"enum":["fmv","tvwap","median"],"type":"string","default":"fmv","title":"Method"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","pattern":"^(en|ja|zh-cn|zh-tw)$","default":"en","title":"Language"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date To"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"Alias for date_from","title":"Since"},"description":"Alias for date_from"},{"name":"interval","in":"query","required":false,"schema":{"enum":["day","week","change"],"type":"string","default":"day","title":"Interval"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":365,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Price History Api V1 Cards  Card Id  Price History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/cards/{card_id}/sales":{"get":{"tags":["cards"],"summary":"Cursor-paginated on-chain sales for a card","operationId":"get_card_sales_cursor_api_v1_cards__card_id__sales_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512,"default":"","title":"Cursor"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Filter rows where sale_date >= YYYY-MM-DD","title":"Since"},"description":"Filter rows where sale_date >= YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"include_filtered","in":"query","required":false,"schema":{"type":"boolean","description":"Include sales flagged by quality rules (default: verified only)","default":false,"title":"Include Filtered"},"description":"Include sales flagged by quality rules (default: verified only)"},{"name":"include_untrusted_identity","in":"query","required":false,"schema":{"type":"boolean","description":"Include low-confidence identity matches (e.g. disagree_high, disagree_medium). Default hides them; enable only for debugging/QA.","default":false,"title":"Include Untrusted Identity"},"description":"Include low-confidence identity matches (e.g. disagree_high, disagree_medium). Default hides them; enable only for debugging/QA."},{"name":"trade_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trade Type"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}},{"name":"include_price_feed","in":"query","required":false,"schema":{"type":"boolean","description":"Include TCGplayer price-feed snapshot rows (daily market medians, not executed comps). Default excludes them so the stream reflects real transactions.","default":false,"title":"Include Price Feed"},"description":"Include TCGplayer price-feed snapshot rows (daily market medians, not executed comps). Default excludes them so the stream reflects real transactions."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Sales Cursor Api V1 Cards  Card Id  Sales Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/cards/{card_id}/tcgplayer-history":{"get":{"tags":["cards"],"summary":"Card TCGplayer daily price and sales history","operationId":"get_card_tcgplayer_history_api_v1_cards__card_id__tcgplayer_history_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":365,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Tcgplayer History Api V1 Cards  Card Id  Tcgplayer History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/cards/{card_id}/vwap":{"get":{"tags":["cards"],"summary":"Card volume-weighted average price","operationId":"get_card_vwap_api_v1_cards__card_id__vwap_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"condition","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Condition"}},{"name":"grader","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Grader"}},{"name":"grade_num","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Grade Num"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Card Vwap Api V1 Cards  Card Id  Vwap Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/lookup":{"get":{"tags":["search"],"summary":"Typeahead card lookup (lookup.v1)","operationId":"lookup_api_v1_lookup_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":256,"default":"","title":"Q"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(en|ja|zh-cn|zh-tw)$"},{"type":"null"}],"title":"Language"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Lookup Api V1 Lookup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/market/volume":{"get":{"tags":["market"],"summary":"Market volume leaderboard (market-volume.v1)","operationId":"market_volume_api_v1_market_volume_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Language"}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","default":"daily","title":"Granularity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Market Volume Api V1 Market Volume Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/search":{"get":{"tags":["search"],"summary":"Full-text card search (search.v1)","operationId":"search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":256,"default":"","title":"Q"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(en|ja|zh-cn|zh-tw)$"},{"type":"null"}],"title":"Language"}},{"name":"set_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Set Id"}},{"name":"rarity","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Rarity"}},{"name":"variant","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Variant"}},{"name":"min_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Price"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Max Price"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(relevance|volume|name|price)$","default":"relevance","title":"Sort"}},{"name":"collapse","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^variants$"},{"type":"null"}],"title":"Collapse"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Search Api V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets":{"get":{"tags":["sets"],"summary":"Paginated set list","operationId":"list_sets_api_v1_sets_get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(release_date|release_date_asc|name|volume|card_count)$","default":"release_date","title":"Sort"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response List Sets Api V1 Sets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets/{card_id}":{"get":{"tags":["Sets","stable"],"summary":"Set detail","description":"Response contract: `set-gold.v3`. Requires `Authorization: Bearer <api_key>`.","operationId":"GET__api_v3_sets_id","responses":{"200":{"description":"silphco-envelope.v1","content":{"application/json":{"schema":{"type":"object","properties":{"contract":{"type":"string","example":"set-gold.v3"},"data":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key"}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets/{card_id}/breakdown":{"get":{"tags":["Sets","stable"],"summary":"Set sales breakdown","description":"Response contract: `set-breakdown.v1`. Requires `Authorization: Bearer <api_key>`.","operationId":"GET__api_v3_sets_id_breakdown","responses":{"200":{"description":"silphco-envelope.v1","content":{"application/json":{"schema":{"type":"object","properties":{"contract":{"type":"string","example":"set-breakdown.v1"},"data":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key"}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets/{card_id}/price-distribution":{"get":{"tags":["Sets","stable"],"summary":"Set price distribution","description":"Response contract: `set-price-distribution.v1`. Requires `Authorization: Bearer <api_key>`.","operationId":"GET__api_v3_sets_id_price-distribution","responses":{"200":{"description":"silphco-envelope.v1","content":{"application/json":{"schema":{"type":"object","properties":{"contract":{"type":"string","example":"set-price-distribution.v1"},"data":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key"}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets/{card_id}/trending-cards":{"get":{"tags":["Sets","stable"],"summary":"Trending cards in a set","description":"Response contract: `set-trending-cards.v2`. Requires `Authorization: Bearer <api_key>`.","operationId":"GET__api_v3_sets_id_trending-cards","responses":{"200":{"description":"silphco-envelope.v1","content":{"application/json":{"schema":{"type":"object","properties":{"contract":{"type":"string","example":"set-trending-cards.v2"},"data":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key"}},"security":[{"bearerAuth":[]}]}},"/api/v3/sets/{card_id}/volume-history":{"get":{"tags":["Sets","stable"],"summary":"Set volume over time","description":"Response contract: `set-volume-history.v1`. Requires `Authorization: Bearer <api_key>`.","operationId":"GET__api_v3_sets_id_volume-history","responses":{"200":{"description":"silphco-envelope.v1","content":{"application/json":{"schema":{"type":"object","properties":{"contract":{"type":"string","example":"set-volume-history.v1"},"data":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key"}},"security":[{"bearerAuth":[]}]}},"/api/v3/shop/listings":{"get":{"tags":["cards"],"summary":"Shop listings across platforms","operationId":"get_shop_listings_api_v1_shop_listings_get","parameters":[{"name":"platforms","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Platforms"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"card_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Card Id"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"price_asc","title":"Sort"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"game","in":"query","required":false,"schema":{"enum":["pokemon","onepiece"],"type":"string","default":"pokemon","title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Shop Listings Api V1 Shop Listings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}],"x-silph-lifecycle":"beta"}},"/api/v3/trending":{"get":{"tags":["trending"],"summary":"Trending cards leaderboard","operationId":"trending_api_v1_trending_get","parameters":[{"name":"metric","in":"query","required":false,"schema":{"type":"string","pattern":"^(volume_pct|price_pct|composite|new_listings|volume_usd|sales_count|psa10_volume_pct|psa10_price_pct|psa10_composite|psa10_volume_usd|psa10_sales_count)$","default":"composite","title":"Metric"}},{"name":"window","in":"query","required":false,"schema":{"type":"string","pattern":"^(1d|7d|30d|90d|180d)$","default":"30d","title":"Window"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":365,"minimum":1},{"type":"null"}],"title":"Window Days"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","pattern":"^(en|ja|zh-cn|zh-tw|all)$","default":"all","title":"Language"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Direction"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"grader","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Grader"}},{"name":"grade_num","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Grade Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Trending Api V1 Trending Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-silph-tier":"playground","x-silph-rate-limit":"1 req/s","x-silph-row-cap":50}},"/api/v3/sql":{"post":{"tags":["sql"],"summary":"Guarded read-only SQL over gold views (sql-query.v1)","operationId":"run_sql_api_v1_sql_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Run Sql Api V1 Sql Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from https://silphcoanalytics.xyz/dashboard"}},"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ResolveBody":{"properties":{"fix_summary":{"type":"string","title":"Fix Summary"},"fix_pr_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fix Pr Url"},"fix_commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fix Commit Sha"},"postmortem_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postmortem Url"}},"type":"object","required":["fix_summary"],"title":"ResolveBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"Cards","description":"Card catalog, pricing, sales, and market history."},{"name":"Sets","description":"Set directories, volumes, and breakdowns."},{"name":"Search","description":"Text search, lookup, and trending."},{"name":"Market","description":"Market volume and shop listings."},{"name":"SQL","description":"Read-only SQL against gold datasets."}]}