POST Retry Source
Re-run one failed source for an existing search
https://api.anakin.io/v1/ai-visibility/search/{id}/retryRe-runs a single source against an existing search's prompt, replacing that source's stored result. The call is synchronous — it returns when the engine answers (or fails). The retried source is billed again on success, and its previous consensus/outlier verdict is cleared. Retries are rate-limited to 30 per minute per account.
One exception to re-billing: if the source previously ended timed_out, the retry first checks whether the original engine job finished after the run window closed — if it did, that answer is adopted without a new charge; only a genuinely fresh re-run bills again.
Request Body
{
"source": "gemini"
}| Parameter | Type | Description |
|---|---|---|
source required | string | The source slug to re-run |
Response
200 OK{
"source": "gemini",
"status": "completed",
"summary": "The smartphone class of 2026 has delivered…",
"full_content": "{\"prompt\":\"…\",\"answer_text\":\"…\"}",
"latency_ms": 21400,
"credits_used": 1
}Returns the updated result for that source only — the same shape as an entry in results[] from GET /v1/ai-visibility/search/{id}.
Code Examples
curl -X POST https://api.anakin.io/v1/ai-visibility/search/3d9db7ff-6ea3-4107-88ce-7f39ecf48a84/retry \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{"source": "gemini"}'import requests
result = requests.post(
f"https://api.anakin.io/v1/ai-visibility/search/{search_id}/retry",
headers={"X-API-Key": "your_api_key"},
json={"source": "gemini"},
).json()const result = await (
await fetch(`https://api.anakin.io/v1/ai-visibility/search/${searchId}/retry`, {
method: "POST",
headers: { "X-API-Key": "your_api_key", "Content-Type": "application/json" },
body: JSON.stringify({ source: "gemini" }),
})
).json();