Get keyword cannibalization conflicts
Keyword-cannibalization conflict groups recorded by the audit pipeline: one entry per keyword that more than one page competes for. Requires the read:site-health scope. Pass either audit_id (a specific completed audit) or site_id (resolves that site's most recent completed audit, ordered by created_at, and reports on it). If both are sent, audit_id wins and site_id is ignored; if neither is sent you get a 400 on audit_id. BOTH modes return the SAME payload: a plain ARRAY of conflict groups directly under data (not an object, and not the internal link graph an older build returned here). The array is empty when the audit ran but stored no conflicts. Read-only: no side effects beyond API-usage logging. OPTIONS is supported for CORS preflight (204, Access-Control-Allow-Methods: GET, OPTIONS). Note the two 404 bodies on this route are data-wrapped ({"data":{"error":"..."}}), not the Stripe-style error envelope used by 400/401/403/429.
Request
- Base URL: https://next.frase.io/api/v1
- URL: https://next.frase.io/api/v1/site-health/cannibalization
- Auth: API key in header X-API-KEY
Query parameters
A completed audit to report on. Required unless site_id is given. Must be a UUID and must belong to your organization.
Report on this site's latest COMPLETED audit. Ignored when audit_id is present. Must be a UUID.
Response
Keyword-cannibalization conflict groups for the resolved audit. Empty array when the audit stored none.
Changes
No recorded changes to this operation across all 1 revision of this API.