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

# Get current enrichment data

> Read the current mapped and raw enrichment payloads for an entity, keyed by integration code — without running enrichments again.

## Overview

Returns the **current** enrichment snapshot for an entity: the last merged **mapped** data and **raw** responses stored after enrichments ran.

This endpoint is a **read**. It does **not** call external integrations and does **not** consume enrichment credits. To run integrations, use [Execute enrichment](/en/api-reference/enrichment/execute-by-id).

Use this when you need **per-integration** payloads (`mapped` / `raw` keyed by codes such as `br_cpf_enrichment`). For the **Gu1 canonical dossier** used by rules (`enrichmentData.normalized.*`), use [Get normalized enrichment](/en/api-reference/enrichment/get-normalized).

Requires granular permission **`entities:read`** on the API key (legacy fallback `entities:read`).

## Endpoint

```
GET https://api.gu1.ai/entities/{id}/enrichment-data
```

## Authentication

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Path parameters

<ParamField path="id" type="string" required>
  Gu1 entity UUID (path param name in the API is `entityId`).
</ParamField>

## Response

Envelope: `{ "success": true, "data": { ... } }`.

### When data exists (`hasEnrichmentData: true`)

<ResponseField name="entityId" type="string">
  Entity UUID.
</ResponseField>

<ResponseField name="hasEnrichmentData" type="boolean">
  `true` when a current snapshot row exists.
</ResponseField>

<ResponseField name="status" type="string">
  Snapshot status (typically `completed`).
</ResponseField>

<ResponseField name="lastExecutedAt" type="string">
  ISO 8601 timestamp of the last enrichment that updated this snapshot.
</ResponseField>

<ResponseField name="lastExecutedBy" type="string">
  User UUID that triggered the last run, or `"system"`.
</ResponseField>

<ResponseField name="lastExecutionDurationMs" type="number">
  Duration of the last run in milliseconds, when recorded.
</ResponseField>

<ResponseField name="mapped" type="object">
  Consolidated mapped fields (Gu1 mapping). Keys are typically integration codes; values are the mapped objects for that code.
</ResponseField>

<ResponseField name="raw" type="object">
  Raw upstream payloads keyed by integration code. Shape varies by integration; do not treat it as a stable Gu1 schema.
</ResponseField>

<ResponseField name="providersUsed" type="array">
  Integration codes present in this snapshot. JSON field name is `providersUsed`.
</ResponseField>

<ResponseField name="summary" type="string">
  Optional short summary of the last run.
</ResponseField>

<ResponseField name="normalizedEnrichmentId" type="string">
  UUID of the related [normalized enrichment](/en/api-reference/enrichment/get-normalized) row, when linked.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 timestamp when the snapshot row was created.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 timestamp of the last snapshot update.
</ResponseField>

### When the entity exists but has no snapshot

HTTP **200** with `hasEnrichmentData: false` (not a 404):

```json theme={null}
{
  "success": true,
  "data": {
    "entityId": "550e8400-e29b-41d4-a716-446655440000",
    "hasEnrichmentData": false,
    "message": "No enrichment data available for this entity"
  }
}
```

This is different from [normalized enrichment](/en/api-reference/enrichment/get-normalized), which returns **404** when no normalized row exists.

## Errors

| HTTP  | `error.code`       | When                                    |
| ----- | ------------------ | --------------------------------------- |
| `404` | `ENTITY_NOT_FOUND` | Entity UUID is not in this organization |
| `403` | —                  | Entity is hidden from the caller        |
| `500` | `INTERNAL_ERROR`   | Unexpected failure                      |

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000/enrichment-data" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000/enrichment-data',
    { headers: { Authorization: 'Bearer YOUR_API_KEY' } }
  );
  const body = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000/enrichment-data',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )
  print(response.json())
  ```
</CodeGroup>

```json theme={null}
{
  "success": true,
  "data": {
    "entityId": "550e8400-e29b-41d4-a716-446655440000",
    "hasEnrichmentData": true,
    "status": "completed",
    "lastExecutedAt": "2026-09-03T15:30:00.000Z",
    "lastExecutedBy": "system",
    "lastExecutionDurationMs": 1840,
    "mapped": {
      "br_cpf_enrichment": {
        "taxId": "12345678901",
        "name": "Example Person"
      }
    },
    "raw": {
      "br_cpf_enrichment": {
        "status": "REGULAR"
      }
    },
    "providersUsed": ["br_cpf_enrichment"],
    "summary": null,
    "normalizedEnrichmentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "createdAt": "2026-09-01T12:00:00.000Z",
    "updatedAt": "2026-09-03T15:30:00.000Z"
  }
}
```

`mapped` and `raw` in production are larger and differ by integration. Treat the sample as a shape hint.

## Related

* [Get normalized enrichment](/en/api-reference/enrichment/get-normalized) — Gu1 canonical dossier
* [Execute enrichment](/en/api-reference/enrichment/execute-by-id) — run integrations
* [Get entity](/en/api-reference/entities/get) — identity, status, and risk score
* [Integration codes](/en/api-reference/integrations/provider-codes) — codes used as keys in `mapped` / `raw`
