Skip to content
wickfeed

Documentation

Eight lines to your first event, then no rewrite.

One envelope covers every event type and every book. Get a key, subscribe to a topic, filter on the verdict. That is the whole integration.

Point your agent here

Your agent can read this documentation itself.

Hand any of these files to a model or a script and it has what it needs to consume the feed correctly, without a person transcribing this page into code.

File What it is for
/ids.json The wf: identifier registry. Free, no key.
/schema/id-entry.v1.json JSON Schema for a registry entry.
/examples/lit.json A verdict carrying event.
/examples/unknown.json An honest unexplained move.
/examples/moved.json A move with no cause attached.
/agent.json Discovery descriptor. Also at /.well-known/wickfeed.json
/docs.md This documentation as markdown.

Every file is served from this site and needs no key. The specs and examples are generated from the same source as this page.

Quickstart

From nothing to a live event.

The free tier is realtime, so you build against the same events a paying subscriber receives rather than a sandbox that behaves differently.

  1. 1

    Get an npayload key

    Wickfeed is a feed on npayload. Create a key there, then subscribe to the wickfeed topic. There is no separate Wickfeed account to manage.

  2. 2

    Subscribe to a topic

    wickfeed.lit for the verdict, or wickfeed.* for all four event types. Per contract topics exist for a single race.

  3. 3

    Filter on the verdict

    Most agents want driver equal to information, attribution above a floor they choose, and reaction equal to under. Three conditions and you are done.

  4. 4

    Replay when you need history

    Ask npayload for an offset and read the window again. Windows are ordered by the source clock, so the replay is byte identical to what was published live.

# one key, one command
npx npayload login
npx npayload subscribe wickfeed.lit

# filter to what your agent trades
npx npayload subscribe wickfeed.lit \
  --filter 'book=midterms' \
  --filter 'driver=information' \
  --filter 'reaction=under'

Envelope reference

The fields your handler reads.

All four event types share this shape. moved, mouth and print omit the verdict object. Only lit carries it. The published JSON schema carries the complete field list.

Identity

type string wickfeed.<kind>.v<n>
wick_id string wick_ plus 26 hex characters, derived from the contract, the window and the cause. Stable across redelivery, so a duplicate is safe to discard.
prev_wick_id string | null The previous wick for this identifier, forming a chain per contract. Null exactly once, at the head of the chain.
id string The canonical wf: identifier.
book string The registry book. Live today: midterms and fed. New books are added without a version bump.
venue string Where this observation came from.
venue_ref string | null That venue’s own identifier for the contract. Null until it is resolved against that venue’s live data.

Time

event_time ISO 8601 The source’s timestamp. Windows are ordered by this, never by arrival.
emit_time ISO 8601 When Wickfeed published.
late boolean True when this arrived past the lateness bound. It never rewrites a wick already published.

Price

mid number 0.0 to 1.0.
delta number Signed change across the window.
window_s integer Window length in seconds.
threshold number The threshold in force for this contract when it fired, derived from its own realized volatility.

Verdict (lit only)

verdict.driver enum information, liquidity, unknown. Unknown below an attribution of 0.30.
verdict.attribution number 0.00 to 1.00. Confidence the named cause produced the move.
verdict.reaction enum under, proportionate, over, unknown.
verdict.reaction_gap number | null Distance from proportionate, in probability points.
verdict.confidence number Judge confidence in the verdict. A lit publishes only at or above the publish floor, which starts at 0.70.

Cause

cause.kind enum mouth, print, flow.
cause.source string The account, agency or venue actually observed.
cause.source_class enum candidate, official, agency, pundit, crowd.
cause.authority enum high, medium, low.
cause.relevance integer 0 to 100. Below 70 a candidate cannot light a fuse.
cause.novelty integer 0 to 100. The first report of a fact in a 24 hour window scores 100.
cause.stance enum pro_yes, pro_no, unclear. Never a sentiment score.
cause.lag_s integer Seconds between cause and move, on source clocks only. Negative means the cause followed the move.

The versioning contract

Additive only, forever.

Tolerate unknown fields and unknown enum values in your handler. Do that, and adding the 2028 book will never break a running agent.

no version bump

  • Adding a field
  • Adding a new book, venue or source
  • Adding a new enum value
  • Adding a new event type

requires a bump

  • Removing a field
  • Changing the meaning of a field
  • Narrowing an enum

Everything in the left column ships without a version bump, which is exactly why a consumer must tolerate what it does not recognise.

Your agent sees the price move. Send it the reason.

Subscribe with an npayload key. The free tier is realtime, capped at five events an hour, and eight lines of code print your first event.

Subscribe on npayload
$ npx npayload subscribe wickfeed.lit

No card. No login. No dashboard.