DEVELOPERS

Build on The Record

Embed a live call, pull the crowd’s consensus, or drive it from the terminal. Reads are public, CORS-open, and need no key. Everything is play-money — no cash, ever.

01 · THE WIDGET

Embed any call

Drop one <iframe> on a page. It shows the question, the crowd’s live YES/NO split, and buttons that take a reader onto The Record with free points. The tiny loader script sizes the frame to its content — no clipping, no empty box.

<iframe src="https://vigfi.com/embed/lv-prata-vetra-liepaja-2026" width="560" height="240"
  style="border:0;width:100%;max-width:560px" loading="lazy"
  title="On the record — vigfi.com"></iframe>
<script>(function(){if(window.__vigfiEmbed)return;window.__vigfiEmbed=1;
  addEventListener("message",function(e){if(e.origin!=="https://vigfi.com"||!e.data||
  e.data.type!=="vigfi:embed-height")return;var f=document.querySelectorAll(
  'iframe[src^="https://vigfi.com/embed/"]');for(var i=0;i<f.length;i++)
  if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})})();</script>

Configuration

Append query params to the src:

ParamValuesDefaultEffect
langlv · en · et · ltcall’s regionForce the widget’s language
themelight · dark · autolightMatch a light or dark host page (auto follows the reader’s OS)
compact1Shorter card — hides the consensus meter
https://vigfi.com/embed/lv-prata-vetra-liepaja-2026?lang=en&theme=light

One requirement: your CSP

If your site sets a Content-Security-Policy, it must allow our frame. Add:

Content-Security-Policy: frame-src https://vigfi.com

It recognises a signed-in reader

If the reader is already logged in to The Record, the widget greets them by handle and lets them place the call inline — no leaving your page. Where a browser blocks third-party cookies (Safari, and increasingly Chrome), the widget shows a one-tap “Recognise me”(Storage Access API); if that’s declined it falls back gracefully — YES/NO simply open vigfi.com in a new tab with the side pre-filled. You don’t configure any of this; it degrades on its own.

02 · THE API

Read the record

A small JSON API. Public, read-only, CORS-open (Access-Control-Allow-Origin: *), no key. Base URL:

https://vigfi.com/api/v1

GET /calls

List calls with their consensus. Filters: market (lv·lt·ee·global), category, status (open·resolved), limit.

curl "https://vigfi.com/api/v1/calls?market=lv&limit=3"
{
  "count": 3,
  "calls": [
    {
      "slug": "lv-prata-vetra-liepaja-2026",
      "title": "Prāta Vētras koncertā Liepājā (18. jūlijā) līs",
      "category": "culture",
      "market": "lv",
      "status": "open",
      "deadline": "2026-07-18T22:00:00Z",
      "consensus": { "yes_pct": 41, "forecasters": 5 },
      "event": "prata-vetra-tura-2026",
      "url": "https://vigfi.com/p/lv-prata-vetra-liepaja-2026",
      "embed": "https://vigfi.com/embed/lv-prata-vetra-liepaja-2026"
    }
  ]
}

GET /calls/:slug

One call, with its full terms and how it resolves.

curl "https://vigfi.com/api/v1/calls/lv-prata-vetra-liepaja-2026"

GET /calls/:slug/history

The full consensus time series — one point per landed forecast, same weighted-pool math as the live number (methodology). Add ?format=csv for a CSV download. Free to cite with attribution.

curl "https://vigfi.com/api/v1/calls/lv-prata-vetra-liepaja-2026/history"
curl -OJ "https://vigfi.com/api/v1/calls/lv-prata-vetra-liepaja-2026/history?format=csv"

GET /markets

The markets and their open-call counts.

curl "https://vigfi.com/api/v1/markets"

Writes (sealing your own calls, placing forecasts by machine) are on the roadmap and will use issued keys. Want early access? Get in touch.

03 · THE CLI

From the terminal

A zero-dependency Node script (18+) over the same API.

curl -fsSL https://vigfi.com/cli/vigfi.mjs -o vigfi && chmod +x vigfi
./vigfi markets
./vigfi calls --market lv --category weather
./vigfi call lv-prata-vetra-liepaja-2026
./vigfi embed lv-prata-vetra-liepaja-2026 --lang en --theme light
./vigfi calls --json | jq '.calls[].slug'

Point VIGFI_API at another origin to run it against a preview. Reads need no key.