Images and video
https://seolyticize.com /api/v1/tools/get_media_report Images and video across a crawl: alt text coverage, formats (and the share in AVIF or WebP), pages whose first image — usually the Largest Contentful Paint element — is lazy-loaded, how many images the image sitemap lists, embedded video with and without VideoObject markup and video sitemap coverage, plus the image checks' page counts. checkSizes asks the server for up to 100 image sizes (HEAD requests to the client's own hosts and its image CDNs) and lists the heaviest, with each judged against its role's band (thumbnail: target under 50KB, warn over 100KB, critical over 200KB; content: 100/200/500KB; hero, the page's first image: 200/300/700KB), and reads up to 20 product images' XMP for an IPTC DigitalSourceType that declares them AI-generated (trainedAlgorithmicMedia, compositeSynthetic, algorithmicMedia, compositeWithTrainedAlgorithmicMedia), and grades each image's browser caching (cache: long at a max-age of a week or more or immutable, short under a week, none with no-store, no-cache or no lifetime at all). Always: image hosts and the CDN each shows (by name, or by response headers when sizes are checked), the share on a separate host, and how pages lazy-load (native, perfmatters, EWWW, a generic script loader or none; script loaders are not reported as missing lazy loading). Answers 'are our images slowing the site down', 'which images lack alt text' and 'can our videos show in video results'. Free.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredcrawlIdstringcheckSizesboolean{
"clientId": "string",
"crawlId": "latest",
"checkSizes": false
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_media_report" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","crawlId":"latest","checkSizes":false}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
data, and its meta.Example
{
"data": {},
"meta": {
"requestId": "string",
"costMicros": 0,
"cached": true,
"cachedFrom": "string",
"dataAsOf": "string",
"sources": [
"string"
],
"partial": true,
"next": [
{
"tool": "string",
"args": {},
"why": "string"
}
],
"nextCursor": "string",
"dryRun": true
}
}Schema
datarequiredmetaobjectrequiredShow child parameters
requestIdstringrequiredcostMicrosintegerrequiredcachedbooleanrequiredcachedFromstringdataAsOfstringsourcesstring[]partialbooleanrequirednextobject[]requiredShow child parameters
toolstringargsobjectwhystringnextCursorstringdryRunbooleanX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerX-Request-IdstringExample
{
"error": "string",
"code": "string",
"next": "string",
"requestId": "string"
}Schema
errorstringrequiredcodestringnextstringrequestIdstringX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_media_report
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_media_report
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger