Runtime HTTP API and External Scanner Signals

Updated May 22, 2026 · 1 min read

Use the runtime's local HTTP API to push external scanner signals, check health, and read state, plus how signals reach the LLM prompt.

The Senpi runtime exposes a local HTTP API on `127.0.0.1:8787` by default. Four endpoints:

POST /signals

Ingests external scanner signals as a JSON array body.

body
Ingest external scanner signals (JSON array body).
GET /audit

Returns strategy audit history for a wallet address.

address
Wallet address - strategy audit history via the MCP.
GET /health

Reports liveness and per-runtime signal queue depth.

-
Liveness plus per-runtime signal queue depth.
GET /state

Returns full runtime state for each running runtime, by wallet address.

address
Wallet address - full runtime state per running runtime.

Exposing the API to other hosts

Default binding is 127.0.0.1:8787 (localhost only). To call it from Postman or another host, set api.host: 0.0.0.0 in openclaw.json and add a Docker port mapping like 127.0.0.1:8787:8787. The 127.0.0.1: prefix on the host mapping is mandatory - leaving it off exposes the API to your LAN.

Pushing signals from an external scanner

  1. 1

    Define scanner

    type: external_scanner + outputs/retention block

  2. 2

    Push data

    POST /signals or gateway RPC

  3. 3

    Include fields

    address, scanner, asset, direction, signal_type + data

In the LLM prompt, signals are accessible as {{signal_<scanner_name>}} and retained context as {{context_<scanner_name>}}. Flat aliases like {{<scanner_name>}} are not created.

Share

Related articles