Skip to content

POST /v1/report

When an AI decision ends, the game reports how it ended and what changed. The service stores the last 8 reports per entity and includes them in the next /v1/decide for that entity — this is the entity’s short-term memory.

Except in the local profile, every request MUST include Authorization: Bearer <session_token> (see Security).

{
"client_id": "lango-5f2c91",
"entity_id": "28735",
"decision_id": "d_01J9Z4K7",
"action": "flee",
"status": "executed",
"outcome": {
"hp_fraction_delta": 0,
"distance_to_player_delta": 116.2,
"world_player_hp_fraction_delta": -0.1,
"seconds": 4.2
}
}
Field Notes
decision_id The decision_id of the decision being reported. Reports for ids not issued to this session and entity, or already reported, are ignored — fake reports cannot poison memory
status executed — ran until replaced; blocked — the game refused to execute it; expired — TTL passed
outcome Up to 12 scalar values chosen by the game

The reference SDK reports numeric deltas of the observation and world (<field>_delta, world keys prefixed world_) between the decision and its end, plus seconds. This is a convention, not a requirement.

Memory for an entity is dropped when it disappears from telemetry, and all memory is lost when the service restarts.

{ "ok": true }

Reports become training examples for the local policy. Additional optional fields:

{
"client_id": "…",
"entity_id": "72259471404",
"action": "flee",
"source": "AI",
"status": "executed",
"outcome": { "hp_fraction_delta": 0, "seconds": 4.2 },
"local_prediction": { "action": "flee", "confidence": 0.74 },
"policy_version": "2026-10-12.3"
}
Field Notes
source AI (service decision) or LOCAL (local-policy decision)
local_prediction In shadow and cascade: what the local policy would have chosen, for agreement metrics
policy_version The local policy that made or predicted the decision

The reference service would keep these examples in a persistent decision log, tagged with the manifest hash, instead of only in memory.