Skip to Content
APIEndpointsList technical issues

List technical issues

Every open technical / AI-crawlability issue found across your site, one row per issue type (not per occurrence) — the same shape as the Site Issues page: name, category, type, severity, and aggregate error/page counts. For one issue type’s full detail and every page it affects, see Get technical issue.

GET /brands/{brand_id}/technical/issues

Authorization

HeaderTypeRequired
AuthorizationBearer asky_sk_…required

Path parameters

ParameterTypeRequiredDescription
brand_iduuidrequiredFrom List brands

Query parameters

ParameterTypeRequiredDescription
limitintegeroptionalRows per page, 1 to 100. Defaults to 20.
cursorstringoptionalOpaque cursor from the previous response. Treat it as a token, never construct one.
issue_typestringoptionalFilter to one type. One of: critical, error, warning, opportunity.
severitystringoptionalFilter to one severity. One of: high, medium, low.

Request

curl --request GET \ --url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/technical/issues?limit=20' \ --header 'Authorization: Bearer <api-key>'

Response

{ "data": [ { "id": "7b3f9c1a-4e6d-4a2b-8c5f-1d9a3b6e7f42", "name": "Images with empty alt text", "category": "Images", "issue_type": "error", "severity": "high", "errors": 4, "pages": 1 }, { "id": "a26f456d-9e84-43e4-99d3-f933f2a96683", "name": "Page has very few internal inlinks", "category": "Links", "issue_type": "opportunity", "severity": "medium", "errors": 44, "pages": 44 } ], "pagination": { "limit": 20, "has_more": false, "next_cursor": null }, "request_id": "req_2a7c5e91b8d04f36ac10" }

Response fields

FieldTypeDescription
data[].iduuidrequired. The issue TYPE’s id — pass to Get technical issue
data[].namestringrequired
data[].categorystringrequired. e.g. Images, Links, URL, Meta Desc
data[].issue_typestringrequired. One of critical, error, warning, opportunity
data[].severitystringrequired. One of high, medium, low
data[].errorsintegerrequired. Total affected elements across every page (images, links, etc. — whichever this issue counts)
data[].pagesintegerrequired. Distinct pages currently affected
request_idstringrequired. Also returned as the x-request-id header. Quote it when contacting support

Errors

StatusCodeWhen
400invalid_requestA parameter is unknown or malformed. The message names it
401invalid_tokenThe key is missing, malformed, or does not exist
401token_expiredThe key passed its expiry date
401token_revokedThe key was revoked
404not_foundThe brand does not exist, or this key is not allowed to reach it. The two are deliberately indistinguishable
429rate_limitedOver 300 requests per minute. See the Retry-After header

Notes

This lists open issues only. A resolved or auto-resolved issue drops off this list entirely; there is no resolved filter on this endpoint.

An issue with no matching audit-rule definition is excluded, rather than returned with a null id. This is a real, if currently empty, edge case: every issue in production today has one.

errors is not always one row per page. Some issue types can find several affected elements on a single page (e.g. four images missing alt text on one page counts as 4 errors, 1 page); most count exactly one error per affected page.

Ordering is fixed: type (critical > error > warning > opportunity), then severity (high > medium > low), then most-affected pages first. There is no sort parameter.

Last updated on