Bring a client to what its repo declares
https://seolyticize.com /api/v1/tools/apply_manifest Answers 'provision our product from its manifest' in one call that is safe to run on every deploy. Takes what a repository declares about its site (domain, framework, verification, tracker cadence, budget and its alert share, domain sweep, deploy hook, analytics paths and partners, crawl settings, default alerts and where they go, brief and brand terms, facts, goals, funnels) and brings the client to it through the existing tools, each with its own permission and checks. Each part is compared with what is there first: a step is kept when it would write nothing, ran when it changed something, would_run on a dry run. Fields the manifest leaves out are left as they are. files (the IndexNow key and Google verification file, which are public) come back on every real run. A new deploy hook's URL is in its step's result only, once. Free.
Parameters
Idempotency-KeystringheaderRequest body
application/json
domainstringrequirednamestringframeworkstringverificationstringtrackerFrequencystringmonthlyBudgetUsdnumberbudgetAlertAtnumberdomainSweepbooleandeployHookbooleanbriefobjectShow child parameters
overviewstringgoalstringpositioningstringaudiencestringvoicestringbrandTermsstring[]addobject[]Show child parameters
kindstringrequiredtitlestringrequiredbodystringurlstringanalyticsobjectShow child parameters
hostnamesstring[]includePathsstring[]excludePathsstring[]pathTemplatesstring[]partnersobject[]Show child parameters
namestringrequiredpathsstring[]requiredcrawlobjectalertsobjectShow child parameters
channelstringwebhookUrlstringemailRecipientsstring[]telegramChatIdstringincludestring[]factsobject[]Show child parameters
keystringrequiredvaluestringrequiredcategorystringtermsstring[]sourceUrlstringgoalsobject[]Show child parameters
namestringrequiredkindstringrequiredmatchstringrequiredvalueMinorintegerfunnelsobject[]Show child parameters
namestringrequiredstepsobject[]requiredShow child parameters
kindstringrequiredmatchstringrequiredlabelstringdryRunboolean{
"domain": "string",
"name": "string",
"framework": "nextjs",
"verification": "file",
"trackerFrequency": "daily",
"monthlyBudgetUsd": 0,
"budgetAlertAt": 0,
"domainSweep": true,
"deployHook": false,
"brief": {
"overview": "string",
"goal": "string",
"positioning": "string",
"audience": "string",
"voice": "string",
"brandTerms": [
"string"
],
"add": [
{
"kind": "competitor",
"title": "string",
"body": "string",
"url": "string"
}
]
},
"analytics": {
"hostnames": [
"string"
],
"includePaths": [
"string"
],
"excludePaths": [
"string"
],
"pathTemplates": [
"string"
],
"partners": [
{
"name": "string",
"paths": [
"string"
]
}
]
},
"crawl": {},
"alerts": {
"channel": "slack",
"webhookUrl": "string",
"emailRecipients": [
"string"
],
"telegramChatId": "string",
"include": [
"page-changes"
]
},
"facts": [
{
"key": "string",
"value": "string",
"category": "other",
"terms": [],
"sourceUrl": null
}
],
"goals": [
{
"name": "string",
"kind": "pageview",
"match": "string",
"valueMinor": null
}
],
"funnels": [
{
"name": "string",
"steps": [
{
"kind": "pageview",
"match": "string",
"label": "string"
}
]
}
],
"dryRun": false
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/apply_manifest" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"domain":"string","name":"string","framework":"nextjs","verification":"file","trackerFrequency":"daily","monthlyBudgetUsd":0,"budgetAlertAt":0,"domainSweep":true,"deployHook":false,"brief":{"overview":"string","goal":"string","positioning":"string","audience":"string","voice":"string","brandTerms":["string"],"add":[{"kind":"competitor","title":"string","body":"string","url":"string"}]},"analytics":{"hostnames":["string"],"includePaths":["string"],"excludePaths":["string"],"pathTemplates":["string"],"partners":[{"name":"string","paths":["string"]}]},"crawl":{},"alerts":{"channel":"slack","webhookUrl":"string","emailRecipients":["string"],"telegramChatId":"string","include":["page-changes"]},"facts":[{"key":"string","value":"string","category":"other","terms":[],"sourceUrl":null}],"goals":[{"name":"string","kind":"pageview","match":"string","valueMinor":null}],"funnels":[{"name":"string","steps":[{"kind":"pageview","match":"string","label":"string"}]}],"dryRun":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/apply_manifest
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/apply_manifest
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger