preview

The Kāla-1 API

Ask Kāla-1, our own forecasting model, for a calibrated probability on any yes/no question, as of a date you choose, with short reasoning and the sources it used. Bring your own dated evidence, or let Kāla search the web for it.

Pricing

CallCredits
Forecast with your own evidence (evidence given)1
Forecast where Kāla searches for evidence2

Uses the same credits as Ask Kāla (buy credits). A forecast that fails is refunded automatically.

Your API keys

Sign in to create and manage keys.

Quick start

curl -X POST "https://kala-ask-260305764570.us-central1.run.app/v1/forecasts?wait=120" \
  -H "Authorization: Bearer $KALA_API_KEY" -H "Content-Type: application/json" \
  -d '{"question": "Will the RBI cut the repo rate at its December 2026 meeting?"}'

With your own evidence (1 credit), and an as-of date for back-testing:

import requests
r = requests.post("https://kala-ask-260305764570.us-central1.run.app/v1/forecasts", params={"wait": 120},
    headers={"Authorization": f"Bearer {KALA_API_KEY}"},
    json={"question": "Will India's CPI inflation for October 2026 be below 4%?",
          "as_of": "2026-10-20T00:00Z",
          "evidence": [{"date": "2026-10-13", "source": "MoSPI", "text": "September CPI inflation was 3.6% year on year."},
                       {"date": "2026-10-18", "source": "Reuters", "text": "Vegetable prices rose sharply in early October."}]})
print(r.json()["probability"], r.json()["reasoning"])

Response

{"id": "fc_8c1d…", "status": "done", "model": "kala-1-preview",
 "probability": 0.31, "samples": [0.3, 0.28, 0.35, …], "state": "open",
 "reasoning": "Base rate … the latest evidence …", "sources": [{"date": "…", "source": "…", "url": "…"}],
 "knowledge_cutoff": "2026-10-15", "point_in_time": true, "evidence_dropped_after_as_of": 0,
 "cost": 2, "balance": 38}
probabilityChance the question resolves YES: the average (in log-odds) of 8 sampled answers.
stateopen (not yet known), decided (the evidence already settles it) or unanswerable.
knowledge_cutoffThe date up to which Kāla-1 may already know outcomes from training (now 2026-10-15). Also at GET /v1/model (free, no key).
point_in_timetrue only when as_of is after the knowledge cutoff. When false, a warning explains that the model may have seen the outcome: don't use those forecasts in backtests.
evidence_dropped_after_as_ofHow many evidence items were removed because they were dated after as_of (with Kāla search and a past as_of, undated pages are removed too).
statusrunning until done: poll GET /v1/forecasts/{id} (same key; results kept 24 hours), or pass ?wait= up to 120 seconds.

Point in time: what as_of does and doesn't do

as_of controls the evidence: anything dated after it is dropped before Kāla-1 reads it, and the model is told the date. It can't erase what the model learned in training:

Base modelQwen3-8B, pretrained on public web data mostly up to 2024 (its maker hasn't published an exact cutoff).
Fine-tuningAbout 38,000 forecasting questions whose outcomes were public on or before 2026-10-15, our stated knowledge cutoff.
Clean backtestsUse as_of dates after the cutoff (point_in_time: true). Earlier dates still work, but the result is flagged, because the model may have seen the answer.

For backtests further back, we're preparing dated checkpoints trained only on data up to a given month, and we can measure leakage on your own model with a hindsight-leak audit: see Point-in-Time. The cutoff moves forward whenever the served model is retrained; every response states the one that applied.

Good to know