Skip to main content
Every answer served leaves a trace, with its trace_id, the core version that produced it and the app version that asked for it. This route is the only path that puts a thumb on it. Why a separate route rather than one more field on /v2/retrieve: the vote arrives after the answer, sometimes long after — the user reads, then judges — and sometimes never. It is a different gesture, with its own lifetime.
vote: 0 exists so that taking it back is a written gesture like any other. Without it, removing a thumb would mean deleting the row — losing the traced answer along with the opinion.

Idempotent

Re-posting overwrites the previous vote. That is what lets a user change their mind, and a client retry a lost send without counting twice.

Synchronous write

Unlike the trace itself, the write is synchronous: acknowledging a vote you have not written would be lying to the user who just clicked.

Errors

When trace_id comes back empty in an answer, logging is off: do not offer feedback in the UI then, rather than posting into the void.