---
title: "List Site Health issues"
method: POST
path: "/api/v1/seo/issues"
tags: ["Site Health"]
---

# List Site Health issues

`POST /api/v1/seo/issues`

## Request

- Base URL: `https://api.athenahq.ai`
- URL: `https://api.athenahq.ai/api/v1/seo/issues`
- Auth: API key in header `x-api-key`

List a website's Site Health issues: one group per kind of problem (check) with its title, why it matters, severity (critical, warning, opportunity), priority (high, medium, low), owner (writer, developer or either; null when unknown), effort (minutes, hours, days), whether it is site-wide, counts of affected pages by status (open, in_progress, fixed, verified, dismissed), up to three sections it concentrates in, and sample affected pages with each page's detail, recommendation, evidence, assignee and task_revision. Filter by status, check, a search term, the stored URLs of specific pages (page_urls), or assignee "me" (signed-in connections only). Groups are paged: page is 0-based, page_size defaults to 25 (max 200) and total counts the groups that match; counts totals pages by status across the whole site, ignoring the status filter. A group carries at most 50 sample pages (10 when a tool calls it, which also caps page_size at 25); has_more_pages says to read the rest with the issue pages read (get_site_health_issue_pages or POST /v1/seo/issues/pages), whose page 0 repeats the sample pages. has_evidence false means the site has never been crawled or audited. Requires Site Health on the website's plan; otherwise the call fails with 403.

## Request body

- object
  - `website_id` string, required
  - `status` 'open' | 'in_progress' | 'fixed' | 'verified' | 'dismissed'
  - `check` string
  - `search` string
  - `assignee` 'me'
  - `page` integer
  - `page_urls` string[]
  - `page_size` integer

## Response `200`

Success

- object
  - `groups` object[], required
    - `check` string, required
    - `title` string, required
    - `why_it_matters` string, nullable, required
    - `owner` 'writer' | 'developer' | 'either', nullable, required
    - `effort` 'minutes' | 'hours' | 'days', nullable, required
    - `bucket` 'technical_cleanup' | 'content_restructuring' | 'content_enrichment', required
    - `severity` 'critical' | 'warning' | 'opportunity', required
    - `priority` 'high' | 'medium' | 'low', required
    - `site_wide` boolean, required
    - `counts` object, required
      - `open` integer, required
      - `in_progress` integer, required
      - `fixed` integer, required
      - `verified` integer, required
      - `dismissed` integer
    - `sections` object[], required
      - `section` string, required
      - `open` integer, required
      - `audited` integer, required
    - `pages` object[], required
      - `finding_id` string, required
      - `page_id` string, required
      - `property_id` string, required
      - `url` string, required
      - `status` 'open' | 'in_progress' | 'fixed' | 'verified' | 'dismissed', required
      - `page_title` string, nullable, required
      - `detail` string, required
      - `recommendation` string, nullable, required
      - `shared_value` string, nullable, required
      - `evidence` string[], required
      - `evidence_links` object[], required
        - `label` string, required
        - `url` string, required
      - `robots_txt_rule` object, nullable, required
        - `url` string, required
        - `line` integer, required
        - `excerpt` object[], required
          - `line` integer, required
          - `text` string, required
      - `first_seen_at` string, required
      - `last_seen_at` string, required
      - `resolved_at` string, nullable, required
      - `last_checked_at` string, nullable, required
      - `assignee` object, nullable, required
        - `id` string, required
        - `name` string, required
      - `task_revision` integer, required
      - `draft` object, nullable, required
        - `run_id` string, required
        - `status` string, required
    - `has_more_pages` boolean, required
  - `total` integer, required
  - `counts` object, required
    - `open` integer, required
    - `in_progress` integer, required
    - `fixed` integer, required
    - `verified` integer, required
    - `dismissed` integer
  - `page_size` integer, required
  - `has_evidence` boolean, required

## Other responses

- `400`: Bad Request: validation failed
- `401`: Unauthenticated
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `429`: Rate limited: honor Retry-After before retrying
- `500`: Internal Error

## Changes

- **2026-11-05** `6cf9ca58edf6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/athenahq/apis/athenahq-api/changes/api/v1/seo/issues/post.md)

---

[API](https://skmtc.dev/athenahq/apis/athenahq-api.md) - [All operations](https://skmtc.dev/athenahq/apis/athenahq-api/llms.txt) - [OpenAPI document](https://skmtc.dev/athenahq/apis/athenahq-api/revisions/6cf9ca58edf6?raw)
