← Studies

Push findings

One HTTPS POST per batch. Your study runs anywhere; COINJURE displays it, keeps the receipts, and enforces the embargo.
your systembot, app, scriptPOST /pushx-study-keystampedappend-onlyholdersthe moment it landseveryoneafter the delaythe floorand the board
  1. your systembot, app, script
  2. POST /pushx-study-key
  3. stampedappend-only
  4. holdersthe moment it lands
  5. everyoneafter the delay
  6. the floorand the board

The endpoint

POST https://coinjure.fun/api/studies/<slug>/push

Authenticate with the header x-study-key (or body.key). The key is shown exactly once when the study is created; we store only its hash. Up to 50 findings per request. Each finding is stamped with its arrival time and appended forever; nothing can be edited or back-dated afterward, which is the point.

Or let COINJURE run it

No server, no code: pick a template when you launch a study, set its parameters and cadence, and our runner takes the measurement and appends it to your study under the same rules (append-only, embargoed for the public, heartbeat on the card). Hosted studies are labeled hosted; every finding names its source so anyone can check the number. Three per wallet for now. You still get a push key, so you can add your own findings next to the hosted ones.

templaterecordscadence
Coin vitals
Price, depth, volume and buy/sell counts for one token, read from its deepest pool every run. Alerts when liquidity or price moves hard between runs.
price in USD, and FDV; liquidity in USD; 24h volume, buys and sells; alerts on a 20% liquidity move or a 15% price move between runs15 minutes / 1 hour / 6 hours
Stock-quoted pairs
Everything trading against an authentic tokenized stock: how many pairs, how much volume, which one is busiest, plus the stock's own on-chain volume and depth.
the stock token's 24h volume and liquidity across its deepest pools; how many pairs are quoted in the stock, and their combined volume; the busiest stock-quoted pair each run1 hour / 6 hours
Launchpad pulse
The launch rate on one venue: last hour, last 24 hours, the pair mix, and an alert when the hourly rate breaks away from its daily mean.
launches in the last hour and last 24 hours; pair mix (ETH, USDG, tokenized stocks); alerts when the rate runs 50% above or below its mean1 hour / 6 hours
Whale watch
Large transfers of one token, read from the chain's Transfer events since the last run. Each big move becomes an alert with its transaction hash.
every transfer at or above your threshold, with sender, receiver and tx hash; a per-run count of large transfers and the total moved15 minutes / 1 hour
Mirror your dashboard
You already run a dashboard somewhere (Railway, a server, a bot). Give us its public JSON endpoint and COINJURE records the numbers you name as findings, so your board, cards and clips stay live without changing your code.
each named numeric field as a metric, every run; a state line when the endpoint is unreachable or a field is missing15 minutes / 1 hour / 6 hours
Mirror a research floor
Your studies already run on a Convex-backed floor (Hyperider's Wire, or one of your own). Name the deployment, its public feed query and the study key: COINJURE mirrors every new line of that study as a finding within minutes, records the headline whenever it changes, and charts one number you name.
every new feed line of the study, minutes after it lands there, with the time it was recorded; the study's headline whenever it changes, with its current stats; one number you name (a stat, or the nth number in the headline) as a metric series5 minutes / 15 minutes / 1 hour

The live board, and your own dashboard

Every study gets a live board drawn only from its public findings: a heartbeat, a sparkline of its numbers (one series per measurement, so keep titles stable and put the number in value), tiles, and a ticker tape of the latest lines. It is the face of the study on cards, on its page and on its coin's page, and it records to a GIF for posting. Pick its look (terminal, wire, arena, sea, city, dna) when you create the study. If you already run a live dashboard somewhere public, add its URL and it is embedded next to the board; if it exposes JSON, the Mirror your dashboard template below records the fields you name as findings on a cadence, so the board stays live without changing your code.

A finding

fieldtypenotes
titlestringrequired, up to 220 chars. Write the measurement, with its number.
kindstringfinding (default) · metric · alert · state
bodystringup to 2000 chars. Say where the number came from.
valuenumberoptional numeric value, shown next to the title
unitstringe.g. bps, %, USD
tagsstring[]up to 8
metaobjectanything machine-readable you want to keep with the finding

The embargo

Every finding gets releaseAt = landedAt + delay. Holders of the study's coin (verified by a wallet signature and a live balance check) see it immediately. Everyone else sees it once a one-minute cron flips it to released. There is one feed and two audiences, not two studies. Set the delay when you create the study, or change it later from Owner tools. A delay of 0 means public instantly.

Predictions, and receipts

If your study makes a checkable claim, push it as a prediction and COINJURE settles it for you against live market data once the deadline passes. The outcome is written next to the finding, and the study card shows a running tally ("7 of 10 predictions held") that the author cannot edit. That tally is the only curation that matters here.

{ "kind": "prediction",
  "title": "$GOOSE stays above $0.0010 through Friday",
  "meta": { "claim": {
    "chain":  "robinhood",      // optional: robinhood (default), solana, base, bsc, ethereum…
    "token":  "0x…",            // token contract (or Solana mint) on that chain
    "metric": "priceUsd",       // priceUsd | marketCap | liquidityUsd | volume24h
    "op":     "gt",             // gt | lt
    "value":  0.0010,
    "by":     1757548800000     // unix ms deadline; settled after this
  } } }

Settlement reads the token's deepest pool on the claim's chain (Robinhood Chain by default; Solana, Base and the rest work too, which is how a callers study on pump.fun gets its receipts) on DexScreener within an hour or so of the deadline. Claims with no market data for three days after the deadline are marked unresolvable and do not count. Malformed claims are marked invalid and do not count either.

Examples

curl -X POST https://coinjure.fun/api/studies/YOUR-SLUG/push \
  -H "content-type: application/json" \
  -H "x-study-key: cjs_..." \
  -d '{
    "findings": [
      { "kind": "finding", "title": "PLTR spot vs perp basis compressed to 2.4bps",
        "body": "Measured on lighter-rh at 14:02 UTC. Source: venue orderbooks, mid to mid.",
        "value": 2.4, "unit": "bps", "tags": ["pltr","basis"] },
      { "kind": "alert", "title": "Funding on ETH-PERP crossed 30% APR" }
    ]
  }'
const KEY = process.env.STUDY_KEY;          // shown once when you created the study
const URL = "https://coinjure.fun/api/studies/YOUR-SLUG/push";

export async function push(findings) {
  const r = await fetch(URL, {
    method: "POST",
    headers: { "content-type": "application/json", "x-study-key": KEY },
    body: JSON.stringify({ findings }),
  });
  if (!r.ok) throw new Error(await r.text());
  return r.json(); // { ok: true, accepted: n, slug }
}

// inside your study loop:
await push([{ kind: "metric", title: "Graduation rate this week: 0.13%", value: 0.13, unit: "%" }]);
import os, requests
KEY = os.environ["STUDY_KEY"]
URL = "https://coinjure.fun/api/studies/YOUR-SLUG/push"

def push(findings):
    r = requests.post(URL, json={"findings": findings}, headers={"x-study-key": KEY}, timeout=15)
    r.raise_for_status()
    return r.json()

push([{"kind": "finding", "title": "Spread on SPY spot/perp: 3.0bps (0% past cost)", "value": 3.0, "unit": "bps"}])

Good studies

  • Push measurements, not opinions. A finding says what was observed, where, and when.
  • Push on a cadence. The heartbeat on your card is computed from your last finding; a study that stops shows as idle to everyone.
  • Name your source in body. Studies that cite sources get spotlighted; studies that don't, don't.
  • Never describe the coin as an investment or promise a return. Describe the work.