---
title: "Feedback"
method: POST
path: "/api/v1/memory/feedback"
tags: ["memory"]
---

# Feedback

`POST /api/v1/memory/feedback`

## Request

- Base URL: `https://core.mnemoverse.com`
- URL: `https://core.mnemoverse.com/api/v1/memory/feedback`
- Auth: one of:
  - API key in header `X-Api-Key`
  - HTTP bearer

Report outcome for atoms (success/failure). Updates valence and Hebbian weights.

## Request body

- FeedbackRequestSchema: Request body for reporting outcome (success/failure) for atoms.
  - `atom_ids` string[], required: UUIDs of atoms to update with this outcome.
  - `outcome` number, required: Outcome signal: -1 (failure) to +1 (success).
  - `concepts` string[]: Concepts to reinforce (Hebbian) with this outcome.
  - `query_concepts` string[]: Concepts from the original query (from read result query_concepts). Enables feedback-driven co-activation: links query concepts with used atom concepts, modulated by outcome signal (stigmergy).
  - `domain` string: Domain for the feedback.

## Response `200`

Successful Response

- FeedbackResponseSchema: Response after applying feedback.
  - `updated_count` integer, required: Number of atoms whose valence was updated. SYNC mode (feedback_async=False): the real count of atoms that actually existed and were updated (missing atom_ids are skipped). ASYNC mode (feedback_async=True): a best-effort ACCEPTED-count estimate — the number of atom_ids submitted — since the authoritative count isn't known until the background worker runs.
  - `avg_valence` number, required: Average valence of updated atoms after the update. SYNC mode: the real post-update average. ASYNC mode: always 0 in the enqueue ack (the value is computed later on the worker, not returned here).
  - `coactivation_edges` integer: Number of Hebbian edges created/updated by feedback-driven co-activation. SYNC mode: the real edge count. ASYNC mode: always 0 in the enqueue ack (computed later on the worker).
  - `feedback_time_ms` number, nullable: Server wall time of the feedback pipeline in ms (TRACING_SPEC §4). Optional in the schema for client back-compat but always populated by the route.

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Validation Error
- `429`: Rate limited
- `500`: Internal server error
- `503`: Service unavailable

---

[API](https://skmtc.dev/mnemoverse/apis/mnemoverse-core.md) · [All operations](https://skmtc.dev/mnemoverse/apis/mnemoverse-core/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemoverse/apis/mnemoverse-core/revisions/1f5e0048f017?raw)
