Skip to content
Support

Retry permanently-failed enrichments for a tenant

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 ParametersExpand Collapse
tenant_id: string
Body ParametersExpand Collapse
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.

Accepts one of the following:
"translation"
"sentiment"
"emotions"
ReturnsExpand Collapse
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.

formatint64
enrichment: "translation" or "sentiment" or "emotions"
Accepts one of the following:
"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.

Accepts one of the following:
"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.

Accepts one of the following:
"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.

formatint64
tenant_id: string

Retry permanently-failed enrichments for a tenant

curl http://localhost:8080/v1/tenants/$TENANT_ID/enrichments/retry \
    -X POST \
    -H "Authorization: Bearer $HUB_API_KEY"
{
  "results": [
    {
      "cleared": 0,
      "enrichment": "translation",
      "outcome": "cleared",
      "disabled_reason": "not_configured",
      "retry_after_seconds": 0
    }
  ],
  "tenant_id": "tenant_id"
}
Returns Examples
{
  "results": [
    {
      "cleared": 0,
      "enrichment": "translation",
      "outcome": "cleared",
      "disabled_reason": "not_configured",
      "retry_after_seconds": 0
    }
  ],
  "tenant_id": "tenant_id"
}