# Enrichments ## Retry `client.tenants.enrichments.retry(stringtenantID, EnrichmentRetryParamsbody?, RequestOptionsoptions?): EnrichmentRetryResponse` **post** `/v1/tenants/{tenant_id}/enrichments/retry` Clears the terminal failure markers for a tenant so the reconciler will attempt those records again. The automatic sweep deliberately never revives a terminal record: a terminal failure is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit — so re-running it costs a provider call and fails identically. This endpoint is the override for when that premise has changed: the text was edited, or the provider changed its policy. Because of that, it is **rate limited per (tenant, enrichment)**. Clearing is a request to spend a provider call on every record already known to fail, so an unbounded clear would be a cost-amplification loop. A refused call returns `cooling_down` with the remaining wait rather than silently doing nothing. Every requested enrichment gets its own outcome — a tenant can have one cleared, one cooling down and one switched off in the same call. Responds 202: clearing is synchronous, but the retrying is not. ### Parameters - `tenantID: string` - `body: EnrichmentRetryParams` - `enrichments?: Array<"translation" | "sentiment" | "emotions">` Which enrichments to clear. Omit or leave empty for all of them, which is the usual call. An unknown name is rejected rather than ignored, so a typo cannot come back as a successful no-op. - `"translation"` - `"sentiment"` - `"emotions"` ### Returns - `EnrichmentRetryResponse` - `results: Array` - `cleared: number` How many records had a terminal marker removed. Zero with outcome `cleared` is a real answer: nothing was permanently failed. - `enrichment: "translation" | "sentiment" | "emotions"` - `"translation"` - `"sentiment"` - `"emotions"` - `outcome: "cleared" | "cooling_down" | "disabled"` `cleared` — the markers were removed and the records will be picked up by the next reconcile sweep. `cooling_down` — this enrichment was cleared too recently; see `retry_after_seconds`. `disabled` — the enrichment is not running for this tenant, so clearing would queue work the worker skips; see `disabled_reason`. - `"cleared"` - `"cooling_down"` - `"disabled"` - `disabled_reason?: "not_configured" | "switched_off" | "no_target_language"` Present only for `disabled`. Same values the enrichment-status endpoint uses, so a consumer needs one vocabulary rather than two. - `"not_configured"` - `"switched_off"` - `"no_target_language"` - `retry_after_seconds?: number` Present only for `cooling_down`. How long until this enrichment may be cleared again. - `tenant_id: string` ### Example ```typescript import FormbricksHub from '@formbricks/hub'; const client = new FormbricksHub({ apiKey: process.env['HUB_API_KEY'], // This is the default and can be omitted }); const response = await client.tenants.enrichments.retry('tenant_id'); console.log(response.tenant_id); ```