Site Audit Issues
const url = 'https://sitechecker.pro/api/v1/audit_issues?project_id=12345&segment_id=all_pages&severity=critical&category=links&only_changed=false&order_by=affected_pages_count_desc&limit=50&offset=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://sitechecker.pro/api/v1/audit_issues?project_id=12345&segment_id=all_pages&severity=critical&category=links&only_changed=false&order_by=affected_pages_count_desc&limit=50&offset=0' \ --header 'Authorization: Bearer <token>'Returns Site Audit issues for a project or segment, including each issue’s severity, category, affected page count, and change compared with the previous crawl.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
Example
all_pagesOptional segment scope filter.
Example
linksPage size.
Pagination offset.
Responses
Section titled “Responses”Issues breakdown
object
object
Latest crawl date.
object
Stable Site Audit issue type ID from backend issue dictionary.
Issue title/name.
Short explanation (catalogue “whatItIs”; site-level checks use their own description).
Issue severity.
Issue category.
Current affected pages count.
Diff vs previous crawl.
object
Reusable OpenAPI response schemas for the Public REST API: the error/meta envelope and one item schema per resource. Property names come from the Field registry so the documented contract and the runtime response shapes stay in lock-step.
Example
{ "data": { "current_crawl_date": "2026-05-12T08:30:00Z", "issues": [ { "issue_id": 201, "issue_name": "Has an internal link with no anchor text", "issue_description": "Internal links without anchor text.", "severity": "critical", "category": "links", "affected_pages_count": 123, "affected_pages_count_diff": -23 } ] }, "meta": { "total": 137, "limit": 50, "offset": 0 }}Missing or invalid API key
object
object
Example
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key." }}No active API entitlement for the account, or the project belongs to another account
Returned as api_access_denied when the account has no active API entitlement, and as forbidden when the requested project belongs to another account.
object
object
Example
{ "error": { "code": "api_access_denied", "message": "API access is not available: the account has no active API entitlement." }}Project or segment not found
The exact missing resource is in error.code: project_not_found, segment_not_found, crawl_not_found, keyword_not_found, opportunity_not_found, snapshot_unavailable or not_found.
object
object
Example
{ "error": { "code": "project_not_found", "message": "Project not found." }}Crawling in progress (no audit data yet)
object
object
Example
{ "error": { "code": "crawl_in_progress", "message": "Crawling is in progress. No audit data is available yet." }}Validation error
Rejected query parameters. error.code is validation_error for parameter validation, or invalid_date_range / invalid_filter / invalid_event_type / unsupported_filter / unsupported_dimension / unsupported_scope / segment_filter_unsupported for module-specific rules.
object
object
Example
{ "error": { "code": "validation_error", "message": "project_id is required." }}Rate limit exceeded — retry after the interval in the Retry-After header
object
object
Example
{ "error": { "code": "rate_limit_exceeded", "message": "Rate limit exceeded. Try again later." }}Internal server error
object
object
Example
{ "error": { "code": "internal_error", "message": "Internal server error." }}