The report is assembled on demand from the domain's latest completed audit
The AI discovery report is a read model, not a stored document: every request re-reads your latest completed audit, stamps a fresh generatedAt, and returns the current picture.
The call#
GET /v1/domains/:id/ai-discovery (authenticated session; an unknown domain answers Domain not found.). There is no plan gate on this route — any workspace member who can read the domain can pull the report. Nothing is cached server-side: no ETag, no memoization, so two calls a second apart both recompute, and generatedAt differs while sourceAuditRunId stays the same until a newer audit completes.
What it is built from#
- The audit: the newest
COMPLETEDaudit run for the domain that has results — its GEO readiness report supplies facts, crawler access, and llms.txt status; its SEO findings supply structured-data errors. - Alerts: up to 20 recent
AuditAlertrows for the tracked dimensions (schema,crawler-access), newest confirmations first — these becomerecentChanges.
The response is { "aiDiscovery": { domainId, generatedAt, sourceAuditRunId, discoveredFacts, structuredDataErrors, crawlerAccess, llmsTxt, recentChanges } }.
Where its results surface#
The dashboard never opens this endpoint directly; its signals feed the readiness scores (SEO readiness, AI Search readiness) shown on the domain's Your changes checklist — see Read facts and errors for the field-by-field contents.

