Skip to main content
JSON-RPC 2.0 protocol implementation used by @cosmjs/tendermint-rpc for HTTP and WebSocket RPC communication.
npm install @cosmjs/json-rpc

JsonRpcClient

Sends JSON-RPC requests over a generic messaging connection.
MethodParametersReturns
constructorconnection: SimpleMessagingConnection<JsonRpcRequest, JsonRpcResponse>JsonRpcClient
runrequest: JsonRpcRequestPromise<JsonRpcSuccessResponse>
interface SimpleMessagingConnection<Request, Response> {
  readonly responseStream: Stream<Response>;
  readonly sendRequest: (request: Request) => void;
}
JsonRpcClient uses the instantiation SimpleMessagingConnection<JsonRpcRequest, JsonRpcResponse>: the stream emits already-parsed responses, and sendRequest receives structured request objects (not strings).

Parsing Functions

FunctionParametersReturns
parseJsonRpcResponsedata: unknownJsonRpcResponse
parseJsonRpcSuccessResponsedata: unknownJsonRpcSuccessResponse
parseJsonRpcErrorResponsedata: unknownJsonRpcErrorResponse
parseJsonRpcRequestdata: unknownJsonRpcRequest
parseJsonRpcIddata: unknownJsonRpcId | null (returns null if no valid id is present)

Type Guards

FunctionParametersReturns
isJsonRpcSuccessResponseresponse: JsonRpcResponseresponse is JsonRpcSuccessResponse
isJsonRpcErrorResponseresponse: JsonRpcResponseresponse is JsonRpcErrorResponse
import { parseJsonRpcResponse, isJsonRpcErrorResponse } from "@cosmjs/json-rpc";

const response = parseJsonRpcResponse(data);

if (isJsonRpcErrorResponse(response)) {
  console.error("RPC error:", response.error.message);
} else {
  console.info("Result:", response.result);
}

ID Generation

FunctionParametersReturns
makeJsonRpcIdnumber (assignable to JsonRpcId)

Key Types

JsonRpcRequest

interface JsonRpcRequest {
  readonly jsonrpc: "2.0";
  readonly id: JsonRpcId;
  readonly method: string;
  readonly params: JsonCompatibleArray | JsonCompatibleDictionary;
}

JsonRpcSuccessResponse

interface JsonRpcSuccessResponse {
  readonly jsonrpc: "2.0";
  readonly id: JsonRpcId;
  readonly result: any;
}

JsonRpcErrorResponse

interface JsonRpcErrorResponse {
  readonly jsonrpc: "2.0";
  readonly id: JsonRpcId | null;
  readonly error: JsonRpcError;
}

JsonRpcError

interface JsonRpcError {
  readonly code: number;
  readonly message: string;
  readonly data?: JsonCompatibleValue;
}

JsonRpcId

type JsonRpcId = number | string;

JsonRpcResponse

type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;

Error Codes

The jsonRpcCode object provides standard JSON-RPC 2.0 error codes:
CodeConstantDescription
-32700parseErrorInvalid JSON
-32600invalidRequestJSON is not a valid request
-32601methodNotFoundMethod does not exist
-32602invalidParamsInvalid method parameters
-32603internalErrorInternal JSON-RPC error
-32000jsonRpcCode.serverError.defaultServer error (default slot of the -32000 to -32099 implementation-defined range)