Axion forecasting
Axion answers a question by running an orchestrator and a team of research agents (web search, market data, SEC filings, Fermi estimates) that cite their evidence and return graded probabilistic forecasts.
When to use
Use Axion when the user wants the odds of a future event, a deal or scenario evaluated, or a research-backed estimate: "how likely is X", "forecast whether Y", "what are the odds of Z", elections, markets, deals, geopolitics, product launches.
Setup
- Create an account at https://axion.eternis.ai and create an API key on the API Keys page. Any account can create keys.
- Add credits. API usage is prepaid and billed separately from the monthly plan; new accounts start at zero.
- Provide the key as the
AXION_API_KEYenvironment variable.
Before calling, confirm the key is present. If AXION_API_KEY is empty, stop and ask the user to set it. Do not proceed.
Procedure
Forecasts run asynchronously: start one, then poll until it reaches a terminal status. Base URL https://api.axion.eternis.ai; the key is a Bearer token on every request.
- Start a forecast:
curl -s https://api.axion.eternis.ai/forecasts \
-H "Authorization: Bearer $AXION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "Will the Fed cut rates in June 2026?", "effort": "high"}'
Returns {"id": "<token>", "status": "starting"} — id is an opaque token (e.g. L2d5qNdtxXjyjXGKTmKVMX), no fixed prefix. Use it to poll. Set effort low/medium/high and max_forecasts 1–10 to widen the run.
- Poll until
statusiscompletedorfailed, backing off a few seconds between calls:
curl -s https://api.axion.eternis.ai/forecasts/<id> \
-H "Authorization: Bearer $AXION_API_KEY"
- Read
forecasts[]. Each carriesforecast_text,probability(0–1),confidence_lower/confidence_upper,resolution_date, andreasoning. Present the probability and the reasoning behind it.
Full request and response fields, webhooks, and credit rates: see references/axion-api.md, mirrored from https://axion.eternis.ai/docs.md.
Pitfalls
- A positive credit balance is required to start a forecast. A 402 with an insufficient-credits message means add credits at https://axion.eternis.ai.
- A run takes roughly 15 seconds to 3 minutes. Poll with backoff; do not block.
- Maximum 10 concurrent in-progress threads per account (429 with
"code": "CONCURRENCY_LIMIT"otherwise). A 429CAPACITY_QUEUE_FULLis a busy deployment rather than anything you did — wait out itsRetry-Afterand send again. - A 503
MAINTENANCE_MODEmeans Axion is read-only for planned maintenance. Reads and already-running forecasts are unaffected; retry the write afterRetry-After. - A 409
THREAD_CANCELEDmeans the thread was stopped while your request was in flight — your ownstopracing your own send, since you supply the threadid. Retrying against that thread keeps failing; start a new one. - The key is read from the environment. Never print or hard-code it. In sandboxed runs, make sure
AXION_API_KEYis provided to the sandbox, not only to the host. - Successful responses are valid JSON, but a transient
5xx(an upstream reset at the ingress) can return a short plain-text body instead of the usual{"error": ...}envelope. Check the HTTP status before parsing rather than parsing the body as JSON. Resending the same request unchanged is the right answer for a5xxonly — the refusals above are deliberate, and each has its own, so retrying one of those on a timer just collects the same refusal.
Verification
A successful run ends with status completed and a non-empty forecasts[] array carrying probabilities between 0 and 1.