Skip to main content

publicBot

Resolve a share slug to the public LIVE-BOT projection (a delayed performance badge). ANONYMOUS — no auth directive, isolated from the authenticated resolver graph. Unlike the frozen projections, this reads a pre-computed BotPublicSnapshot sidecar (>=15-minute compute cutoff) — NEVER the live bot. Returns null for any unknown, revoked, expired, non-bot, or not-yet-snapshotted link (uniform not-found; no oracle). Money is always relative (%/ratio) and the open-position signal is a delayed, bucketed count.

publicBot(
shareToken: String!
): PublicBot

Arguments

publicBot.shareToken ● String! non-null scalar

Type

PublicBot object

The lean, anonymous, allowlisted projection of a LIVE bot — a DELAYED performance badge. This is the ENTIRE public surface of a shared bot. Unlike the frozen projections it is served from a pre-computed BotPublicSnapshot sidecar (>=15-minute compute cutoff), NEVER the live bot.

Structural safety is the whole surface:

  • Money is ALWAYS relative — returnPct / winRatePct / maxDrawdownPct percentages and a unitless profitFactor. There is NO absolute balance/stake/equity/profit.
  • status is COARSE (active/paused/stopped) — an unhealthy/error bot reads as "paused"; error_message is never exposed.
  • openPositionsBucket is a DELAYED, BUCKETED count (0 / 1-3 / 4+) as of the compute cutoff — never a live count, never per-position detail (no pair, entry/exit, size, or unrealized PnL).
  • uptimeBucket is a coarse age band — never an exact created_at/now.
  • No ids, no owner PII, no config/secret, no runner/infra, no linked entities.