Won

Won é para quem lê a memória.

A maior parte desta API responde com memória. Won responde sobre ela: quanto de um store foi reescrito e até onde dá para confiar nele. É voltado ao lado que lê, normalmente o assistente que você está construindo, e não à pessoa de quem as memórias falam.

Wontopos é Won + Topos, um único lugar onde a memória mora. Won é a parte desse lugar que informa sobre a memória em vez de devolvê-la. Estas chamadas são gratuitas, somente leitura, e nunca tocam na recuperação: perguntar não custa nada ao seu usuário e não muda nada do que está guardado.

O que está disponível hoje

Por enquanto, uma chamada.

ChamadaO que faz
POST /won/revisionsQuanto deste store foi alterado desde que foi escrito. Dois números e duas frases que os explicam.

Um exemplo prático

Use a proporção, não a contagem bruta. 3 de 40 e 30 de 40 pedem tratamentos diferentes.

r = mem.revisions()
# {"revised": 3, "total": 40, "counts": "…", "excludes": "…"}

if r["revised"] / r["total"] > 0.1:
    system += "Some of what you remember here has been corrected since."
const r = await mem.revisions();
// { revised: 3, total: 40, counts: "…", excludes: "…" }

if (r.revised / r.total > 0.1) {
  system += "Some of what you remember here has been corrected since.";
}
let r = mem.revisions(None).await?;
let (rev, tot) = (r["revised"].as_f64().unwrap_or(0.0),
                r["total"].as_f64().unwrap_or(1.0));
if rev / tot > 0.1 { /* say so in the system prompt */ }
curl -X POST https://api.wontopos.com/api/v1/won/revisions \
  -H "X-API-Key: $WOS_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice"}'

# → {"user_id":"alice","revised":3,"total":40,
#     "counts":"memories a transform has touched (supersede, update, retract, image removed)",
#     "excludes":"deletions — a deleted memory leaves nothing to count"}

counts e excludes são retornados como frases, não como flags, já que quem chama costuma ser um modelo. As exclusões não são contadas.

Preço e limites

RegraValor
PreçoNenhum. As chamadas gratuitas ignoram os controles de cobrança - sem cobrança de tokens, sem taxa por requisição e sem registro de uso.
Por minuto10 por minuto, por conta e por endpoint. Consumir o minuto de um endpoint não consome o de outro.
Por hora300 por hora, por conta, compartilhadas por todas as chamadas gratuitas. Esse limite ignora o caminho, então adicionar endpoints gratuitos não aumenta o total que uma conta pode gastar.
Em relação ao tráfego pagoSeparados nas duas direções. Estas chamadas não podem deixar as suas buscas mais lentas e as suas buscas não podem esgotar estas chamadas. As chaves de uma mesma conta compartilham os buckets, então ter mais chaves não multiplica a cota.

Os dois tetos respondem 429 com Retry-After em segundos e uma mensagem indicando qual deles foi atingido.

429 rate_limit_error
Retry-After: 41

{ "error": { "type": "rate_limit_error",
    "message": "This endpoint is free and limited to 10 requests per
                minute, counted per endpoint. Retry in 41s." } }
A mesma chamada também responde em /api/v1/memory/revisions, para clientes publicados antes de a superfície Won existir. É o mesmo handler e o mesmo orçamento, não uma segunda cota. Código novo deve usar o endereço Won.