/sites/{siteId}/statusRead a site's setup state
The whole setup state of one site in a single call: verified, ruleset published, tag manager connected, and whether either product has ever been heard from.
Auth header
Authorization: Bearer tsk_live_…The key needssites:read
Parameters
siteIdstringin pathrequiredThe site id, from GET /v1/sites.
Example request
curl "https://app.tagsentry.ai/api/v1/sites/3f6c1b8e-2d4a-4c7e-9a51-0b8f2e6d7c10/status" \ -H "Authorization: Bearer tsk_live_…"Response 200
siteIdstringrequireddomainstringrequiredregionstringrequiredOne of
EU,USverifiedbooleanrequiredHas this account proved it controls the domain.
rulesetPublishedbooleanrequiredtagManagerConnectedbooleanrequiredsnippetInstalledbooleanrequiredIs the snippet on the site: a consent decision arrived, a scan or look read it on the homepage, or the domain was verified by its meta tag and the ruleset is served. False is not proof it is absent.
consentSignalSeenbooleanrequiredHave we ever received a consent decision from this site.
monitoringSignalSeenbooleanrequiredHave we ever received a tag event. FALSE IS NOT A FAILED INSTALL: monitoring runs only after a consent decision that grants the category it rides on, so a correct install whose visitors reject analytics reports false forever, correctly.
nextActionstringrequiredOne sentence: the single most useful thing to do next, or that nothing is needed.
Example response
{ "siteId": "3f6c1b8e-2d4a-4c7e-9a51-0b8f2e6d7c10", "domain": "silverpine.example", "region": "EU", "verified": false, "rulesetPublished": false, "tagManagerConnected": false, "snippetInstalled": false, "consentSignalSeen": false, "monitoringSignalSeen": false, "nextAction": "…"}More about this endpoint
Plus nextAction -- one sentence naming the most useful thing to do next.
It exists so an agent does not have to compose five reads and then work out what they mean. Read nextAction first and the booleans only if you disagree with it.
monitoringSignalSeen: false IS NOT A FAILED INSTALL. Monitoring runs only after a consent decision that grants the category it rides on.
Errors401 · 403 · 404 · 500
401Missing, malformed, unknown, revoked or expired API key. These are deliberately indistinguishable in the response -- distinguishing them would confirm to a caller that a token was once real.403The key authenticated but does not carry the scope(s) this operation requires, or (`domain_not_verified`) the site's domain is not verified, so its consent records are not released.404No such resource on this account. A site id belonging to a DIFFERENT account answers 404, never 403 -- a 403 would confirm the id exists somewhere.500Something failed on our side. The requestId in the body is what to quote.
Every error has the same body: { error: { code, message, requestId } }.
From the OpenAPI document, version 2026-08-26. Raw OpenAPI