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.
/llms.txt text/plain Curated index for an LLM. Start here. /llms-full.txt text/plain Everything inlined in one fetch. /asyncapi.json application/json AsyncAPI 3.0 spec: channels, operations, messages. /schema/envelope.v1.json application/schema+json JSON Schema for the event envelope. | 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
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
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
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
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.
No card. No login. No dashboard.