Skip to Content

TypeScript SDK

Install the off-chain HTTP client and EVM payload helpers:

npm install @reactor-network/sdk

First message

import { ReactorClient, evm } from "@reactor-network/sdk"; const reactor = new ReactorClient({ apiKey: process.env.REACTOR_API_KEY! }); const payload = evm.generateRandomNumbers.encodeRequest({ count: 3 }); const result = await reactor.send({ destinationName: "base", destinationAddress: "0x1111111111111111111111111111111111111111", action: "generate_random_numbers", payload, }); console.log(result.messageId, result.transactionId, result.status);

ReactorClient defaults to https://api.reactor.network, uses native Fetch, and has a 30-second timeout. Provide requestId to send when explicitly retrying the same idempotent request. The client calculates payload_hash from the decoded payload bytes.

EVM helpers

chain_message

const payload = evm.chainMessage.encode({ payload: "0x010203", parameters: [{ name: "destination", value: "base" }], }); const decoded = evm.chainMessage.decode(payload);

This encodes (bytes,string[],string[]) and returns a ChainMessagePayload on decode.

web_message

const payload = evm.webMessage.encodeRequest({ method: "POST", url: "https://example.com/v1", body: JSON.stringify({ ping: "pong" }), headers: [{ name: "accept", value: "application/json" }], }); const request = evm.webMessage.decodeRequest(payload); const response = evm.webMessage.decodeResponse(responsePayload);

Headers are encoded in the Reactor parameter envelope with a header. prefix. decodeResponse returns { statusCode: bigint, body, headers } from (uint256,string,string[],string[]).

generate_random_numbers

const payload = evm.generateRandomNumbers.encodeRequest({ count: 3 }); const request = evm.generateRandomNumbers.decodeRequest(payload); const numbers = evm.generateRandomNumbers.decodeResponse(responsePayload); // bigint[]

The count is a positive uint256; the response is uint256[].

Errors and cancellation

Pass { signal } as the second send argument to cancel. API failures throw ReactorApiError with status, code, optional detail, and optional retryAfter. A custom base URL must use HTTPS, except http://localhost for local tests.

See the HTTP API for wire behavior and statuses.

Last updated on