Reliability
Deadlock Live Events is designed for betting-grade workloads. Every architectural decision targets sub-500 ms event delivery and 99.999% per-match reliability.*
Note: Operational target. Contractual SLAs are available on request — see Terms § 5.
Live status
Real-time platform health, current incidents, and historical uptime are published at status.deadlock-api.com. The footer of every page embeds a live indicator that polls the same feed; if you're seeing degraded delivery and the indicator is green, please open a support ticket so we can investigate.
Automatic failover
Internal component failures, node restarts, and network blips are absorbed by the platform — they never reach your consumers. Recovery completes within one game tick; the event stream presents no visible gap to subscribers.
Idempotent event IDs
Event IDs are derived deterministically from (match_id, tick, entity_id, event_type).
The same logical event is always published with the same ID, so any duplicate caused by
a retry or internal redelivery is collapsed at the edge before it reaches a subscriber.
Edge deduplication
The realtime layer deduplicates messages by ID before fanning out to subscribers. You receive each event exactly once, even when retries or recovery paths cause an event to be published more than once internally. No client-side deduplication logic is required.
168-hour channel persistence
All events on every match channel are retained for 168 hours (7 days) after the last event is published on the channel. You can replay any portion of a match's history within that window at no extra cost. Replay does not count as a new subscription.
rewind qualifier
Append ?rewind=N to the channel name when attaching to receive the last N events before
your connection was established. This is the fastest catch-up path after a transient disconnect:
const channel = client.channels.get('match:28850808?rewind=100')Use ?rewind=1s to rewind by time (e.g. the last 1 second of events).
History API
For replay over a larger window, use channel.history(). The call supports pagination and
start/end epoch timestamps:
const page = await channel.history({
limit: 1000,
direction: 'forwards',
start: Date.now() - 30 * 60 * 1000, // last 30 minutes
})
for (const msg of page.items) {
console.log(msg.name, msg.data)
}Events are retained for 168 hours; queries outside that window return an empty result.
state_jump_warning
A state_jump_warning event is published when the service detects a discontinuity in the
event stream — for example, after a brief connectivity gap on the upstream side. The payload
includes the tick range of the gap.
Pause settlement on state_jump_warning
When you receive a state_jump_warning, pause any bet-settlement logic that depends on continuous
event ordering. Wait for the follow-up resync events before resuming. See the event
catalogue for the full payload shape.
Zero-downtime maintenance
Scheduled maintenance and rolling deploys do not interrupt active matches. The platform finishes the in-flight game tick, hands off cleanly, and the subscriber sees no gap in the event stream.
Fail-open billing
If the payment processor is temporarily unreachable when you call POST /api/v1/subscribe,
the subscription is still created and events begin flowing immediately. Usage is recorded
locally and synced once connectivity resumes. Delivery is never blocked by a billing
outage. You are billed for the match once the sync completes.