---
title: "Get audit"
method: GET
path: "/audits/{id}"
tags: ["Audits"]
---

# Get audit

`GET /audits/{id}`

## Request

- Base URL: `https://next.frase.io/api/v1`
- URL: `https://next.frase.io/api/v1/audits/{id}`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer

Retrieve audit details and summary.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `include_pages` boolean
- `page_limit` integer

## Response `200`

Audit details

- object
  - `data` object
    - `id` string, uuid
    - `name` string, nullable
    - `type` string
    - `status` string
    - `progress` integer, nullable
    - `pages_audited` integer, nullable
    - `total_issues` integer, nullable
    - `critical_issues` integer, nullable
    - `overall_score` integer, nullable
    - `summary` object, nullable
    - `cannibalization` object[], nullable: Keyword-cannibalization groups from this audit. Null until the cannibalization pass has run. Each group carries the keyword and the competing pages; see GET /site-health/cannibalization for the same data with a stable per-group shape.
    - `internal_link_graph` object, nullable: The crawl's internal link graph as stored by the audit pipeline. Null until the link-graph pass has run. Per-page link facts are on pages[] (internal_page_rank, internal_links_in/out, click_depth, is_orphan, is_dead_end); this object is the raw graph behind them.
    - `site` object, nullable
      - `id` string
      - `name` string, nullable
      - `domain` string
    - `created_at` string, date-time
    - `completed_at` string, date-time, nullable
    - `pages` object[], nullable: Included when include_pages=true
      - `id` string
      - `url` string
      - `title` string, nullable
      - `status_code` integer, nullable: Final HTTP status of the fetch, after redirects. Recorded on crawler-discovered pages AND on manually scoped (selected-URL) audits; null only where no status was captured, which is not evidence the page was reachable. A row with status_code >= 400 is a dead-page tombstone rather than a page: it is excluded, carries no score and no issues, and exists only so the site view can retire the URL. Dead URLs that other pages still link to also surface as broken_link issues on the linking page; unlinked ones surface in the app as a single site-wide dead_page finding, which no v1 endpoint emits today.
      - `score` integer, nullable: Canonical page-v2 score: the equal mean of E-E-A-T, SEO and GEO. The same formula is used by crawl, API and synchronous single-page audits. Null when any required pillar is unmeasured — never replaced by a different formula. Formula version and coverage are recorded in analysis_provenance.score.
      - `issues` object[]
      - `word_count` integer, nullable
      - `aeo_score` integer, nullable: Answer-engine optimization score, 0-100.
      - `technical_score` integer, nullable: Derived from indexability directives, canonical, head metadata, social/viewport tags, structured data, image alt text and broken internal links. Uses the authoritative stored projection when present; for historical rows where that projection is absent, derives the same score at read time from evidence already stored on the row without modifying it. This endpoint and GET /site-health therefore report the same number for the same page. Null when no technical check could run at all — the fetch was unreliable, or no head was parsed and no head-independent check found anything — which is not the same as 0. A page whose head was never parsed is scored on the checks that never needed one (title, meta description, H1 structure, image alt text, broken links) rather than dropped. Does not include page speed or internal-link authority — see internal_page_rank for the latter. Additive: this field is new in this response, so no existing consumer loses a value. Guard for null before arithmetic.
      - `internal_page_rank` integer, nullable: PageRank over the site's internal link graph, min-max normalized across the crawled set, so it is not comparable between runs of different sizes.
      - `internal_links_in` integer, nullable
      - `internal_links_out` integer, nullable
      - `click_depth` integer, nullable: Clicks from the site root. null = not measured (the crawl contained no site root). -1 = measured and unreachable. >= 0 = depth.
      - `is_orphan` boolean, nullable: null = the link graph was not measured; false genuinely means the page is not an orphan.
      - `is_dead_end` boolean, nullable: null = the link graph was not measured; false genuinely means the page is not a dead end.
      - `eeat_score` integer, nullable
      - `geo_score` integer, nullable
      - `seo_score` integer, nullable
      - `agent_readiness_score` integer, nullable: Null on pages audited before agent-readiness probing existed.
      - `agent_readiness_breakdown` object, nullable
      - `scoring_version` string, nullable
  - `request_id` string

---

[API](https://skmtc.dev/frase/apis/frase-api.md) · [All operations](https://skmtc.dev/frase/apis/frase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frase/apis/frase-api/revisions/7fb75d89f7a4?raw)
