{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Kalkas API","version":"2026-10-03","summary":"Read Kalkas decisions, analysis and records.","description":"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.\n\nPick 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.","license":{"name":"Proprietary","identifier":"LicenseRef-Kalkas-Terms"}},"servers":[{"url":"https://api.kalkas.ai"}],"paths":{"/v1/topics":{"get":{"operationId":"listTopics","summary":"List topics","description":"Every topic Kalkas offers, with whether the caller holds it.","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"starting_after","in":"query","required":false,"description":"The next_cursor of the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicList"}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/decisions":{"get":{"operationId":"listDecisions","summary":"List decisions","description":"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.","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"starting_after","in":"query","required":false,"description":"The next_cursor of the previous page.","schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"description":"Only this decisions topic.","schema":{"type":"string","examples":["decisions.racing"]}},{"name":"status","in":"query","required":false,"description":"open: not yet resolved. resolved: settled, void or ambiguous.","schema":{"enum":["open","resolved"]}},{"name":"subject","in":"query","required":false,"description":"Only questions about this entity key.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionList"}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/decisions/{id}":{"get":{"operationId":"getDecision","summary":"Get one decision","description":"One decision by its question key (URL-encode it). 404 when the question has no decision this caller sees.","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"expand[]","in":"query","required":false,"description":"analysis adds every forecaster's latest forecast.","schema":{"enum":["analysis"]}}],"responses":{"200":{"description":"OK","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Decision"}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/record":{"get":{"operationId":"getRecord","summary":"Get the record","description":"The evaluator's aggregates for one decisions topic, or for every held topic.","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"topic","in":"query","required":false,"description":"Only this decisions topic.","schema":{"type":"string","examples":["decisions.racing"]}}],"responses":{"200":{"description":"OK","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Record"},{"$ref":"#/components/schemas/RecordList"}]}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","summary":"List events","description":"The decision event log, oldest first, for replay: decision.created, decision.updated and decision.resolved. Resume with after.","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"after","in":"query","required":false,"description":"The cursor of the last event read (or next_cursor of the previous page). Absent: from the start.","schema":{"type":"string"}},{"name":"types","in":"query","required":false,"description":"Comma-separated event types.","schema":{"type":"string","examples":["decision.created,decision.resolved"]}},{"name":"topics","in":"query","required":false,"description":"Comma-separated decisions topics.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventList"}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This document","parameters":[{"$ref":"#/components/parameters/KalkasVersion"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"description":"OpenAPI 3.1","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A malformed request: see error.code and error.param.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The caller holds no grant for the topic (permission_error).","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nothing at this id or path.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The route does not take this method; Allow names the one it does.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with an earlier one.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The ledger could not be read; retry after the Retry-After seconds.","headers":{"Request-Id":{"$ref":"#/components/headers/RequestId"},"Kalkas-Version":{"$ref":"#/components/headers/KalkasVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"enum":["invalid_request_error","authentication_error","permission_error","rate_limit_error","api_error"],"description":"The class of error: what the caller should do about it."},"code":{"type":"string","description":"The specific cause, stable within an API version."},"message":{"type":"string","description":"For people. Not stable."},"param":{"type":["string","null"],"description":"The parameter or header at fault, when one is."},"request_id":{"type":"string","description":"The Request-Id of the response; quote it in a report."}},"required":["type","code","message","param","request_id"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Topic":{"type":"object","properties":{"object":{"const":"topic"},"id":{"type":"string","examples":["decisions.racing"]},"domain":{"type":"string"},"kind":{"enum":["decisions","analysis"]},"title":{"type":"string"},"held":{"type":"boolean","description":"Whether the caller holds a grant for the topic."}},"required":["object","id","domain","kind","title","held"],"additionalProperties":false},"TopicList":{"type":"object","properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Topic"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass as the cursor parameter to continue. Opaque."}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false,"description":"Every topic Kalkas offers, by id."},"Forecast":{"type":"object","properties":{"forecaster_kind":{"type":"string"},"forecaster_version":{"type":"string"},"probability":{"type":"number"},"market_probability":{"type":["number","null"]},"known_at":{"type":"string","format":"date-time"}},"required":["forecaster_kind","forecaster_version","probability","market_probability","known_at"],"additionalProperties":false,"description":"One forecaster's latest forecast on a question."},"Decision":{"type":"object","properties":{"object":{"const":"decision"},"id":{"type":"string","description":"The question's ledger key. URL-encode it in a path."},"topic":{"type":"string"},"domain":{"type":"string"},"question":{"type":"object","properties":{"class":{"type":"string"},"subject":{"type":"object","properties":{"entity":{"type":"string"},"name":{"type":["string","null"]}},"required":["entity","name"],"additionalProperties":false},"group":{"type":["string","null"]},"deadline":{"type":"string","format":"date-time"},"resolution_rule":{"type":"string"},"terms":{"description":"The question's structured terms (a symbol, a start, a band), or null."}},"required":["class","subject","group","deadline","resolution_rule","terms"],"additionalProperties":false},"probability":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Kalkas's committed probability that the question resolves yes."},"fair_odds":{"type":["number","null"],"description":"1 / probability."},"market":{"type":"object","properties":{"probability":{"type":["number","null"],"description":"The de-vigged market probability at the time. No venue is named."}},"required":["probability"],"additionalProperties":false},"edge":{"type":["number","null"]},"headline":{"oneOf":[{"type":"object","properties":{"forecaster_kind":{"type":"string"},"version":{"type":"string"}},"required":["forecaster_kind","version"],"additionalProperties":false},{"type":"null"}]},"kalkas_paper_action":{"type":"object","properties":{"acted":{"type":"boolean","description":"Whether Kalkas acted on its own paper book. Information only: there is no stake."}},"required":["acted"],"additionalProperties":false},"committed_at":{"type":"string","format":"date-time"},"digest":{"type":"string","description":"Content digest of the decision fact."},"standing":{"enum":["unresolved","resolved","void","ambiguous"]},"resolution":{"oneOf":[{"type":"object","properties":{"status":{"enum":["resolved","void","ambiguous"]},"outcome":{"type":["integer","null"]},"resolved_at":{"type":"string","format":"date-time"}},"required":["status","outcome","resolved_at"],"additionalProperties":false},{"type":"null"}]},"score":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"integer"},"log_loss":{"type":"number"},"brier":{"type":"number"}},"required":["outcome","log_loss","brier"],"additionalProperties":false},{"type":"null"}]},"attribution":{"type":"array","items":{"type":"string"},"description":"Text to show with the decision, from the data licences behind it."},"version":{"type":"integer","description":"How many decisions Kalkas has committed on the question that this caller sees."},"seq":{"type":"string","description":"The decision's position in decision lists."},"analysis":{"type":"array","items":{"$ref":"#/components/schemas/Forecast"},"description":"Present only with expand[]=analysis."}},"required":["object","id","topic","domain","question","probability","fair_odds","market","edge","headline","kalkas_paper_action","committed_at","digest","standing","resolution","score","attribution","version","seq"],"additionalProperties":false},"DecisionList":{"type":"object","properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Decision"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass as the cursor parameter to continue. Opaque."}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false,"description":"The decisions, newest first."},"ScoreRow":{"type":"object","properties":{"class":{"type":"string"},"forecaster":{"type":"string"},"forecaster_kind":{"type":"string"},"n":{"type":"integer"},"edge_vs_market":{"type":["number","null"]},"log_loss":{"type":"number"},"brier":{"type":"number"},"mean_p":{"type":"number"},"hit_rate":{"type":"number"},"calibration_slope":{"type":["number","null"]},"ece":{"type":"number"},"calibration_flag":{"type":["string","null"]}},"required":["class","forecaster","forecaster_kind","n","edge_vs_market","log_loss","brier","mean_p","hit_rate","calibration_slope","ece","calibration_flag"],"additionalProperties":false},"Reliability":{"type":"object","properties":{"class":{"type":"string"},"forecaster":{"type":"string"},"forecaster_kind":{"type":"string"},"n":{"type":"integer"},"bins":{"type":"array","items":{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"n":{"type":"integer"},"hits":{"type":"integer"},"mean_p":{"type":"number"},"observed":{"type":"number"},"low":{"type":"number"},"high":{"type":"number"}},"required":["lower","upper","n","hits","mean_p","observed","low","high"],"additionalProperties":false}}},"required":["class","forecaster","forecaster_kind","n","bins"],"additionalProperties":false},"Record":{"type":"object","properties":{"object":{"const":"record"},"topic":{"type":"string"},"domain":{"type":"string"},"as_of":{"type":"string","format":"date-time"},"resolved_questions":{"type":"integer"},"void_questions":{"type":"integer"},"trials":{"type":"integer"},"scores":{"type":"array","items":{"$ref":"#/components/schemas/ScoreRow"}},"calibration":{"type":"array","items":{"$ref":"#/components/schemas/Reliability"}},"closing_line_value":{"type":"object","properties":{"computable":{"type":"boolean"},"n":{"type":"integer"},"mean":{"type":["number","null"]}},"required":["computable","n","mean"],"additionalProperties":false},"attribution":{"type":"array","items":{"type":"string"}}},"required":["object","topic","domain","as_of","resolved_questions","void_questions","trials","scores","calibration","closing_line_value","attribution"],"additionalProperties":false,"description":"Aggregates of the evaluator over resolved questions: no per-call rows, no stake or profit."},"RecordList":{"type":"object","properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Record"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass as the cursor parameter to continue. Opaque."}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false,"description":"One record per held decisions topic."},"Event":{"type":"object","properties":{"object":{"const":"event"},"id":{"type":"string","description":"Stable: the same event has the same id however often it is read."},"type":{"enum":["decision.created","decision.updated","decision.resolved"]},"topic":{"type":"string"},"created":{"type":"string","format":"date-time"},"cursor":{"type":"string","description":"Pass as after to resume after this event."},"data":{"type":"object","properties":{"object":{"$ref":"#/components/schemas/Decision"}},"required":["object"],"additionalProperties":false}},"required":["object","id","type","topic","created","cursor","data"],"additionalProperties":false},"EventList":{"type":"object","properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass as the cursor parameter to continue. Opaque."}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false,"description":"Events in ledger order. A page ends at an event not yet due for the caller; the same cursor returns it once it is."}},"parameters":{"KalkasVersion":{"name":"Kalkas-Version","in":"header","required":false,"description":"The API version as a date. Absent: the latest. Unknown: 400 unsupported_version.","schema":{"enum":["2026-10-03"]}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"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.","schema":{"type":"string","minLength":1,"maxLength":255}}},"headers":{"RequestId":{"description":"Unique per response.","schema":{"type":"string"}},"KalkasVersion":{"description":"The API version this response was answered under.","schema":{"type":"string"}}}}}