---
title: "Report a problem with a spot"
description: "Sends a spot to the moderators' review queue with a reason.\n\nOnce a spot collects enough open flags (3 by default; admins can change this), it is\n**hidden from the public map** until a moderator reviews it, and `result` is `hidden`.\nSpots verified by moderators are never hidden automatically.\n\nEach visitor can flag a spot once. Rate limit: **20 flags per hour** per visitor.\n"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.deathspot.org/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Deathspot UG API › Community

`POST /api/spots/{id}/flag`

Sends a spot to the moderators' review queue with a reason.

Once a spot collects enough open flags (3 by default; admins can change this), it is
**hidden from the public map** until a moderator reviews it, and `result` is `hidden`.
Spots verified by moderators are never hidden automatically.

Each visitor can flag a spot once. Rate limit: **20 flags per hour** per visitor.

## Path parameters

- `flagSpot.path.id` (integer, required) — The spot's numeric id.
  - example `1`

## Request body

- `flagSpot.reason` (string, required) — Why the spot needs a moderator: `inaccurate` (wrong location or details), `names_person` (names or accuses a person), `duplicate`, `abusive` (abusive or fake), `resolved` (no longer dangerous), `other`.
  - one of `"inaccurate"`, `"names_person"`, `"duplicate"`, `"abusive"`, `"resolved"`, `"other"`
- `flagSpot.note` (string, optional) — Optional context for moderators. Phone numbers are removed.
  - maxLength 300

## Example request

```json
{
  "reason": "names_person",
  "note": "The description names a boda rider."
}
```

## Code samples

### cURL

```curl
curl --request POST \
  --url https://deathspot.org/api/spots/1/flag \
  --header 'Content-Type: application/json' \
  --data '
{
  "reason": "names_person",
  "note": "The description names a boda rider."
}
'
```

### TypeScript

```typescript
const url = 'https://deathspot.org/api/spots/1/flag';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({reason: 'names_person', note: 'The description names a boda rider.'})
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://deathspot.org/api/spots/1/flag"

payload = {
    "reason": "names_person",
    "note": "The description names a boda rider."
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

The flag was recorded.

#### Example

```json
{
  "result": "flagged"
}
```

- `flagSpot.response.200.result` (string, required) — `hidden` when this flag pushed the spot over the auto-hide threshold.
  - one of `"flagged"`, `"hidden"`

### 400

The id isn't an integer, or `reason` is missing or unknown.

#### Example

```json
{
  "error": "Choose a reason"
}
```

- `flagSpot.response.400.error` (string, required) — A human-readable message you can show to users.

### 404

No approved spot has this id.

#### Example

```json
{
  "error": "Spot not found"
}
```

- `flagSpot.response.404.error` (string, required) — A human-readable message you can show to users.

### 409

The caller already flagged this spot.

#### Example

```json
{
  "error": "You already reported this spot"
}
```

- `flagSpot.response.409.error` (string, required) — A human-readable message you can show to users.

### 429

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

#### Example

```json
{
  "error": "You have reported a lot of spots recently. Please try again in an hour."
}
```

- `flagSpot.response.429.error` (string, required) — A human-readable message you can show to users.


Source: https://docs.deathspot.org/api/Community/flagSpot/index.md
