Docs
Disputes
A claim anyone can cite is a claim anyone can dispute. A dispute is opened through the API by any caller above the anonymous tier, resolved on the Curated side by a human operator, and its record sits next to the claim without naming who opened it. btcintel signs nothing on Nostr and never turns a dispute into a score.
Opening one
You need a key: a token minted with POST /v1/keys/anon, a btci_ key, or a signed-in npub (identity). Name the claim by its id, say why, and attach what you have.
POST /v1/claims/ann_9990/disputes
{"reason": "wrong_entity", # wrong_subject · wrong_entity · outdated · source_misread · other
"text": "the entity named is a namesake; see the registry entry",
"evidence": [{"kind": "url", "value": "https://…"}],
"public": true, # show your text, evidence and cited note in the record (your identity never appears)
"event_id": "<note id>"} # optional: the Community note that carries your dispute (shown only with public; it names you)
201 {"id": 12, "claim_id": "ann_9990", "claim_version": 1, "status": "open", …}One open dispute per caller and claim (a second answers 409); two a day for a minted token, ten for a key or an npub, twenty on the extended tier. Agents use the MCP tool dispute_claim with the same body.
What a resolution can do
A human curator or admin resolves every dispute — an ops agent can only propose a resolution as a draft (P42). The outcome is upheld, rejected or partially_upheld, with a public note, and optionally one action on the claim, run under the operator's name and audited:
- retract — the claim stays visible with
retracted_atand the reason; it is never deleted (any claim kind). - expire — the claim's validity closes at a date (annotations, attributions and relations).
- correct — a new version of the same annotation with a new content hash (label, category, abuse, concepts, role, evidence); the source, the subject and the confidence class never change, and the previous version stays citable by its hash.
Whatever happens, the claim's provenance is untouched: a dispute changes what btcintel says about the claim, not what the source said. A dispute nobody resolved in two weeks raises an alert for ops.
The public record
GET /v1/claims/ann_9990/disputes
{"claim_id": "ann_9990",
"counts": {"open": 0, "resolved": 1},
"items": [{"id": 12, "opened_at": "…", "reason": "wrong_entity", "claim_version": 1,
"status": "resolved", "outcome": "upheld", "resolved_at": "…",
"note": "the entity was a namesake; retracted",
"text": "…"}]} # text, evidence and event_id only when the opener chose publicEvery claim object carries disputes: {open, resolved} so a reader sees at a glance whether the row is contested. The opener's identity is never part of the record, and no notification goes to the opener beyond it: btcintel keeps no contact.
What this is not
Not a vote, not a reputation, not a score. Two claims that disagree stay two claims marked disputed (mining attribution explains the rule); a dispute is a request for a human to look again, with the outcome written down. Removal or correction requests about a person go through the takedown and correction process.