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

# Post observations

> Custom REST integration for posting observations

```
POST /v1/project/{project_id}/observations/
```

For the full schema, see the **Create observations** endpoint in the [API reference](/api-reference/introduction).

## Request

```bash theme={null}
curl -X POST "https://api.correl8.ai/v1/project/{project_id}/observations/" \
  -H "Authorization: ApiKey c8.xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "user-42",
    "interaction_id": "conv_9f3a2b1c",
    "user_sentiment": "negative",
    "observations": [
      {
        "title": "Export button missing on reports page",
        "description": "The user looked for a CSV export on the reports page. No export control is available in the current UI."
      }
    ]
  }'
```

Send one or more observations per call. Set `user_id`, `interaction_id`, `user_sentiment`, and optionally `observed_at` once on the request body, then list each observation in `observations` (minimum 1, maximum 50).

## Fields

Top-level:

| Field            | Required | Description                                                                                         |
| ---------------- | -------- | --------------------------------------------------------------------------------------------------- |
| `user_id`        | Yes      | Your identifier for the end user                                                                    |
| `interaction_id` | Yes      | Your identifier for the thread or session                                                           |
| `user_sentiment` | Yes      | Sentiment label for all items — see [User sentiment](/essentials/using/observations#user-sentiment) |
| `observations`   | Yes      | Array of observation objects                                                                        |
| `observed_at`    | No       | ISO 8601 timestamp for all items. Defaults to server time.                                          |

Each item in `observations`:

| Field         | Required | Description              |
| ------------- | -------- | ------------------------ |
| `title`       | Yes      | Short plain-text summary |
| `description` | Yes      | Plain prose with context |

## Response

Returns `201` with `{ "results": [ … ] }` — one created observation per input item. Tag matching and issue digest run asynchronously per row — see [Concepts](/essentials/concepts).
