Skip to main content
POST /v1/project/{project_id}/observations/
For the full schema, see the Create observations endpoint in the API reference.

Request

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:
FieldRequiredDescription
user_idYesYour identifier for the end user
interaction_idYesYour identifier for the thread or session
user_sentimentYesSentiment label for all items — see User sentiment
observationsYesArray of observation objects
observed_atNoISO 8601 timestamp for all items. Defaults to server time.
Each item in observations:
FieldRequiredDescription
titleYesShort plain-text summary
descriptionYesPlain prose with context

Response

Returns 201 with { "results": [ … ] } — one created observation per input item (id, processing_status, observed_at, tags, etc.). Tag matching and issue digest run asynchronously per row — see Concepts.