Skip to Content

Python SDK

python -m pip install reactor-sdk

First message

import os from reactor_sdk import ReactorClient, evm reactor = ReactorClient(api_key=os.environ["REACTOR_API_KEY"]) payload = evm.generate_random_numbers.encode_request(3) result = reactor.send( destination_name="base", destination_address="0x1111111111111111111111111111111111111111", action="generate_random_numbers", payload=payload, ) print(result.message_id, result.transaction_id, result.status)

The client defaults to https://api.reactor.network, reuses a requests.Session, and has a 30-second timeout. Set request_id when explicitly retrying an idempotent request. payload_hash is generated from the decoded payload bytes.

EVM helpers

parameter = evm.ReactorParameter(name="destination", value="base") chain_payload = evm.chain_message.encode("0x010203", (parameter,)) chain_request = evm.chain_message.decode(chain_payload)
web_payload = evm.web_message.encode_request( method="POST", url="https://example.com/v1", body='{"ping":"pong"}', headers=(evm.ReactorParameter("accept", "application/json"),), ) web_request = evm.web_message.decode_request(web_payload) web_response = evm.web_message.decode_response(response_payload)
random_payload = evm.generate_random_numbers.encode_request(3) random_request = evm.generate_random_numbers.decode_request(random_payload) numbers = evm.generate_random_numbers.decode_response(response_payload) # tuple[int, ...]

These APIs implement the Helper’s exact (bytes,string[],string[]), Web request/response, uint256, and uint256[] layouts. Encoded strings are ready for ReactorClient.send.

Errors and configuration

Use ReactorClient as a context manager or call close() when it owns the session. ReactorAPIError exposes status_code, code, optional detail, and optional retry_after. A custom base_url must use HTTPS, except localhost tests.

See the HTTP API for wire behavior and statuses.

Last updated on