This is an old revision of the document!
Connecting and Authenticating
To start using the Plus500 Futures Technologies WebSocket API, clients must establish a secure WebSocket connection and authenticate before subscribing to data streams or submitting orders.
WebSocket Connection
| Environment | WebSocket URL | 
|---|---|
| Live | wss:wss.t4login.com/v1 | | Simulator | wss:wss-sim.t4login.com/v1 | 
✅ Connection Requirements:
- Protocol: WebSocket Secure (WSS) over SSL/TLS
- Port: 443 (Default for WSS)
- Message Format: Google Protocol Buffers (Protobuf)
- Keep-Alive Mechanism:- The server sends a message every 20 seconds.
- If no other message is sent during that interval, a heartbeat will be sent.
- The client must also send a heartbeat every 20 seconds.
- If no message is received for 3 heartbeat intervals, the server will drop the connection.
 
Authentication
After establishing a WebSocket connection, the first message a client must send is a `LoginRequest` message. This message supports two authentication methods:
- API Key Authentication – Only requires the `api_key` field.
- Username/Password Authentication – Requires `firm`, `username`, `password`, `app_name`, and `app_license`.
Example authentication request (`LoginRequest` in Protobuf format):
message LoginRequest {
  string api_key = 1;  // API Key authentication (optional)
  string firm = 2;      // Firm ID (required for username/password login)
  string username = 3;  // Username
  string password = 4;  // Password
  string app_name = 5;  // Application name
  string app_license = 6;  // Application license key
}
Example authentication response (`LoginResponse` in Protobuf format):
message LoginResponse {
  T4Proto.Common.LoginResult result = 1;  // Authentication result
  string session_id = 2;  // Session identifier
  string user_id = 3;  // Authenticated user ID
  string firm_id = 4;  // Firm ID
  repeated string roles = 5;  // Assigned user roles
  string error_message = 6;  // Error details (if applicable)
}
If authentication fails, the server will return an error message with one of the following `LoginResult` codes:
| LoginResult Code | Meaning | 
|---|---|
| `LOGIN_SUCCESS` | Login successful. | 
| `LOGIN_FAILED` | Login failed. Check credentials. | 
| `TWO_FACTOR_REQUIRED` | Two-factor authentication required. | 
| `UNAUTHORIZED` | The provided API key or credentials are not valid. | 
| `PASSWORD_EXPIRED` | The password must be changed before login. | 
| `LOCKED_OUT` | Too many failed login attempts. | 
Reconnection & Session Handling
If the connection is lost, clients should implement a reconnection strategy:
- Auto-reconnect: Attempt to reconnect immediately.
- No session resume: Clients must re-authenticate after reconnecting.
- System maintenance:- The system shuts down every Friday at midnight for maintenance.
- Service resumes on Sunday morning.
 
Next Steps
Once authenticated, clients can:
- Subscribe to market data streams (Quote Data).
- Retrieve account and position details (Account Data).
- Submit orders and manage trades (Order Submission).
💡 Tip: Test your WebSocket connection using tools like `wscat` or a sample SDK.