{"openapi":"3.1.0","info":{"title":"BriefSum AI Tech Hub — Public API","version":"1.0.0","description":"Programmatic access to the AI news, GitHub trending repos, trending topics, and user account resources. Authentication: send your key as `Authorization: Bearer bsk_xxxx` or `?api_key=bsk_xxxx`. Keys are generated in your Account page. Only paid plans (Pro / Pro+ / Enterprise) have API access.","contact":{"url":"https://briefsum.com/contact"}},"servers":[{"url":"https://briefsum.com"}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"bsk_","description":"API key created in your Account page. Format: `bsk_<base64url>`"},"queryApiKey":{"type":"apiKey","in":"query","name":"api_key","description":"Alternative query-string authentication."}},"schemas":{"NewsItem":{"type":"object","properties":{"id":{"type":"integer","example":42},"title":{"type":"string","example":"GPT-5 Released"},"source_name":{"type":"string","example":"OpenAI Blog"},"category":{"type":"string","example":"ai"},"publish_time":{"type":"string","format":"date-time"},"ai_summary":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"RepoItem":{"type":"object","properties":{"id":{"type":"integer"},"repo_full_name":{"type":"string","example":"openai/gpt-5"},"repo_name":{"type":"string"},"owner":{"type":"string"},"stars":{"type":"integer"},"new_stars_day":{"type":"integer"},"language":{"type":"string"},"raw_desc":{"type":"string"},"ai_analysis":{"type":"string"},"track_trend":{"type":"array"}}},"UserQuota":{"type":"object","properties":{"plan":{"type":"string","enum":["free","pro","proplus","enterprise"]},"unlimited":{"type":"boolean"},"quota_used":{"type":"integer"},"quota_remaining":{"type":"integer"}}},"ApiKey":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"prefix":{"type":"string","example":"bsk_abcde…"},"scope":{"type":"string","enum":["read","write","all"]},"created_at":{"type":"string","format":"date-time"},"revoked":{"type":"boolean"}}}}},"security":[{"bearerApiKey":[]},{"queryApiKey":[]}],"paths":{"/api/news/list":{"get":{"summary":"List AI news items (paginated)","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":20}},{"name":"category","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated news list"}}}},"/api/news/detail/{id}":{"get":{"summary":"Get a single AI news item","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"News detail"}}}},"/api/github-repos":{"get":{"summary":"List trending GitHub AI repos (paginated)","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":20}},{"name":"language","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Repo list"}}}},"/api/trending/topics":{"get":{"summary":"Top trending AI topics"}},"/api/trending/history":{"get":{"summary":"Trending history snapshot"}},"/api/feed/mixed":{"get":{"summary":"Mixed feed of news + repos"}},"/api/search/all":{"get":{"summary":"Search across news & repos","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}}]}},"/api/user/quota":{"get":{"summary":"Current user quota (Premium only)"}},"/api/user/favorites":{"get":{"summary":"List user favorites (Premium only)"}},"/api/user/favorite":{"post":{"summary":"Add a favorite (Premium only)"},"delete":{"summary":"Remove a favorite (Premium only)"}},"/api/user/preferences":{"get":{"summary":"Get user preferences (Premium only)"},"put":{"summary":"Update user preferences (Premium only)"}},"/api/keywords":{"get":{"summary":"Get keyword monitors (Premium only)"},"put":{"summary":"Update keyword monitors (Premium only)"}},"/api/user/usage-history":{"get":{"summary":"Last N days usage (Premium only)","parameters":[{"name":"days","in":"query","schema":{"type":"integer","default":14,"maximum":30}}]}},"/api/user/api-keys":{"get":{"summary":"List API keys for the caller"},"post":{"summary":"Create a new API key (Premium only, returns key ONCE)"},"delete":{"summary":"Revoke an API key (Premium only)"}}}}