Legacy WebSocket subscriptions

The app opens several GraphQL subscriptions on the same WebSocket endpoint as Parallax:

wss://api.rivian.com/gql-consumer-subscriptions/graphql

Protocol: GraphQL over WebSocket (graphql-transport-ws).

These subscriptions return typed JSON (not base64 Parallax protobuf). They run in parallel with ParallaxMessages when both are enabled.

Headers

a-sess: <app session token>
u-sess: <user session token>
csrf-token: <csrf token>
apollographql-client-name: com.rivian.android.consumer

Connection flow

Same as Parallax: connection_initconnection_acksubscribenext frames.

GraphQL variable is typically vehicleId (string).

Subscriptions

Subscription Purpose Notes
vehicleState Full typed JSON vehicle state Used when PARALLAX_VEHICLE_STATE is off or as supplement; overlaps GetVehicleState
vehicleStateWidget Widget-sized vehicleState fragment Home screen widget
chargingSession Charging chart / liveData JSON Observed on charging detail screen; home charging often uses Parallax RVMs instead
vehicleCloudConnection Online status / last sync Pairs with GetVehicleLastConnection
vehicleCommandState Legacy command status by command id For sendVehicleCommand HMAC path
vehicleCommandStatePx Parallax command result protobuf Documented under Parallax command status
tirePressureState Tire pressure fields Subset of vehicle state
vehicleDepartureSchedules Departure schedule updates  
VehicleConsentStatus GNSS consent state  
gearGuardRemoteConfig Live view WebRTC config JSON config for Gear Guard streaming

Example: vehicleState

{
  "type": "subscribe",
  "id": "<uuid>",
  "payload": {
    "operationName": "VehicleState",
    "variables": { "vehicleId": "<your-vehicle-id>" },
    "query": "subscription VehicleState($vehicleId: String!) { vehicleState(vehicleId: $vehicleId) { ... } }"
  }
}

Exact selection sets vary by app version; correlate next payloads with GetVehicleState response fields.

Example: chargingSession

Used on the charging dive screen for typed liveData / chart fields. For protobuf live charging on the home screen, subscribe to Charging domain RVMs via ParallaxMessages instead.

Example: vehicleCommandState (legacy commands)

After sendVehicleCommand, poll completion via this subscription or the HTTP getVehicleCommand query. When state is 0, the command has finished.

For Parallax commands, use vehicleCommandStatePx instead.


This site uses Just the Docs, a documentation theme for Jekyll.