Kalkas嘉衡

API 參考

Kalkas API

REST API 的所有端點、參數及物件,直接由其 OpenAPI 文件生成。API 只供讀取:它提供資訊,從不在任何人的帳戶內行事。

版本
2026-10-03
基本網址
https://api.kalkas.ai

參考內容與 API 本身一樣以英文撰寫。

Kalkas sells information: calibrated probabilities, fair odds, the de-vigged market probability, edges and the scored record. It never places a bet or an order, and no object here carries a stake, a price, a venue or a link. Every read goes through one projection that applies the caller's grants, the data licences and the time the caller first sees a call; a free caller sees a call after its question has closed.

Pick the API version with the Kalkas-Version header (a date); without it the latest answers. Every response carries Request-Id. Errors are one shape with a type and a code. Lists take limit and an opaque cursor. A request that changes something takes an Idempotency-Key; reads ignore it.

端點

GET /v1/topics

List topics

Every topic Kalkas offers, with whether the caller holds it.

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.
limitqueryinteger否Page size, 1 to 100.
starting_afterquerystring否The next_cursor of the previous page.

回應

  • 200 OK (TopicList)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

GET /v1/decisions

List decisions

The decisions Kalkas has committed, newest question first. A caller sees a decision once its tier first sees it: in a market with first sight on, a free caller after the question closes; in a market with it off, everyone once it is committed.

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.
limitqueryinteger否Page size, 1 to 100.
starting_afterquerystring否The next_cursor of the previous page.
topicquerystring否Only this decisions topic.
statusqueryopen | resolved否open: not yet resolved. resolved: settled, void or ambiguous.
subjectquerystring否Only questions about this entity key.

回應

  • 200 OK (DecisionList)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

GET /v1/decisions/{id}

Get one decision

One decision by its question key (URL-encode it). 404 when the question has no decision this caller sees.

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.
idpathstring是
expand[]queryanalysis否analysis adds every forecaster's latest forecast.

回應

  • 200 OK (Decision)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

GET /v1/record

Get the record

The evaluator's aggregates for one decisions topic, or for every held topic.

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.
topicquerystring否Only this decisions topic.

回應

  • 200 OK (Record | RecordList)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

GET /v1/events

List events

The decision event log, oldest first, for replay: decision.created, decision.updated and decision.resolved. Resume with after.

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.
limitqueryinteger否Page size, 1 to 100.
afterquerystring否The cursor of the last event read (or next_cursor of the previous page). Absent: from the start.
typesquerystring否Comma-separated event types.
topicsquerystring否Comma-separated decisions topics.

回應

  • 200 OK (EventList)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

GET /v1/openapi.json

This document

參數位置類型必填說明
Kalkas-Versionheader2026-10-03否The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.
Idempotency-Keyheaderstring否1 to 255 visible ASCII characters. A request that changes something with the same key and request returns the first response for 24 hours; the same key with another request is 409 idempotency_key_reused. Reads ignore it.

回應

  • 200 OpenAPI 3.1 (object)
  • 400 A malformed request: see error.code and error.param. (Error)
  • 403 The caller holds no grant for the topic (permission_error). (Error)
  • 404 Nothing at this id or path. (Error)
  • 405 The route does not take this method; Allow names the one it does. (Error)
  • 409 The request conflicts with an earlier one. (Error)
  • 503 The ledger could not be read; retry after the Retry-After seconds. (Error)

物件

Error

欄位類型必填說明
errorobject是

Topic

欄位類型必填說明
objectobject是
idstring是
domainstring是
kinddecisions | analysis是
titlestring是
heldboolean是Whether the caller holds a grant for the topic.

TopicList

Every topic Kalkas offers, by id.

欄位類型必填說明
objectobject是
dataarray of Topic是
has_moreboolean是
next_cursorstring | null是Pass as the cursor parameter to continue. Opaque.

Forecast

One forecaster's latest forecast on a question.

欄位類型必填說明
forecaster_kindstring是
forecaster_versionstring是
probabilitynumber是
market_probabilitynumber | null是
known_atstring (date-time)是

Decision

欄位類型必填說明
objectobject是
idstring是The question's ledger key. URL-encode it in a path.
topicstring是
domainstring是
questionobject是
probabilitynumber | null是Kalkas's committed probability that the question resolves yes.
fair_oddsnumber | null是1 / probability.
marketobject是
edgenumber | null是
headlineobject | null是
kalkas_paper_actionobject是
committed_atstring (date-time)是
digeststring是Content digest of the decision fact.
standingunresolved | resolved | void | ambiguous是
resolutionobject | null是
scoreobject | null是
attributionarray of string是Text to show with the decision, from the data licences behind it.
versioninteger是How many decisions Kalkas has committed on the question that this caller sees.
seqstring是The decision's position in decision lists.
analysisarray of Forecast否Present only with expand[]=analysis.

DecisionList

The decisions, newest first.

欄位類型必填說明
objectobject是
dataarray of Decision是
has_moreboolean是
next_cursorstring | null是Pass as the cursor parameter to continue. Opaque.

ScoreRow

欄位類型必填說明
classstring是
forecasterstring是
forecaster_kindstring是
ninteger是
edge_vs_marketnumber | null是
log_lossnumber是
briernumber是
mean_pnumber是
hit_ratenumber是
calibration_slopenumber | null是
ecenumber是
calibration_flagstring | null是

Reliability

欄位類型必填說明
classstring是
forecasterstring是
forecaster_kindstring是
ninteger是
binsarray of object是

Record

Aggregates of the evaluator over resolved questions: no per-call rows, no stake or profit.

欄位類型必填說明
objectobject是
topicstring是
domainstring是
as_ofstring (date-time)是
resolved_questionsinteger是
void_questionsinteger是
trialsinteger是
scoresarray of ScoreRow是
calibrationarray of Reliability是
closing_line_valueobject是
attributionarray of string是

RecordList

One record per held decisions topic.

欄位類型必填說明
objectobject是
dataarray of Record是
has_moreboolean是
next_cursorstring | null是Pass as the cursor parameter to continue. Opaque.

Event

欄位類型必填說明
objectobject是
idstring是Stable: the same event has the same id however often it is read.
typedecision.created | decision.updated | decision.resolved是
topicstring是
createdstring (date-time)是
cursorstring是Pass as after to resume after this event.
dataobject是

EventList

Events in ledger order. A page ends at an event not yet due for the caller; the same cursor returns it once it is.

欄位類型必填說明
objectobject是
dataarray of Event是
has_moreboolean是
next_cursorstring | null是Pass as the cursor parameter to continue. Opaque.