Skip to content

Confirm or deny a spot

Records the caller's answer to "Is this place still dangerous?".

  • 1 means still dangerous. It also refreshes last_confirmed_at.
  • -1 means not anymore.

Each visitor has one vote per spot. Sending the opposite value changes the vote, and sending the same value again returns 409. After every vote the community status is recalculated:

Condition status
confirmations − denials ≥ 3 confirmed
denials > confirmations + 2 disputed
otherwise unverified

Rate limit: 60 votes per hour per visitor.

POST
https://deathspot.org/api/spots/{id}/vote

Path parameters

  • idintegerrequired

    The spot's numeric id.

    Example: 1

Request bodyJSON

  • value1or-1required

    1 = still dangerous, -1 = not anymore.

Returns

200

The vote was recorded. Returns the updated spot.

JSON
  • spotobjectrequired

    A reported danger spot on the public map.

    18 properties
    • idintegerrequired
      Example: 1
    • titlestringrequired
      maxLength: 80
      Example: "Mukwano Road (near CID HQ)"
    • descriptionstringrequired

      What people should know about the place. It may be empty.

      maxLength: 600
    • latnumberrequired
      format: double, maximum: 4.3, minimum: -1.6
      Example: 0.30827
    • lngnumberrequired
      format: double, maximum: 35.1, minimum: 29.5
      Example: 32.58721
    • areastringrequired

      Neighbourhood, division or landmark. It may be empty.

      maxLength: 80
      Example: "Kibuli, Makindye"
    • categorymurderormob_actionorboda_gangorrobberyorstabbingorkidnapping+1 morerequired

      What happens at the spot: murder (killing), mob_action, boda_gang, robbery (robbery or snatching), stabbing (stabbing or hacking), kidnapping, other.

    • severityintegerrequired

      1 = feels unsafe, 2 = harassment or threats, 3 = robbery or snatching, 4 = violent attack, 5 = someone was killed.

      maximum: 5, minimum: 1
      Example: 5
    • time_of_daydayornightoranyrequired

      When the spot is dangerous.

    • incident_datestring | nullrequired
      format: date
      Example: "2026-09-23"
    • source_urlstring | nullrequired

      A news, police or court source, if the reporter gave one.

      format: uri
    • created_atstringrequired
      format: date-time
    • last_confirmed_atstring | nullrequired

      When someone last voted "still dangerous".

      format: date-time
    • confirmationsintegerrequired

      Number of "still dangerous" votes.

      minimum: 0
    • denialsintegerrequired

      Number of "not anymore" votes.

      minimum: 0
    • statusunverifiedorconfirmedordisputedrequired

      The community's verdict from votes. confirmed needs at least 3 more confirmations than denials, and disputed means denials outnumber confirmations by more than 2.

    • moderator_verifiedbooleanrequired

      true when a moderator has checked the spot against a reliable source. Shown as "Verified by moderators".

    • seededbooleanrequired

      true for spots loaded from the project's sourced seed data rather than reported through the app.

400

The id isn't an integer, or value isn't 1 or -1.

JSON
  • errorstringrequired

    A human-readable message you can show to users.

404

No approved spot has this id. Pending and rejected spots can't be voted on.

JSON
  • errorstringrequired

    A human-readable message you can show to users.

409

The caller already voted this way on this spot.

JSON
  • errorstringrequired

    A human-readable message you can show to users.

429

The caller exceeded a rate limit. Wait Retry-After seconds before retrying.

JSON
  • errorstringrequired

    A human-readable message you can show to users.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close