> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.respona.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.respona.com/_mcp/server.

# Concerns

A **concern** is a short message thread you can open on a single placement to raise an issue with the Respona team -
for example, the wrong anchor, an off-topic domain, or content that misses the brief. A placement can have **at most
one** concern.

Concern writes (raise, reply) need the `orders:write` scope; reading a concern needs `orders:read`. Tenant context is
derived from your key - a placement outside your workspace returns `404`.

## Concern status

A concern has its own status that **overlays** the placement's fulfillment status without changing it. While a
concern is active, the placement's `concern_status` reflects it:

```
RAISED ──▶ IN_REVIEW ──▶ RESOLVED
   ▲                        │
   └──────── reopen ────────┘
```

| Status      | Meaning                                                                      |
| ----------- | ---------------------------------------------------------------------------- |
| `RAISED`    | You opened the concern; the team has not replied yet.                        |
| `IN_REVIEW` | The team has engaged.                                                        |
| `RESOLVED`  | The team closed the concern. A new client message reopens it to `IN_REVIEW`. |

Raising or resolving a concern never changes the placement's fulfillment status, billing, or the order workflow - it
is a communication overlay only. See [Orders & Placements](/guides/core-concepts/orders-placements) for the
placement lifecycle itself.

## Raise a concern

Supply one or more `areas` (`TARGET_URL`, `ANCHOR`, `CONTENT`, `PUBLISHER_DOMAIN`, `OTHER`) and a non-blank `message`.

```bash
curl -X POST https://api.respona.com/rest/api/v1/orders/123/placements/456/concern \
  -H "x-api-key: $RESPONA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "areas": ["PUBLISHER_DOMAIN"], "message": "The published domain is not what we discussed." }'
```

Returns the created concern. Raising a second concern on the same placement returns `409 Conflict`.

## Read a concern

```bash
curl https://api.respona.com/rest/api/v1/orders/123/placements/456/concern \
  -H "x-api-key: $RESPONA_API_KEY"
```

Returns the concern with its full public message thread. A `404` means no concern exists on that placement (or it is
outside your workspace).

## Reply on the thread

```bash
curl -X POST https://api.respona.com/rest/api/v1/orders/123/placements/456/concern/messages \
  -H "x-api-key: $RESPONA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "message": "Any update on this?" }'
```

Appends your message. If the concern was `RESOLVED`, your reply reopens it to `IN_REVIEW`.

## Attachments

The API does **not** accept or return file attachments on any concern request or response. Internal team notes are
never exposed. Sending an unexpected field such as `attached_files` returns `400`.