Check a deploy before it ships
https://seolyticize.com /api/v1/tools/check_deploy Fetches pages now and compares what they tell search engines (status, robots, canonical, hreflang, title, H1, structured data types; and, against crawls that recorded them, meta description, Open Graph tags, structured data values, H2 outline and copy) with the latest complete crawl's snapshot of the same paths, or the complete crawl baselineCrawlId names (from list_crawls), to compare against a crawl from before a release; baseline says which crawl was used and when it ran, and notes warns when the latest crawl started before the last recorded deploy (deploy hook or deploy annotation), so the baseline may already include that release. Give previewUrl (a deploy preview or staging origin: the crawl's pages, one or more per template, are fetched on that host, up to maxUrls) or urls (specific addresses, on production or a preview; matched by path). Canonicals and hreflang on the preview host are read as the production host, so only real changes show. passed is false when anything at or above failOn (default critical: noindex added, canonical changed, title dropped, a page now 4xx/5xx, hreflang lost, a page unreachable) changed; markdown is a ready pull-request comment. The client's set_crawl_auth credentials are sent to the preview host too, so a password-protected preview can be checked. Used by the Seolyticize GitHub Action. Answers 'will this deploy hurt SEO' and 'did the release noindex anything'. No vendor charge; it fetches pages on the client's behalf, so it needs project:manage.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredpreviewUrlstringurlsstring[]maxUrlsintegerfailOnstringbaselineCrawlIdstring{
"clientId": "string",
"previewUrl": null,
"urls": [],
"maxUrls": 50,
"failOn": "critical",
"baselineCrawlId": null
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/check_deploy" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","previewUrl":null,"urls":[],"maxUrls":50,"failOn":"critical","baselineCrawlId":null}'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/check_deploy
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/check_deploy
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger