---
title: "Get tenant enrichment status"
method: GET
path: "/v1/enrichment-status"
tags: ["Enrichment Status"]
---

# Get tenant enrichment status

`GET /v1/enrichment-status`

Returns a tenant's enrichment progress across the record-level enrichments
(translation, sentiment, emotions). For each, `enabled` reports whether the enrichment
is active for the tenant (deployment-configured and switched on / with a resolvable
target language), and `eligible`/`done` are directory-level counts of feedback records
that qualify and that have been enriched — the UI derives "in progress" as
`eligible - done`, of which `failed` is retryable and `failed_terminal` never will be.
When an enrichment is not enabled its counts are zero and
`disabled_reason` names the gate that closed it, so the UI can explain *why* rather than
silently hiding the enrichment. `as_of` is when the counts were computed, which lets a
polling client derive throughput and an ETA without the Hub computing either. The response
contains counts only (no record identifiers or content).

## Query parameters

- `tenant_id` string, required

## Response `200`

Tenant enrichment status

- EnrichmentStatusOutputBody — A tenant's enrichment progress across the record-level enrichments. Counts are directory-level totals.
  - `tenant_id` string, required
  - `as_of` string, date-time, required — When the counts were computed (UTC), not when the response was serialized. The endpoint is polled, so two responses are enough to derive throughput and an ETA client-side from the change in `done` over the change in `as_of` — the Hub computes neither.
  - `translation` EnrichmentTypeStatus, required — One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero.
    - `enabled` boolean, required — Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language).
    - `eligible` integer, required — Feedback records that qualify for this enrichment.
    - `done` integer, required — Eligible records that have been enriched.
    - `failed` integer, required — Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup.
    - `failed_terminal` integer, required — Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes.
    - `disabled_reason` 'not_configured' | 'switched_off' | 'no_target_language' — Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state).
  - `sentiment` EnrichmentTypeStatus, required — One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero.
    - `enabled` boolean, required — Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language).
    - `eligible` integer, required — Feedback records that qualify for this enrichment.
    - `done` integer, required — Eligible records that have been enriched.
    - `failed` integer, required — Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup.
    - `failed_terminal` integer, required — Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes.
    - `disabled_reason` 'not_configured' | 'switched_off' | 'no_target_language' — Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state).
  - `emotions` EnrichmentTypeStatus, required — One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero.
    - `enabled` boolean, required — Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language).
    - `eligible` integer, required — Feedback records that qualify for this enrichment.
    - `done` integer, required — Eligible records that have been enriched.
    - `failed` integer, required — Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup.
    - `failed_terminal` integer, required — Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes.
    - `disabled_reason` 'not_configured' | 'switched_off' | 'no_target_language' — Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state).

## Other responses

- `400` — Bad Request (e.g. missing or invalid tenant_id)
- `401` — Unauthorized (missing or invalid API key)
- `503` — Service Unavailable – the enrichment status service is not available (code `service_unavailable`).
- `default` — Error

## Changes

- **2026-08-25** `1897101721e4` — 10 info
  - added the optional property `emotions/disabled_reason` to the response with the `200` status
  - added the optional property `sentiment/disabled_reason` to the response with the `200` status
  - added the optional property `translation/disabled_reason` to the response with the `200` status
  - added the required property `as_of` to the response with the `200` status
  - …6 more
- **2026-07-28** `f07a56f18a7b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/formbricks/apis/formbricks-hub-api/changes/v1/enrichment-status/get.md)

---

[API](https://skmtc.dev/formbricks/apis/formbricks-hub-api.md) · [All operations](https://skmtc.dev/formbricks/apis/formbricks-hub-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/formbricks/formbricks-hub-api/revisions/84bba639c72b/schema)
