GET Search
Poll a search for status and per-source results
GET
https://api.anakin.io/v1/ai-visibility/search/{id}Returns the search's status and every per-source result persisted so far. While status is running, results appear incrementally as each engine answers — poll every 2–5 seconds until completed.
This endpoint is also the
result_urltarget of theai.search.completed/ai.search.failedwebhook events. Deliveries inline only bounded per-source previews — the full answers live here, so webhook receivers shouldGETthis URL with their API key after each event.
Response
200 OK{
"search_id": "3d9db7ff-6ea3-4107-88ce-7f39ecf48a84",
"status": "completed",
"country": "us",
"results": [
{
"source": "chatgpt",
"status": "completed",
"summary": "As of July 2026, these are widely regarded as…",
"full_content": "{\"prompt\":\"…\",\"answer_text\":\"…\"}",
"latency_ms": 9100,
"credits_used": 1
},
{
"source": "gemini",
"status": "failed",
"error": "Timed out waiting for the source to answer"
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
status | string | running → completed, or failed when every source fails (a search still settles as completed when only some sources fail). Runs stuck past 10 minutes are marked failed automatically |
country | string | Search geography the run executed from (set at submit; retries reuse it) |
synthesis | string | Optional — cross-source agreement/divergence summary. Generated automatically once at least two sources complete; omitted for single-source runs |
results[].source | string | Source slug |
results[].status | string | completed, failed, or timed_out (the engine didn't answer within the run window — retrying a timed-out source reconciles the original job before re-billing) |
results[].summary | string | Extracted answer summary |
results[].full_content | string | The engine's raw response payload (JSON string) |
results[].latency_ms | number | Measured engine execution time |
results[].verdict | string | Optional — AI-assessed consensus or outlier, set by the same automatic synthesis pass (absent for single-source runs) |
results[].credits_used | number | Credits billed for this source (0 when failed) |
results[].error | string | Failure reason, when status is failed |
Code Examples
curl https://api.anakin.io/v1/ai-visibility/search/3d9db7ff-6ea3-4107-88ce-7f39ecf48a84 \
-H "X-API-Key: your_api_key"import requests, time
while True:
data = requests.get(
f"https://api.anakin.io/v1/ai-visibility/search/{search_id}",
headers={"X-API-Key": "your_api_key"},
).json()
if data["status"] == "completed":
break
time.sleep(2)let data;
do {
await new Promise((r) => setTimeout(r, 2000));
data = await (
await fetch(`https://api.anakin.io/v1/ai-visibility/search/${searchId}`, {
headers: { "X-API-Key": "your_api_key" },
})
).json();
} while (data.status !== "completed");