Events and Channels¶
Channels¶
| Channel | Scope | Event types |
|---|---|---|
deal.{region} |
API key with deals:read |
deal.created, deal.updated, deal.expired |
price.{game_id}.{region} |
API key with pricing:read |
price.updated, offer.unavailable |
wishlist.{user_id} |
owner only | wishlist.updated, alert.triggered |
notification.{user_id} |
owner only | notification.created |
Event envelope¶
{"type":"event","event_id":"evt_01J4R8Z7V1","channel":"deal.US","sequence":18402,"occurred_at":"2026-11-06T09:42:20Z","event_type":"deal.updated","data":{"id":"deal_01J4R8QW9N","game_id":"game_01J2M4T5K7HADES2","store_id":"store_steam","region":"US","price":{"amount":"20.99","currency":"USD"},"discount_percent":30,"deal_score":82}}
The event payload represents the post-change state. Clients must tolerate new optional fields and may fetch the REST resource when they need expanded data.
Protocol errors¶
Errors are messages, not necessarily socket closures. error includes code, message, request_id, and optional channel. Common codes: unauthenticated, forbidden_channel, invalid_message, subscription_limit, resume_unavailable, and rate_limited. The maximum is 50 channels per connection and 10 subscribe messages per minute.