---
title: "Read this org's Customer Voice retention settings"
method: GET
path: "/orgs/{org_id}/customer-voice/settings"
tags: ["Organizations"]
---

# Read this org's Customer Voice retention settings

`GET /orgs/{org_id}/customer-voice/settings`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/orgs/{org_id}/customer-voice/settings`
- Auth: HTTP bearer

Returns the org's Aletheia Customer Voice retention configuration (`feedback_retention_settings`, migration 464) — the documented default (`retention_days: null`, retain indefinitely) if the org has never configured one. `enforcement_active` is always `false` today: this build ships configuration + storage + audit only, not an enforcing deletion cron (tracked follow-up, MNE-440/MNE-443). `owner`, `admin`, and `auditor` roles only. Every read is recorded to the governance audit trail.

## Path parameters

- `org_id` string, required

## Response `200`

This org's Customer Voice retention settings.

- RetentionSettings: Aletheia Customer Voice retention configuration for an org (MNE-2407, `feedback_retention_settings`). `retention_days` is a caller-configured retention window (1-3650) or `null` to retain indefinitely (the default for an org with no configured row yet). `enforcement_active` is ALWAYS `false` today — this build ships configuration + storage + audit only; no cron yet reads `retention_days` to auto-erase aged submissions (tracked follow-up, MNE-440/MNE-443). Returned by both `GET` and `PATCH .../customer-voice/settings`.
  - `org_id` string, required: Organization identifier (e.g. org-abc12345).
  - `retention_days` integer, nullable, required: Retention window in days, or `null` to retain indefinitely.
  - `updated_by` string, nullable: User id that last wrote this setting, or `null` if never set.
  - `updated_at` string, date-time, nullable: When this setting was last written, or `null` if never set.
  - `enforcement_active` boolean, required: Always `false` today (honest-voice, MNE-440/MNE-443): retention configuration is stored and audited but not yet enforced by any deletion cron.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
