websocket

Websocket API

Documentation for websocket API

Notification

The structure of notification is following in all channels:

{
    "channel": "channel_name",
    "body": "<object or array>"  // depends on channel
}

Subscribe

To receive updates from websocket API send subscribe request to server.

{
    "method": "subscribe",
    "body": {
        "channel": "<CHANNEL_NAME>",
        "filters": {
            // pass channel filters
        }
    }
}

Now 3 channels are supported:

  • head - receive information about indexer state. Channel does not have any filters. Subscribe message should looks like:
{
    "method": "subscribe",
    "body": {
        "channel": "head"
    }
}

Notification body of responses.State type will be sent to the channel.

  • blocks - receive information about new blocks. Channel does not have any filters. Subscribe message should looks like:
{
    "method": "subscribe",
    "body": {
        "channel": "blocks"
    }
}

Notification body of responses.Block type will be sent to the channel.

  • gas_price - receive information about current gas price. Channel does not have any filters. Subscribe message should looks like:
{
    "method": "subscribe",
    "body": {
        "channel": "gas_price"
    }
}

Notification body of responses.GasPrice type will be sent to the channel.

Unsubscribe

To unsubscribe send unsubscribe message containing one of channel name describing above.

{
    "method": "unsubscribe",
    "body": {
        "channel": "<CHANNEL_NAME>",
    }
}

Errors

If an incoming message can not be handled (malformed payload, unknown method or unknown channel), the server replies with a notification in the error channel. The connection stays open. Internal error details are never exposed; only a stable error code and a generic message are sent.

{
    "channel": "error",
    "body": {
        "code": 2,
        "message": "unknown method"
    }
}

Supported error codes:

CodeMessageDescription
1invalid messageThe message could not be parsed (malformed JSON or invalid payload).
2unknown methodThe method field is not subscribe or unsubscribe.
3unknown channelThe requested channel is not one of head, blocks, gas_price.
get/ws

Changes