# Enrichments ## Retry **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. ### Path Parameters - `tenant_id: string` ### Body Parameters - `enrichments: optional array of "translation" or "sentiment" or "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 - `results: array of object { cleared, enrichment, outcome, 2 more }` - `cleared: number` How many records had a terminal marker removed. Zero with outcome `cleared` is a real answer: nothing was permanently failed. - `enrichment: "translation" or "sentiment" or "emotions"` - `"translation"` - `"sentiment"` - `"emotions"` - `outcome: "cleared" or "cooling_down" or "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: optional "not_configured" or "switched_off" or "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: optional number` Present only for `cooling_down`. How long until this enrichment may be cleared again. - `tenant_id: string` ### Example ```http curl http://localhost:8080/v1/tenants/$TENANT_ID/enrichments/retry \ -X POST \ -H "Authorization: Bearer $HUB_API_KEY" ```