{"service":"sunday-memory-stream-summaries","base_url":"https://extra.watch","schema":"stream_api_v1","summary_schema":"stream_summary_v1","protocol":{"name":"x402","version":2,"network":"eip155:8453","asset":"USDC","payTo":"0x538291871987fbC29E808D91538d930D571e36D4"},"envelope":{"data":"object","as_of":"ISO8601","data_age_seconds":"number|null","source":"string","disclaimer":"string","schema":"stream_api_v1"},"summary_fields":{"channel":"Twitch login","session":"YYYY-MM-DDTHH-MM-SS (local time of the capture box)","started_at":"ISO8601","ended_at":"ISO8601","duration_s":"integer","streamer":"{sentiment:{score,label,n_lines,n_scored,...}, audio_s, transcription}","chat":"{sentiment, n_messages, n_users, messages_per_min}","guests":"{method, guests:[{name, confidence, evidence}]}","coins":"[{symbol, chain, address, mentions:{chat,streamer}, first_mention_at, first_mention_by, price_near_first_mention, price_at_summary, sentiment, ...}]","topics":"[{topic, mentions, chat_users, sentiment, label}]"},"endpoints":[{"method":"GET","path":"/v1/streams","paid":false,"price":"$0.00","desc":"catalogue — every channel with a summary, its last stream and how many summaries exist"},{"method":"GET","path":"/v1/streams/{channel}/latest","paid":true,"price":"$0.01","desc":"the most recent finished stream's summary for one channel","params":{"channel":{"type":"string","required":true,"in":"path","description":"Twitch login, e.g. threadguy"}}},{"method":"GET","path":"/v1/streams/{channel}/history","paid":true,"price":"$0.03","desc":"the last N summaries for one channel, newest first (N ≤ 30)","params":{"channel":{"type":"string","required":true,"in":"path","description":"Twitch login"},"limit":{"type":"integer","required":false,"in":"query","default":20,"description":"1–30"}}},{"method":"GET","path":"/v1/streams/{channel}/{session}","paid":true,"price":"$0.01","desc":"one specific stream by session id (YYYY-MM-DDTHH-MM-SS)","params":{"channel":{"type":"string","required":true,"in":"path","description":"Twitch login"},"session":{"type":"string","required":true,"in":"path","description":"session id from the catalogue or history"}}},{"method":"GET","path":"/v1/meta","paid":false,"price":"$0.00","desc":"this contract, as JSON"},{"method":"GET","path":"/openapi.json","paid":false,"price":"$0.00","desc":"OpenAPI discovery document"},{"method":"GET","path":"/health","paid":false,"price":"$0.00","desc":"liveness"}],"payment_flow":"An unpaid request to a paid path returns HTTP 402 with x402 v2 payment requirements in the PAYMENT-REQUIRED header. An x402-aware client (e.g. @x402/fetch) with a funded wallet pays USDC on Base and receives HTTP 200 + a stream_api_v1 envelope.","update_cadence":"a channel's files are rewritten within minutes of each captured stream ending","disclaimer":"Derived, observation-grade data about public broadcasts. Not financial advice. No transcripts, no chat usernames."}