Skip to main content
Version: 2.0 beta

Relay Server API

WebSocket API (JSON-RPC)

Subscribe

Interface

// Request (Client -> Server)
interface WakuSubscribeRequest {
id: number;
jsonrpc: "2.0";
method: "waku_subscribe";
params: {
topic: string;
};
}

// Response (Server -> Client)
interface WakuSubscribeResponse {
id: number;
jsonrpc: "2.0";
result: string;
}

Example

// Request (Client -> Server)
{
"id": 1,
"jsonrpc": "2.0",
"method": "waku_subscribe",
"params": {
"topic": "<TOPIC_ID>",
}
}

// Response (Server -> Client)
{
"id": 1,
"jsonrpc": "2.0",
"result": "<SUBSCRIPTION_ID>"
}

Publish

Interface

// Request (Client -> Server)
interface WakuPublishRequest {
id: number;
jsonrpc: "2.0";
method: "waku_publish";
params: {
topic: string;
message: string;
ttl: number;
};
}

// Response (Server -> Client)
interface WakuPublishResponse {
id: number;
jsonrpc: "2.0";
result: true;
}

Example

// Request (Client -> Server)
{
"id": 2,
"jsonrpc": "2.0",
"method": "waku_publish",
"params": {
"topic": "<TOPIC_ID>",
"message": "<MESSAGE_PAYLOAD>",
"ttl": 86400
}
}

// Response (Server -> Client)
{
"id": 2,
"jsonrpc": "2.0",
"result": true
}

Subscription

Interface

// Request (Server -> Client)
interface WakuSubscriptionRequest {
id: number;
jsonrpc: "2.0";
method: "waku_subscription";
params: {
id: string;
data: {
topic: string;
message: string;
};
};
}

// Response (Client -> Server)
interface WakuSubscriptionResponse {
id: number;
jsonrpc: "2.0";
result: true;
}

Example

// Request (Server -> Client)
{
"id": 3,
"jsonrpc": "2.0",
"method": "waku_subscription",
"params": {
"id": "<SUBSCRIPTION_ID>",
"data": {
"topic": "<TOPIC_ID>",
"message": "<MESSAGE_PAYLOAD>",
}
}
}

// Response (Client -> Server)
{
"id": 3,
"jsonrpc": "2.0",
"result": true
}

Unsubscribe

Interface

// Request (Client -> Server)
interface WakuUnsubscribeRequest {
id: number;
jsonrpc: "2.0";
method: "waku_unsubscribe";
params: {
topic: string;
id: string;
};
}

// Response (Server -> Client)
interface WakuUnsubscribeResponse {
id: number;
jsonrpc: "2.0";
result: true;
}

Example

// Request (Client -> Server)
{
"id": 4,
"jsonrpc": "2.0",
"method": "waku_unsubscribe",
"params": {
"topic": "<TOPIC_ID>",
"id": "<SUBSCRIPTION_ID>",
}
}

// Response (Server -> Client)
{
"id": 4,
"jsonrpc": "2.0",
"result": true
}

HTTP API

Test Hello World

  GET https://relay.walletconnect.com/hello

Response:
Status: 200
Content-Type: text/plain; charset=utf-8
Body: Hello World, this is WalletConnect v2.0

Subscribe Push Notification Webhook

  POST https://relay.walletconnect.com/subscribe
Content-Type: application/json
Body:
{
"topic": <client_id>,
"webhook": <push_notification_webhook>
}

Response:
Status: 200
Content-Type: application/json; charset=utf-8
Body:
{
"success": true
}