> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joyride.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Prices

> Bidirectional. The server sends `connected` immediately after the
upgrade. The client then sends `subscribe` with one or more
`{ symbol, timeframe }` channels and receives `subscription_confirmed`
followed by a `candle_update` whenever a subscribed candle changes
(the service polls its store every 250 ms, so updates arrive at most
four times a second per channel).

Keepalive is mandatory: the server sends `ping` every 30 s and closes
any socket that has not answered with `pong` before the next ping.
A client may also send `ping` and will receive `pong`.




## AsyncAPI

````yaml _generated/asyncapi.yaml prices
id: prices
title: Prices
description: |
  Bidirectional. The server sends `connected` immediately after the
  upgrade. The client then sends `subscribe` with one or more
  `{ symbol, timeframe }` channels and receives `subscription_confirmed`
  followed by a `candle_update` whenever a subscribed candle changes
  (the service polls its store every 250 ms, so updates arrive at most
  four times a second per channel).

  Keepalive is mandatory: the server sends `ping` every 30 s and closes
  any socket that has not answered with `pong` before the next ping.
  A client may also send `ping` and will receive `pong`.
servers:
  - id: prices
    protocol: wss
    host: joyride.exchange
    bindings: []
    variables: []
address: /
parameters: []
bindings: []
operations:
  - &ref_7
    id: pricesSend
    title: Prices send
    description: Subscribe, unsubscribe, and answer keepalive pings
    type: send
    messages:
      - &ref_15
        id: subscribe
        contentType: application/json
        payload:
          - name: Subscribe
            description: >-
              Start receiving candle updates for one or more symbol/timeframe
              channels
            type: object
            properties:
              - name: type
                type: string
                description: subscribe
                required: true
              - name: channels
                type: array
                required: true
                properties:
                  - name: symbol
                    type: string
                    description: >-
                      Bare asset ticker. The server accepts `BTC`, `ETH`, `SOL`,
                      and `XRP`; the Joyride app subscribes to `BTC`, `ETH`, and
                      `SOL`.
                    enumValues:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    required: true
                  - name: timeframe
                    type: string
                    description: Candle width.
                    enumValues:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: subscribe
              x-parser-schema-id: <anonymous-schema-169>
            channels:
              type: array
              minItems: 1
              items: &ref_0
                type: object
                properties:
                  symbol:
                    type: string
                    description: >-
                      Bare asset ticker. The server accepts `BTC`, `ETH`, `SOL`,
                      and `XRP`; the Joyride app subscribes to `BTC`, `ETH`, and
                      `SOL`.
                    enum:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    x-parser-schema-id: <anonymous-schema-171>
                  timeframe: &ref_3
                    type: string
                    description: Candle width.
                    enum:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    x-parser-schema-id: PlatformCandleTimeframe
                required:
                  - symbol
                  - timeframe
                x-parser-schema-id: PlatformPricesChannel
              x-parser-schema-id: <anonymous-schema-170>
          required:
            - type
            - channels
          x-parser-schema-id: PlatformPricesSubscribeFrame
        title: Subscribe
        description: >-
          Start receiving candle updates for one or more symbol/timeframe
          channels
        example: |-
          {
            "type": "subscribe",
            "channels": [
              {
                "symbol": "BTC",
                "timeframe": "1m"
              }
            ]
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: subscribe
      - &ref_16
        id: unsubscribe
        contentType: application/json
        payload:
          - name: Unsubscribe
            description: Stop receiving candle updates for the listed channels
            type: object
            properties:
              - name: type
                type: string
                description: unsubscribe
                required: true
              - name: channels
                type: array
                required: true
                properties:
                  - name: symbol
                    type: string
                    description: >-
                      Bare asset ticker. The server accepts `BTC`, `ETH`, `SOL`,
                      and `XRP`; the Joyride app subscribes to `BTC`, `ETH`, and
                      `SOL`.
                    enumValues:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    required: true
                  - name: timeframe
                    type: string
                    description: Candle width.
                    enumValues:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: unsubscribe
              x-parser-schema-id: <anonymous-schema-172>
            channels:
              type: array
              minItems: 1
              items: *ref_0
              x-parser-schema-id: <anonymous-schema-173>
          required:
            - type
            - channels
          x-parser-schema-id: PlatformPricesUnsubscribeFrame
        title: Unsubscribe
        description: Stop receiving candle updates for the listed channels
        example: |-
          {
            "type": "<string>",
            "channels": {
              "symbol": "<string>",
              "timeframe": "<string>"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: unsubscribe
      - &ref_17
        id: clientPing
        contentType: application/json
        payload:
          - name: Client ping
            description: >-
              Optional client-initiated keepalive; the server answers with
              `pong`
            type: object
            properties:
              - name: type
                type: string
                description: ping
                required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: ping
              x-parser-schema-id: <anonymous-schema-175>
          required:
            - type
          additionalProperties: true
          x-parser-schema-id: <anonymous-schema-174>
        title: Client ping
        description: Optional client-initiated keepalive; the server answers with `pong`
        example: |-
          {
            "type": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: clientPing
      - &ref_18
        id: clientPong
        contentType: application/json
        payload:
          - name: Client pong
            description: >-
              Mandatory reply to the server's `ping`; a socket that misses one
              is closed
            type: object
            properties:
              - name: type
                type: string
                description: pong
                required: true
              - name: timestamp
                type: string
                description: Optional; the reference client sends the current time.
                required: false
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: pong
              x-parser-schema-id: <anonymous-schema-177>
            timestamp:
              type: string
              format: date-time
              description: Optional; the reference client sends the current time.
              x-parser-schema-id: <anonymous-schema-178>
          required:
            - type
          additionalProperties: true
          x-parser-schema-id: <anonymous-schema-176>
        title: Client pong
        description: >-
          Mandatory reply to the server's `ping`; a socket that misses one is
          closed
        example: |-
          {
            "type": "<string>",
            "timestamp": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: clientPong
    bindings: []
    extensions: &ref_5
      - id: x-parser-unique-object-id
        value: prices
  - &ref_6
    id: pricesReceive
    title: Prices receive
    description: Receive candle updates, confirmations, keepalive pings, and errors
    type: receive
    messages:
      - &ref_8
        id: connected
        contentType: application/json
        payload:
          - name: Connected
            description: Sent once, immediately after the upgrade
            type: object
            properties:
              - name: type
                type: string
                description: connected
                required: true
              - name: connectionId
                type: string
                description: Server-assigned connection id, for support correlation only.
                examples: &ref_1
                  - conn_42
                required: true
              - name: message
                type: string
                required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: connected
              x-parser-schema-id: <anonymous-schema-180>
            connectionId:
              type: string
              description: Server-assigned connection id, for support correlation only.
              examples: *ref_1
              x-parser-schema-id: <anonymous-schema-181>
            message:
              type: string
              x-parser-schema-id: <anonymous-schema-182>
          required:
            - type
            - connectionId
            - message
          x-parser-schema-id: <anonymous-schema-179>
        title: Connected
        description: Sent once, immediately after the upgrade
        example: |-
          {
            "type": "<string>",
            "connectionId": "<string>",
            "message": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: connected
      - &ref_9
        id: subscription_confirmed
        contentType: application/json
        payload:
          - name: Subscription confirmed
            description: Echoes the channels from the `subscribe` that was applied
            type: object
            properties:
              - name: type
                type: string
                enumValues:
                  - subscription_confirmed
                  - unsubscription_confirmed
                required: true
              - name: channels
                type: array
                required: true
                properties:
                  - name: symbol
                    type: string
                    description: >-
                      Bare asset ticker. The server accepts `BTC`, `ETH`, `SOL`,
                      and `XRP`; the Joyride app subscribes to `BTC`, `ETH`, and
                      `SOL`.
                    enumValues:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    required: true
                  - name: timeframe
                    type: string
                    description: Candle width.
                    enumValues:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    required: true
              - name: timestamp
                type: string
                required: true
        headers: []
        jsonPayloadSchema: &ref_2
          type: object
          properties:
            type:
              type: string
              enum:
                - subscription_confirmed
                - unsubscription_confirmed
              x-parser-schema-id: <anonymous-schema-183>
            channels:
              type: array
              items: *ref_0
              x-parser-schema-id: <anonymous-schema-184>
            timestamp:
              type: string
              format: date-time
              x-parser-schema-id: <anonymous-schema-185>
          required:
            - type
            - channels
            - timestamp
          x-parser-schema-id: PlatformPricesConfirmationFrame
        title: Subscription confirmed
        description: Echoes the channels from the `subscribe` that was applied
        example: |-
          {
            "type": "<string>",
            "channels": {
              "symbol": "<string>",
              "timeframe": "<string>"
            },
            "timestamp": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: subscription_confirmed
      - &ref_10
        id: unsubscription_confirmed
        contentType: application/json
        payload:
          - name: Unsubscription confirmed
            description: Echoes the channels from the `unsubscribe` that was applied
            type: object
            properties:
              - name: type
                type: string
                enumValues:
                  - subscription_confirmed
                  - unsubscription_confirmed
                required: true
              - name: channels
                type: array
                required: true
                properties:
                  - name: symbol
                    type: string
                    description: >-
                      Bare asset ticker. The server accepts `BTC`, `ETH`, `SOL`,
                      and `XRP`; the Joyride app subscribes to `BTC`, `ETH`, and
                      `SOL`.
                    enumValues:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    required: true
                  - name: timeframe
                    type: string
                    description: Candle width.
                    enumValues:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    required: true
              - name: timestamp
                type: string
                required: true
        headers: []
        jsonPayloadSchema: *ref_2
        title: Unsubscription confirmed
        description: Echoes the channels from the `unsubscribe` that was applied
        example: |-
          {
            "type": "<string>",
            "channels": {
              "symbol": "<string>",
              "timeframe": "<string>"
            },
            "timestamp": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: unsubscription_confirmed
      - &ref_11
        id: candle_update
        contentType: application/json
        payload:
          - name: Candle update
            description: The current state of one subscribed candle after a change
            type: object
            properties:
              - name: type
                type: string
                description: candle_update
                required: true
              - name: symbol
                type: string
                enumValues:
                  - BTC
                  - ETH
                  - SOL
                  - XRP
                required: true
              - name: timeframe
                type: string
                description: Candle width.
                enumValues:
                  - 1s
                  - 5s
                  - 15s
                  - 30s
                  - 1m
                  - 5m
                  - 10m
                  - 15m
                required: true
              - name: candle
                type: object
                description: >-
                  OHLC as decimal strings; ISO 8601 open and close times. The
                  service stores no volume.
                required: true
                properties:
                  - name: symbol
                    type: string
                    enumValues:
                      - BTC
                      - ETH
                      - SOL
                      - XRP
                    required: true
                  - name: timeframe
                    type: string
                    description: Candle width.
                    enumValues:
                      - 1s
                      - 5s
                      - 15s
                      - 30s
                      - 1m
                      - 5m
                      - 10m
                      - 15m
                    required: true
                  - name: openTime
                    type: string
                    required: true
                  - name: closeTime
                    type: string
                    required: true
                  - name: open
                    type: string
                    required: true
                  - name: high
                    type: string
                    required: true
                  - name: low
                    type: string
                    required: true
                  - name: close
                    type: string
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: candle_update
              x-parser-schema-id: <anonymous-schema-186>
            symbol:
              type: string
              enum:
                - BTC
                - ETH
                - SOL
                - XRP
              x-parser-schema-id: <anonymous-schema-187>
            timeframe: *ref_3
            candle:
              type: object
              description: >-
                OHLC as decimal strings; ISO 8601 open and close times. The
                service stores no volume.
              properties:
                symbol:
                  type: string
                  enum:
                    - BTC
                    - ETH
                    - SOL
                    - XRP
                  x-parser-schema-id: <anonymous-schema-188>
                timeframe: *ref_3
                openTime:
                  type: string
                  format: date-time
                  x-parser-schema-id: <anonymous-schema-189>
                closeTime:
                  type: string
                  format: date-time
                  x-parser-schema-id: <anonymous-schema-190>
                open:
                  type: string
                  x-parser-schema-id: <anonymous-schema-191>
                high:
                  type: string
                  x-parser-schema-id: <anonymous-schema-192>
                low:
                  type: string
                  x-parser-schema-id: <anonymous-schema-193>
                close:
                  type: string
                  x-parser-schema-id: <anonymous-schema-194>
              required:
                - symbol
                - timeframe
                - openTime
                - closeTime
                - open
                - high
                - low
                - close
              x-parser-schema-id: PlatformPricesCandle
          required:
            - type
            - symbol
            - timeframe
            - candle
          x-parser-schema-id: PlatformPricesCandleUpdateFrame
        title: Candle update
        description: The current state of one subscribed candle after a change
        example: |-
          {
            "type": "candle_update",
            "symbol": "BTC",
            "timeframe": "1m",
            "candle": {
              "symbol": "BTC",
              "timeframe": "1m",
              "openTime": "2026-09-09T14:03:00.000Z",
              "closeTime": "2026-09-09T14:04:00.000Z",
              "open": "113801.12",
              "high": "113877.50",
              "low": "113790.00",
              "close": "113842.31"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: candle_update
      - &ref_12
        id: serverPing
        contentType: application/json
        payload:
          - name: Server ping
            description: Keepalive every 30 s; answer with `pong` before the next one
            type: object
            properties:
              - name: type
                type: string
                enumValues:
                  - ping
                  - pong
                required: true
              - name: timestamp
                type: string
                required: true
        headers: []
        jsonPayloadSchema: &ref_4
          type: object
          properties:
            type:
              type: string
              enum:
                - ping
                - pong
              x-parser-schema-id: <anonymous-schema-195>
            timestamp:
              type: string
              format: date-time
              x-parser-schema-id: <anonymous-schema-196>
          required:
            - type
            - timestamp
          x-parser-schema-id: PlatformPricesTimestampedFrame
        title: Server ping
        description: Keepalive every 30 s; answer with `pong` before the next one
        example: |-
          {
            "type": "<string>",
            "timestamp": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: serverPing
      - &ref_13
        id: serverPong
        contentType: application/json
        payload:
          - name: Server pong
            description: Reply to a client `ping`
            type: object
            properties:
              - name: type
                type: string
                enumValues:
                  - ping
                  - pong
                required: true
              - name: timestamp
                type: string
                required: true
        headers: []
        jsonPayloadSchema: *ref_4
        title: Server pong
        description: Reply to a client `ping`
        example: |-
          {
            "type": "<string>",
            "timestamp": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: serverPong
      - &ref_14
        id: error
        contentType: application/json
        payload:
          - name: Error
            description: A rejected client frame; the socket stays open
            type: object
            properties:
              - name: type
                type: string
                description: error
                required: true
              - name: error
                type: string
                description: Machine-readable code.
                enumValues:
                  - INVALID_JSON
                  - UNKNOWN_MESSAGE_TYPE
                  - VALIDATION_ERROR
                required: true
              - name: message
                type: string
                required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            type:
              type: string
              const: error
              x-parser-schema-id: <anonymous-schema-197>
            error:
              type: string
              description: Machine-readable code.
              enum:
                - INVALID_JSON
                - UNKNOWN_MESSAGE_TYPE
                - VALIDATION_ERROR
              x-parser-schema-id: <anonymous-schema-198>
            message:
              type: string
              x-parser-schema-id: <anonymous-schema-199>
          required:
            - type
            - error
            - message
          x-parser-schema-id: PlatformPricesErrorFrame
        title: Error
        description: A rejected client frame; the socket stays open
        example: |-
          {
            "type": "error",
            "error": "VALIDATION_ERROR",
            "message": "Invalid message format"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: error
    bindings: []
    extensions: *ref_5
sendOperations:
  - *ref_6
receiveOperations:
  - *ref_7
sendMessages:
  - *ref_8
  - *ref_9
  - *ref_10
  - *ref_11
  - *ref_12
  - *ref_13
  - *ref_14
receiveMessages:
  - *ref_15
  - *ref_16
  - *ref_17
  - *ref_18
extensions:
  - id: x-parser-unique-object-id
    value: prices
securitySchemes: []

````