Skip to content

Rate Limits and Retries

WebSocket rate limiting protects persistent connections, authentication credentials, and device control channels.

Clients should treat rate limiting as a normal protection mechanism, not as a service failure.

Rate Limit Scope

ScopeDescription
Create wsTicketLimits frequent creation of one-time connection credentials
Establish WebSocket connectionLimits frequent connect, disconnect, and reconnect behavior
session.pingLimits excessive application-layer heartbeat frequency
Request topicsLimits high-frequency requests within the same connection
Device controlLimits high-frequency control for the same device or the same relay
ScenarioRecommended Value
session.pingOnce every 30 seconds
Reconnect after disconnectUse exponential backoff with jitter
Create wsTicketCreate only before connecting; do not pre-create in bulk
Status queryPrefer event-driven updates instead of tight polling loops

Rate Limited

When a WebSocket request hits a rate limit, the service may return session.error:

json
{
  "type": "event",
  "topic": "session.error",
  "data": {
    "code": "RATE_LIMITED",
    "message": "Rate limit was exceeded."
  }
}

If POST /wlte/v1/ws/ticket is rate limited, the HTTP response uses 429 RATE_LIMITED.

Client Handling

  • Reduce request frequency after receiving RATE_LIMITED
  • Use exponential backoff when reconnecting; do not reconnect immediately in a loop
  • Do not create wsTicket concurrently after a failure
  • If device control is rate limited, wait until the current operation result stabilizes before sending the next operation

Relation to HTTP Rate Limits

POST /wlte/v1/ws/ticket is a REST endpoint and follows the REST API Rate Limits and Retries.

Requests and events after the WebSocket connection is established follow the rules on this page.

Docs buildVersion v1.2.19-20260602-174859-60
Copyright © 2026 WLTE