---
title: "Blast radius — who was told this memory"
method: GET
path: "/v2/workspaces/{id}/memories/{memoryId}/disclosures"
tags: ["Disclosures"]
---

# Blast radius — who was told this memory

`GET /v2/workspaces/{id}/memories/{memoryId}/disclosures`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/workspaces/{id}/memories/{memoryId}/disclosures`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

This memory was compromised; here is exactly who was told, when, and through what channel, with each thread's current state.

`index.complete` is ALWAYS `false`, permanently, and that is not a bug: the disclosure verbs are keyed by thread and by audience, never by content, so this answer is reconstructed from the gateway's own index of the disclosures IT recorded. A disclosure written directly through the `/coord/v1` passthrough is a real telling this answer cannot see. Read `index.reason` before acting on the result.

Requires the `coord:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `coord:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which does NOT include `coord:read` — mint a key with it explicitly (`POST /v2/workspaces/{id}/keys`).

## Path parameters

- `id` string, required
- `memoryId` string, required

## Response `200`

Every telling of this memory the gateway indexed

- object
  - `memory_id` string, required
  - `told` object[], required
    - `disclosure` string, required
    - `audience` string, required
    - `channel` string, required
    - `recorded` string, required
    - `current_content` object
      - `space` 'memory' | 'assertion', required
      - `id` string, required
    - `amended` boolean
    - `retracted_noticed` boolean
    - `lineage_reason` string
  - `lineage_folded` number, required
  - `degraded` boolean
  - `degraded_reason` string
  - `index` object, required
    - `complete` false, required
    - `reason` string, required

## Other responses

- `401`: Missing/invalid credential, or `credential_expired` — the credential is outside its `[not_before, expires_at)` window and must be replaced
- `403`: `insufficient_scope` — the credential's own scope set, or the caller's role on this workspace, does not cover the scope this route requires (the missing scope is named in the message). Or `forbidden` — the credential is not scoped to this workspace, or holds no grant on it

---

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