Skip to content
wickfeed

Documentation

Eight lines, then never rewrite it.

One envelope for 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 the documentation itself.

Hand any of these to a model or a script and it has everything it needs to start consuming the feed correctly, without a human transcribing this page into code. That is the point: your integration should not depend on somebody reading a website.

Artifact 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 artifact is generated from the same source as this page, so it cannot drift. All are served with permissive CORS and need no key.

Quickstart

From nothing to a live wick.

The free tier is realtime, so you can build against the real feed rather than a sandbox that behaves differently.

  1. 1

    Get an npayload key

    Wickfeed is a feed on npayload. Create a key, 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 a reaction of under. Three conditions and you are done.

  4. 4

    Replay when you need history

    Ask npayload for an offset and read the window again. Because our windows are event time ordered, 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

Every field, one table.

All four event types share this shape. moved, mouth and print omit the verdict object; only lit carries it.

Identity

type string wickfeed.<kind>.v<n>
wick_id string Deterministic. Stable across redelivery, so a duplicate is safe to discard.
prev_wick_id string | null Previous wick for this identifier. Forms a chain per contract.
id string The canonical wf: identifier.
book string midterms, fed, sports, geopol, crypto.
venue string Where this observation came from.
venue_ref string That venue’s own identifier for the contract.

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 after we had already judged that moment. It never rewrites a signal you were already sent.

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 adaptive threshold in force for this contract when it fired.

Verdict (lit only)

verdict.driver enum information, liquidity, unknown.
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 How far from proportionate, in probability points.
verdict.confidence number The judge’s confidence in the whole verdict.

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. Learned from the archive.
cause.relevance integer 0 to 100.
cause.novelty integer 0 to 100. First mention of a fact scores 100.
cause.stance enum pro_yes, pro_no, unclear. Never a sentiment score.
cause.lag_s integer Seconds between cause and move. Negative means the cause followed the move.

The versioning contract

Additive only, forever.

Your handler should tolerate unknown fields and unknown enum values. If it does, 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

Anything in the left column ships without a version bump, which is exactly why consumers must tolerate what they do not recognize.

Your agent is already watching the price. Give it the reason.

Start free. Real time from the first minute, five events an hour. One key and eight lines of code.

Subscribe on npayload
$ npx npayload subscribe wickfeed.lit

No card. No login. No dashboard.