Get technical issue
One technical-issue type in full — what it is, why it matters, how to fix it, and every page it
currently affects, each with its specific evidence (which images, links, etc. triggered it). Get
issue_id from List technical issues.
GET /brands/{brand_id}/technical/issues/{issue_id}Authorization
| Header | Type | Required |
|---|---|---|
Authorization | Bearer asky_sk_… | required |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | uuid | required | From List brands |
issue_id | uuid | required | From List technical issues |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | optional | Affected pages per page, 1 to 100. Defaults to 20. |
cursor | string | optional | Opaque cursor from the previous response. Treat it as a token, never construct one. |
Request
cURL
curl --request GET \
--url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/technical/issues/7b3f9c1a-4e6d-4a2b-8c5f-1d9a3b6e7f42?limit=20' \
--header 'Authorization: Bearer <api-key>'Response
200
{
"data": [
{
"url": "https://example.com/",
"title": "Example — Home",
"evidence": [
"https://example.com/images/hero-1.jpg",
"https://example.com/images/hero-2.jpg",
"https://example.com/images/logo-partner-a.png",
"https://example.com/images/logo-partner-b.png"
]
}
],
"pagination": {
"limit": 20,
"has_more": false,
"next_cursor": null
},
"meta": {
"id": "7b3f9c1a-4e6d-4a2b-8c5f-1d9a3b6e7f42",
"name": "Images with empty alt text",
"category": "images",
"issue_type": "error",
"severity": "high",
"description": "Images that have an alt attribute, but are missing alt text. Images should have descriptive alternative text about its purpose, which helps the blind and visually impaired, and the search engines understand it and its relevance to the web page.",
"docs_url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#alt"
},
"request_id": "req_4e8c1a3f7b2d46f0ba9c"
}Response fields
| Field | Type | Description |
|---|---|---|
data | array | required. Every page currently affected, newest-detected first |
data[].url | string | null | |
data[].title | string | null | |
data[].evidence | string[] | required. The specific elements that triggered this issue on this page (image URLs, link URLs, etc). Empty when the issue is page-level rather than element-level |
pagination.limit | integer | required |
pagination.has_more | boolean | required |
pagination.next_cursor | string | null | Pass as cursor to get the next page. null once has_more is false |
meta.id | uuid | required |
meta.name | string | null | |
meta.category | string | null | e.g. images, links, url, meta_description |
meta.issue_type | string | required. One of critical, error, warning, opportunity |
meta.severity | string | required. One of high, medium, low |
meta.description | string | null | What the issue is and why it matters |
meta.docs_url | string | null | Further reading on the underlying web standard, when one exists |
request_id | string | required. Also returned as the x-request-id header. Quote it when contacting support |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | A parameter is unknown or malformed. The message names it |
| 401 | invalid_token | The key is missing, malformed, or does not exist |
| 401 | token_expired | The key passed its expiry date |
| 401 | token_revoked | The key was revoked |
| 404 | not_found | The brand does not exist, the issue does not currently affect any of this brand’s pages, or this key is not allowed to reach either. All three are deliberately indistinguishable |
| 429 | rate_limited | Over 300 requests per minute. See the Retry-After header |
Notes
evidence shape varies by issue type. Element-level issues (missing alt text, broken links)
list the specific offending URLs. Page-level issues (a slow page, a missing meta description) have
no discrete elements to list and return an empty array — the page itself is the finding.
meta describes the whole issue group, not the current page of data. meta.severity and
meta.issue_type are the same representative values List technical issues
shows for this id — picked across every affected page, not just the ones on this response — so they
stay constant no matter which page of data you’re on.
A 404 here can mean the issue was fixed. Once every affected page is resolved, the group no
longer exists — poll List technical issues rather than
retrying this id indefinitely. An out-of-range cursor on an otherwise-real group returns an empty
data page, not a 404.