Sites
A site, its address, and everything that is true of it rather than of one publish: the subdomain, custom domains and their certificates, a password, an expiry date, and the traffic figures — which identify nobody.
Lists one page of the signed-in user's sites, newest first or in the order asked for, optionally narrowed by a search term or to one folder.
query Parameters
page^-?(?:0|[1-9]\d*)$pageSize^-?(?:0|[1-9]\d*)$qfolderIdsortLists one page of the signed-in user's sites, newest first or in the order asked for, optionally narrowed by a search term or to one folder. › Responses
OK
page^-?(?:0|[1-9]\d*)$ · requiredZero-based index of this page.
pageSize^-?(?:0|[1-9]\d*)$ · requiredHow many rows a full page holds.
The rows on this page, in the order that was asked for.
total^-?(?:0|[1-9]\d*)$ · requiredHow many sites match, across every page — which is what the pager is against. Equal to TotalOwned when no search was asked for.
totalOwned^-?(?:0|[1-9]\d*)$ · requiredHow many sites the caller owns, ignoring any search.
Both numbers, because the listing says both: the page header counts what the account holds and the line above a searched list counts what matched. One number cannot carry that sentence, and a client holding the other from an earlier response has a number that a deletion can make wrong.
Creates an empty site, either with the caller's own subdomain or a generated one.
Creates an empty site, either with the caller's own subdomain or a generated one. › Request Body
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = object · requires: subdomain |
Creates an empty site, either with the caller's own subdomain or a generated one. › Responses
Created
claimTokenPlaintext claim token, present only for an anonymous site and returned only here. The server keeps nothing but its hash, so a client that loses it cannot recover ownership.
expiresAtWhen an unclaimed anonymous site is removed. Null once the site has an owner.
siteIdULID of the new site.
subdomainAllocated subdomain, without the parent domain.
urlPublic HTTPS URL the site will answer on once a deploy goes live.
Attaches anonymous sites to the signed-in user.
Attaches anonymous sites to the signed-in user. › Request Body
Every site the caller holds a token for.
Attaches anonymous sites to the signed-in user. › Responses
OK
Sites now owned by the caller.
Sites that were not claimed, each with a reason. A batch can be partly successful, so this is not an error case — the caller shows what it got and drops the rest from local storage.
Tells the caller whether a subdomain could be used, without reserving it.
query Parameters
subdomainTells the caller whether a subdomain could be used, without reserving it. › Responses
OK
availableWhether this name could be used right now.
normalizedThe name as it would actually be stored, lowercase and trimmed. Null when the input failed format outright, in which case there was nothing to normalize.
reasonWhy not, using the same codes POST /sites would answer with. Null when
Available is true.
Reads one site and its recent deploys.
path Parameters
siteIdReads one site and its recent deploys. › Responses
OK
analyticsDays^-?(?:0|[1-9]\d*)$ · requiredHow many days of traffic this site's plan allows seeing, or zero when it includes none. Sent for the same reason as the flag above: the page can state what the plan covers instead of requesting the figures and rendering a refusal.
analyticsExportAvailableWhether this site's plan is sold with the traffic export. Read from the site's own plan rather than from the signed-in account's, because the two differ — an anonymous site is on the anonymous tier whoever is looking at it.
anonymousWhether the site has no account behind it.
Stated rather than inferred, and it replaces an inference the dashboard was making from ExpiresAt being set. That proxy held only while an expiry meant one thing: now that an owner can schedule a takedown on a site of their own, a paid site with a date on it would have read as anonymous and been told it gets deleted after a few days.
browserEditAvailableWhether this site's plan lets its owner edit a file in the browser. Sent so the file list can leave the Edit action out rather than offering one the server refuses.
commentAudienceWho the owner chose may comment — Off, Invited or Anyone. The stored choice; it takes
effect only where FeedbackAvailable is true and, for Invited, while the site is
invite-only, which the Sharing tab says in words.
createdAtWhen the site was created.
customDomainAllowance^-?(?:0|[1-9]\d*)$ · requiredHow many hostnames of the customer's own this site's plan allows across the account, or zero when it includes none.
Sent here rather than looked up from the public plans list, which is where the dashboard read it and
where it is not always findable: GET /plans filters to public tiers, so a site on a plan cut
for one account matched nothing and the section rendered as a heading with nothing underneath —
exactly the account most likely to have been given an allowance. The same argument as
PasswordProtectionAvailable, which is why it sits beside it.
The most recent deploys, newest first.
docsModeWhether the site is served through the documents viewer.
expiresAtWhen an unclaimed anonymous site is removed, or null once claimed.
expiryActionWhat the expiry does when it falls due, Pause or Delete. Meaningless while
ExpiresAt is null, and sent anyway so the form has something to show when the
owner sets a date.
feedbackAvailableWhether this site's plan includes comments. Sent for PasswordProtectionAvailable's reason: the control shows disabled with a reason rather than failing on submit.
folderIdThe folder it is filed in, or null when it sits at the root of the listing.
The same field SiteSummary carries. Sent here as well so the site's own page can put that
folder in its trail and return to it — after a removal, too — instead of to the root of the listing,
which is where somebody who opened the site from inside a folder did not come from.
The names the site used to answer on, newest first, each redirecting to it.
formsAvailableWhether the account's tier includes forms at all.
Reported beside the switch for the reason PasswordProtectionAvailable is: the dashboard has to tell "off" apart from "not yours to turn on", and a control that looks available and then refuses is worse than one that says why.
formsEnabledWhether the owner has switched form submissions on for this site.
invitedOnlyWhether only the people on the site's list may see it. Never true together with PasswordProtected.
invitedViewersAvailableWhether this site's plan offers invite-only sites. Sent for PasswordProtectionAvailable's reason: the Sharing tab shows the third choice disabled with a reason rather than offering it and failing.
lastActiveAtWhen it last received a deploy.
liveDeployIdThe deploy being served, or null.
maxSiteViewers^-?(?:0|[1-9]\d*)$ · requiredHow many people this site's plan lets the list hold, the owner included — and, per site, how many invitations it may mail in a day.
modeIsManualWhether the serving mode was chosen by the owner rather than detected from the files of the deploy that went live. What lets the dashboard say which of the two it is showing.
nameWhat to call it, or null when it has none and the subdomain should be shown instead.
A label only. The site is reached by Subdomain whatever this says, which is why the dashboard shows the address underneath rather than replacing it: two sites are allowed the same name, and the name is not what anybody types into a browser.
openFeedback^-?(?:0|[1-9]\d*)$ · requiredThreads open on the site, the number on the Feedback tab.
passwordProtectedWhether visitors must enter a password. Only whether one is set is reported — the password itself is stored as a hash, so there is nothing to return.
passwordProtectionAvailableWhether this site's plan permits a password at all. Sent so the dashboard can show the control in a disabled state with a reason, rather than offering it and failing on submit.
planIdPlan whose limits apply.
primaryUrlThe URL to lead with: a hostname of the customer's own once one is serving, and Url otherwise.
Sent as its own field rather than by overwriting Url, because the two are not interchangeable and the subdomain does not stop mattering: it needs no DNS of anybody's and keeps working when a custom domain's records are changed or lapse, which makes it the address to fall back to when the other one is what is being diagnosed.
publicDocumentCountsWhether readers of this documents site see each document's views and downloads. Every plan may turn it on.
scheduledExpiryAvailableWhether this site's plan lets its owner schedule when it comes down. Sent so the dashboard can show the control disabled with a reason rather than offering it and failing on submit.
siteIdULID of the site.
spaModeWhether an unmatched path falls back to index.html.
statusWhether the site is serving, and if not, who switched it off — the SiteStatus name.
What the pause control reads, and what tells the three off-states apart for the customer. They need different words and different offers: their own pause has a button that undoes it, a suspension has support to contact, and being held for quota has an upgrade. One boolean could not say which.
statusChangedAtWhen the state last changed, or null if it never has.
subdomainIts subdomain.
subdomainChangesLeft^-?(?:0|[1-9]\d*)$ · requiredHow many more times the owner may change Subdomain, or null when the plan does not limit it. What the change-of-address control and its confirmation show.
trafficBreakdownAvailableWhether this site's plan includes top lists, the globe and filters on the traffic page. Sent so the page draws a locked card naming the tier instead of requesting a list and rendering a 403.
trafficDetailAvailableWhether this site's plan splits people from bots and AI and shows devices, browsers and campaigns.
urlIts public URL on the platform's own content domain.
Takes a site offline and reserves its subdomain permanently.
Changes a site's serving settings and pushes them to the edge.
path Parameters
siteIdChanges a site's serving settings and pushes them to the edge. › Request Body
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = object |
Changes a site's serving settings and pushes them to the edge. › Responses
OK
commentAudienceWho the owner chose may comment — Off, Invited or Anyone. The stored choice, which
takes effect only where the plan and the viewing mode allow it.
docsModeThe setting as it now stands.
expiresAtWhen the site is now scheduled to come down, or null when it has no schedule. Echoed because the request sends a string and this is the instant it parsed to.
expiryActionWhat that schedule will do. Reported even when ExpiresAt is null, where it is the choice a future date would inherit.
folderIdThe folder the site is now filed in, or null when it sits at the root. Echoed so a client that sent
"root" reads back the null it produced rather than the token it sent.
formsEnabledWhether this site accepts form submissions. The site's own switch, which the tier has to permit before the edge honours it — so a site on a tier without forms reports false here and cannot be set to true.
invitedOnlyWhether only the people on the site's list may now see it. Never true together with PasswordProtected.
liveWhether the hostname mapping was rewritten. False for a site that has never published, where the setting is stored and takes effect with its first deploy.
modeIsManualWhether the serving mode shown here was chosen by the owner rather than detected from the files.
Reported so the dashboard can say which it is. A control that renders a detected value identically to a chosen one tells the owner they picked something they never picked, and hides the one fact that explains why the mode changed after a deploy — or why it stopped changing.
nameThe name as it now stands, or null when the site has none and the dashboard should show its subdomain. Echoed back because cleaning can change what was sent.
passwordProtectedWhether the site now requires a password. The password itself is never returned — only the hash is stored, so there is nothing to return even if it were wanted.
publicDocumentCountsWhether readers see each document's views and downloads.
siteIdULID of the site.
spaModeThe setting as it now stands.
Reads a site's custom domains and what each still needs.
path Parameters
siteIdReads a site's custom domains and what each still needs. › Responses
OK
The site's custom domains, oldest first, excluding ones that were given up. Empty for a site with none, which is every site until somebody adds one.
Claims a hostname the customer owns and returns the DNS records to add.
path Parameters
siteIdClaims a hostname the customer owns and returns the DNS records to add. › Request Body
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = object · requires: hostname, alreadyServing |
Claims a hostname the customer owns and returns the DNS records to add. › Responses
OK
bareDomainThe bare domain this www hostname sits directly on, or null when it is not a www
hostname or sits on something else.
What the dashboard needs to offer "send example.com here too": a bare domain cannot point at this
platform, so the customer redirects it to the www name at their DNS provider. Read from the
zone the nameserver lookup found when the domain was added, which is what makes
www.example.com.vn answer example.com.vn; a row added before that was recorded falls back
to the two-label case.
certificateReadyWhether the certificate has been issued, which is what says the DCV records are done rather than missing.
Sent because the provider stops returning those records the moment the certificate exists, including when it validated over HTTP without the customer adding anything. Without this the dashboard reads an empty list as "not issued yet" and the rows vanish from under somebody who is still copying them.
cnameTargetWhat the customer points their hostname at, once both validations pass. Served rather than hardcoded in the frontend for the reason every other piece of configuration is: a customer told the wrong target gets a hostname that validates and then never serves.
createdAtWhen the customer asked for the hostname.
dcvTxtNameName of the certificate validation TXT records, or null once none is needed.
dcvTxtValuesValues of the certificate validation TXT records, or empty once none is needed.
Several under one name: the certificate is issued as a pack and each member is validated separately, so the customer has more than one record to add and adding one of them satisfies nothing.
dnsProviderWho serves DNS for the hostname, as the lowercase name of DnsProvider, and therefore which order the dashboard has to ask for the records in.
hostnameThe hostname, normalized.
idULID of the domain row, used to remove or re-check it.
ownershipTxtNameName of the ownership TXT record, or null once it is no longer needed.
ownershipTxtValueValue of the ownership TXT record, or null for the same reason.
prevalidationUnavailableWhether the customer asked for the no-gap path and could not have it, because the certificate provider will not pre-validate a hostname whose zone it is already authoritative for — which is what DnsProvider reports when the customer's own DNS sits with the same provider.
Sent so the dashboard can say so. The override is right — the path they asked for cannot complete and the one they got does — but a customer who ticked the box to protect a live site and is told nothing will point their DNS here believing there is no gap, and learn otherwise from their own visitors.
statusWhere it is between being asked for and serving, as the lowercase name of SiteDomainStatus.
validationHow the certificate is being proven, as the lowercase name of CertificateValidation, and therefore how many records to show.
"http" is one CNAME and nothing else. "txt" is the no-gap path a customer asked for
because their hostname is already serving, and carries the record pairs above. Sent rather than
inferred from those pairs being empty, which is what an "http" row and a finished
"txt" row would otherwise look like alike.
verificationErrorsWhy the certificate provider has not activated the hostname, in its words, or empty when it has nothing to say.
verifiedAtWhen both validations first passed, or null while still pending.
Stops serving a site on a hostname and releases it.
path Parameters
siteIddomainIdStops serving a site on a hostname and releases it. › Responses
OK
hostnameThe hostname that stopped serving.
idULID of the domain that was removed.
Asks the provider about a pending domain now instead of waiting for the backoff.
path Parameters
siteIddomainIdAsks the provider about a pending domain now instead of waiting for the backoff. › Responses
OK
bareDomainThe bare domain this www hostname sits directly on, or null when it is not a www
hostname or sits on something else.
What the dashboard needs to offer "send example.com here too": a bare domain cannot point at this
platform, so the customer redirects it to the www name at their DNS provider. Read from the
zone the nameserver lookup found when the domain was added, which is what makes
www.example.com.vn answer example.com.vn; a row added before that was recorded falls back
to the two-label case.
certificateReadyWhether the certificate has been issued, which is what says the DCV records are done rather than missing.
Sent because the provider stops returning those records the moment the certificate exists, including when it validated over HTTP without the customer adding anything. Without this the dashboard reads an empty list as "not issued yet" and the rows vanish from under somebody who is still copying them.
cnameTargetWhat the customer points their hostname at, once both validations pass. Served rather than hardcoded in the frontend for the reason every other piece of configuration is: a customer told the wrong target gets a hostname that validates and then never serves.
createdAtWhen the customer asked for the hostname.
dcvTxtNameName of the certificate validation TXT records, or null once none is needed.
dcvTxtValuesValues of the certificate validation TXT records, or empty once none is needed.
Several under one name: the certificate is issued as a pack and each member is validated separately, so the customer has more than one record to add and adding one of them satisfies nothing.
dnsProviderWho serves DNS for the hostname, as the lowercase name of DnsProvider, and therefore which order the dashboard has to ask for the records in.
hostnameThe hostname, normalized.
idULID of the domain row, used to remove or re-check it.
ownershipTxtNameName of the ownership TXT record, or null once it is no longer needed.
ownershipTxtValueValue of the ownership TXT record, or null for the same reason.
prevalidationUnavailableWhether the customer asked for the no-gap path and could not have it, because the certificate provider will not pre-validate a hostname whose zone it is already authoritative for — which is what DnsProvider reports when the customer's own DNS sits with the same provider.
Sent so the dashboard can say so. The override is right — the path they asked for cannot complete and the one they got does — but a customer who ticked the box to protect a live site and is told nothing will point their DNS here believing there is no gap, and learn otherwise from their own visitors.
statusWhere it is between being asked for and serving, as the lowercase name of SiteDomainStatus.
validationHow the certificate is being proven, as the lowercase name of CertificateValidation, and therefore how many records to show.
"http" is one CNAME and nothing else. "txt" is the no-gap path a customer asked for
because their hostname is already serving, and carries the record pairs above. Sent rather than
inferred from those pairs being empty, which is what an "http" row and a finished
"txt" row would otherwise look like alike.
verificationErrorsWhy the certificate provider has not activated the hostname, in its words, or empty when it has nothing to say.
verifiedAtWhen both validations first passed, or null while still pending.
Lists the variables a site's functions read: names and the last four characters of each value, never a value.
path Parameters
siteIdLists the variables a site's functions read: names and the last four characters of each value, never a value. › Responses
OK
allowedWhether the site may run functions now. False, the variables are kept but none reaches the edge, and none can be set.
maxTotalValueBytes^-?(?:0|[1-9]\d*)$ · requiredLargest total of a site's values, in UTF-8 bytes.
maxValueBytes^-?(?:0|[1-9]\d*)$ · requiredLargest value of one variable, in UTF-8 bytes.
maxVars^-?(?:0|[1-9]\d*)$ · requiredMost variables a site may hold.
valueBytes^-?(?:0|[1-9]\d*)$ · requiredThe values' total size, in UTF-8 bytes.
The variables, by name.
Sets a variable the site's functions read; the value is sealed on arrival and never shown back.
path Parameters
siteIdnameSets a variable the site's functions read; the value is sealed on arrival and never shown back. › Request Body
valueThe value, in plain text — sealed on arrival and never shown back.
Sets a variable the site's functions read; the value is sealed on arrival and never shown back. › Responses
OK
createdAtWhen it was first set.
last4The value's last four characters, or empty for a short value.
nameThe name.
updatedAtWhen its value last changed.
Reads one page of the comments left on a site's pages, newest first, with the tab's counts.
path Parameters
siteIdquery Parameters
statuspathpage^-?(?:0|[1-9]\d*)$Reads one page of the comments left on a site's pages, newest first, with the tab's counts. › Responses
OK
availableWhether the site's plan includes comments.
comments^-?(?:0|[1-9]\d*)$ · requiredComments the site holds, deleted ones not counted — what the plan's ceiling counts.
limit^-?(?:0|[1-9]\d*)$ · requiredThe plan's ceiling on comments per site.
open^-?(?:0|[1-9]\d*)$ · requiredThreads open on the site.
page^-?(?:0|[1-9]\d*)$ · requiredThe page returned, from 0.
pageSize^-?(?:0|[1-9]\d*)$ · requiredRows per page.
pathsEvery page that has a thread, for the page filter.
resolved^-?(?:0|[1-9]\d*)$ · requiredThreads resolved on the site.
The comments, newest first.
total^-?(?:0|[1-9]\d*)$ · requiredComments matching the filter.
Lists who is blocked from commenting on a site, most recent first, fifty at a time.
path Parameters
siteIdquery Parameters
page^-?(?:0|[1-9]\d*)$Lists who is blocked from commenting on a site, most recent first, fifty at a time. › Responses
OK
page^-?(?:0|[1-9]\d*)$ · requiredThe page returned, from 0.
pageSize^-?(?:0|[1-9]\d*)$ · requiredRows per page.
Most recent first.
total^-?(?:0|[1-9]\d*)$ · requiredEverybody blocked on the site.
Blocks whoever wrote a comment from commenting on the site, optionally deleting what they wrote there.
path Parameters
siteIdBlocks whoever wrote a comment from commenting on the site, optionally deleting what they wrote there. › Request Body
commentIdA comment the person wrote on the site.
removeCommentsWhether to delete every comment they wrote on the site as well.
Blocks whoever wrote a comment from commenting on the site, optionally deleting what they wrote there. › Responses
OK
commentsRemoved^-?(?:0|[1-9]\d*)$ · requiredHow many of their comments were deleted now.
userIdThe person, as the Blocked list names them.
Reads a site's comment threads whole, with where each sits on its page and a cursor for what changed next.
path Parameters
siteIdquery Parameters
statuspathsince^-?(?:0|[1-9]\d*)$page^-?(?:0|[1-9]\d*)$Reads a site's comment threads whole, with where each sits on its page and a cursor for what changed next. › Responses
OK
cursor^-?(?:0|[1-9]\d*)$ · requiredThe largest change value on the site at the moment of the read; send it as since to get only the
threads that changed after.
moreWhether another page follows.
page^-?(?:0|[1-9]\d*)$ · requiredThe page returned, from 0.
The threads, in the order they were opened.
Answers a comment thread as the site's owner, and resolves it too when asked.
path Parameters
siteIdthreadIdAnswers a comment thread as the site's owner, and resolves it too when asked. › Request Body
bodyThe reply, plain text.
resolveWhether to resolve the thread with the reply; false by default.
Answers a comment thread as the site's owner, and resolves it too when asked. › Responses
OK
Its comments, oldest first; deleted ones left out.
createdAtWhen it was opened.
idThread id, for replying and resolving.
outdatedWhether it was opened on an earlier version than the one the site serves now — the words it points at may have changed since.
pathThe page it is on: a path on the site, or a document's path in a documents site.
Where on the page.
resolvedAtWhen it was resolved, or null while open.
resolvedByWho resolved it, by name, or null while open.
urlThe link that opens the page at the thread.
Reopens a resolved comment thread as the site's owner.
path Parameters
siteIdthreadIdReopens a resolved comment thread as the site's owner. › Responses
OK
Its comments, oldest first; deleted ones left out.
createdAtWhen it was opened.
idThread id, for replying and resolving.
outdatedWhether it was opened on an earlier version than the one the site serves now — the words it points at may have changed since.
pathThe page it is on: a path on the site, or a document's path in a documents site.
Where on the page.
resolvedAtWhen it was resolved, or null while open.
resolvedByWho resolved it, by name, or null while open.
urlThe link that opens the page at the thread.
Resolves a comment thread as the site's owner.
path Parameters
siteIdthreadIdResolves a comment thread as the site's owner. › Responses
OK
Its comments, oldest first; deleted ones left out.
createdAtWhen it was opened.
idThread id, for replying and resolving.
outdatedWhether it was opened on an earlier version than the one the site serves now — the words it points at may have changed since.
pathThe page it is on: a path on the site, or a document's path in a documents site.
Where on the page.
resolvedAtWhen it was resolved, or null while open.
resolvedByWho resolved it, by name, or null while open.
urlThe link that opens the page at the thread.
Lists the forms a site has collected, and the account's month.
path Parameters
siteIdLists the forms a site has collected, and the account's month. › Responses
OK
enabledWhether this site's switch is on, so the tab can say why nothing is arriving.
One row per form name, most recently used first.
monthlyAllowance^-?(?:0|[1-9]\d*)$ · requiredWhat the account's tier allows a month. Zero means forms are not part of it.
usedThisMonth^-?(?:0|[1-9]\d*)$ · requiredSubmissions the account has taken this calendar month, across every site it owns. The figure the allowance is measured against, which is why it is not the site's own count.
Reads one page of a form's submissions, newest first.
path Parameters
siteIdformNamequery Parameters
page^-?(?:0|[1-9]\d*)$pageSize^-?(?:0|[1-9]\d*)$Reads one page of a form's submissions, newest first. › Responses
OK
page^-?(?:0|[1-9]\d*)$ · requiredZero-based index of the page returned.
pageSize^-?(?:0|[1-9]\d*)$ · requiredHow many rows a page holds, after the cap was applied.
The page, newest first.
total^-?(?:0|[1-9]\d*)$ · requiredHow many this form has in total, so the reader knows there is more.
Takes a site off the air without deleting it, keeping its files and subdomain.
path Parameters
siteIdTakes a site off the air without deleting it, keeping its files and subdomain. › Responses
OK
ownerPausedWhether the owner has it switched off, whatever the status says.
siteIdULID of the site.
statusIts lifecycle state, one of SiteStatus as text.
statusChangedAtWhen the state last changed, or null if it never has.
subdomainThe subdomain it is addressed by, whether or not it is serving.
Puts a paused site back on the air, if the plan still has room for it.
path Parameters
siteIdPuts a paused site back on the air, if the plan still has room for it. › Responses
OK
ownerPausedWhether the owner has it switched off, whatever the status says.
siteIdULID of the site.
statusIts lifecycle state, one of SiteStatus as text.
statusChangedAtWhen the state last changed, or null if it never has.
subdomainThe subdomain it is addressed by, whether or not it is serving.
Moves a site to a new subdomain; the old one keeps redirecting to it.
path Parameters
siteIdMoves a site to a new subdomain; the old one keeps redirecting to it. › Request Body
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = object · requires: subdomain |
Moves a site to a new subdomain; the old one keeps redirecting to it. › Responses
OK
The names it used to answer on, newest first, each redirecting here.
siteIdULID of the site.
subdomainThe subdomain it answers on now.
subdomainChangesLeft^-?(?:0|[1-9]\d*)$ · requiredHow many more changes its plan allows, or null when it allows any number.
urlIts URL on the content domain.
Reads one site's traffic tiles, chart and status split for a range, audience and filters.
path Parameters
siteIdquery Parameters
rangeaudiencefilterReads one site's traffic tiles, chart and status split for a range, audience and filters. › Responses
OK
asOfWhen the Analytics Engine figures were read, or null when none were.
availableFalse when Analytics Engine could not be read and nothing was kept.
breakdownDays^-?(?:0|[1-9]\d*)$ · requiredDays the lists, globe and status split cover — the range, capped at what Analytics Engine keeps.
bucketWidth of a chart point: hour, day or week.
days^-?(?:0|[1-9]\d*)$ · requiredIts length in days.
The documents table, by UTC day.
fromFirst instant of the range, UTC.
measuredSinceFirst day anything was rolled up for this site, or null.
rangeThe range as the page spells it: 24h, 12m, or {N}d.
sampledWhether any figure is an estimate from sampled rows.
The chart, or null when Analytics Engine could not be read.
seriesFromWhere the chart and tiles start: From, except on a filtered range longer than BreakdownDays, where only the breakdown window can be filtered.
speedAvailableFalse when the speed figures were asked for and could not be read, so a null Speed means "couldn't load" rather than "nothing measured".
splitSinceFirst whole day bots were counted apart from people and arrivals were recorded, or null when not yet. Before it, people include bots and visits are unknown; the page marks the day. Equal to MeasuredSince for a site that was split from its first day, which has no "before".
toEnd of the range, exclusive: the top of the next hour.
Reads one of a site's traffic lists: top pages, referrers, countries or broken links.
path Parameters
siteIdquery Parameters
dimensionrangeaudiencefilterlimit^-?(?:0|[1-9]\d*)$Reads one of a site's traffic lists: top pages, referrers, countries or broken links. › Responses
OK
asOfWhen it was read from Analytics Engine, or null.
availableFalse when the list could not be read and nothing was kept.
breakdownDays^-?(?:0|[1-9]\d*)$ · requiredDays the list covers.
dimensionWhich list: page, referrer, country or notfound.
fromFirst instant the list covers — the breakdown window, not always the range.
Values, busiest first, or null when the list could not be read.
rangeThe range asked for.
sampledWhether any count is an estimate from sampled rows.
toEnd of the window, exclusive.
Lists the origins a site proxies /api/* to, with header names and the last four characters of each value.
path Parameters
siteIdLists the origins a site proxies /api/* to, with header names and the last four characters of each value. › Responses
OK
The account's proxied requests this month against its plan.
limit^-?(?:0|[1-9]\d*)$ · requiredMost upstreams a site may declare.
proxyBlockedWhether the platform switched this site's proxy off (D17): every proxy route answers 404 until it is lifted, whatever the upstreams say.
The proxy routes the live version's _redirects declares; empty when it has none.
The site's upstreams, oldest first.
Declares an origin the site may proxy /api/* to, with headers whose values are sealed on arrival and never shown back.
path Parameters
siteIdDeclares an origin the site may proxy /api/* to, with headers whose values are sealed on arrival and never shown back. › Request Body
Headers to attach to every call, values in plain text — sealed on arrival.
methodsMethods visitors may send; GET only when left out.
originhttps://host the site's _redirects sends calls to.
Declares an origin the site may proxy /api/* to, with headers whose values are sealed on arrival and never shown back. › Responses
OK
blockedWhether the platform blocked this origin for every site (D17): calls to it answer 502 until the block is lifted.
createdAtWhen it was declared.
Header names and the last four characters of each value.
idUpstream id.
methodsMethods visitors may send, GET implying HEAD.
originhttps://host.
updatedAtWhen it last changed.
Lists the site's latest proxied requests, newest first: method, path without its query, status and timing.
path Parameters
siteIdLists the site's latest proxied requests, newest first: method, path without its query, status and timing. › Responses
OK
asOfWhen the entries were read, or null when they were not.
availableFalse when the log could not be read: no dataset configured, or Analytics Engine down.
Latest proxied requests, newest first.
Changes the methods an upstream is open to, sets header values, or removes headers.
path Parameters
siteIdupstreamIdChanges the methods an upstream is open to, sets header values, or removes headers. › Request Body
methodsThe methods to allow from now on; unchanged when left out.
removeHeadersNames of headers to drop.
Headers to add or replace, values in plain text — sealed on arrival.
Changes the methods an upstream is open to, sets header values, or removes headers. › Responses
OK
blockedWhether the platform blocked this origin for every site (D17): calls to it answer 502 until the block is lifted.
createdAtWhen it was declared.
Header names and the last four characters of each value.
idUpstream id.
methodsMethods visitors may send, GET implying HEAD.
originhttps://host.
updatedAtWhen it last changed.
Reads one page of the people a site is shared with, and whether each has opened it.
path Parameters
siteIdquery Parameters
qstatuspage^-?(?:0|[1-9]\d*)$pageSize^-?(?:0|[1-9]\d*)$Reads one page of the people a site is shared with, and whether each has opened it. › Responses
OK
availableWhether the plan offers invite-only sites at all. A list can outlive the plan that allowed it, and is still shown so it can be shortened; adding to it is refused.
How many people are in each status, ignoring the search and filter.
invitedOnlyWhether the site is currently open only to the people listed.
limit^-?(?:0|[1-9]\d*)$ · requiredThe most people this site's plan allows on the list, the owner included.
page^-?(?:0|[1-9]\d*)$ · requiredThe zero-based page returned.
pageSize^-?(?:0|[1-9]\d*)$ · requiredRows per page.
total^-?(?:0|[1-9]\d*)$ · requiredHow many rows match the search and filter, across every page.
The rows on this page: the owner's first, then the most recently added.
Puts addresses on the list of people who may see a site — all of them, or none — and mails each.
path Parameters
siteIdPuts addresses on the list of people who may see a site — all of them, or none — and mails each. › Request Body
emailsThe addresses to add, as typed. Each is trimmed and lower-cased before it is stored; repeats collapse.
notifyWhether to mail each address added, defaulting to yes. Undo sends false: putting back somebody just removed should not mail them twice.
roleWhat every address added may do: View (the default) or Comment, in any case. Comment
is refused on a plan without comments. Addresses already listed keep the role they have.
Puts addresses on the list of people who may see a site — all of them, or none — and mails each. › Responses
OK
addedThe addresses newly put on the list, as stored.
alreadyListedThe addresses sent that were on the list already, left as they were.
total^-?(?:0|[1-9]\d*)$ · requiredHow many people the list now holds, the owner included.
Takes one address off a site's list and ends that person's access within a minute.
path Parameters
siteIdquery Parameters
emailTakes one address off a site's list and ends that person's access within a minute. › Responses
OK
emailThe address removed, as it was stored.
total^-?(?:0|[1-9]\d*)$ · requiredHow many people the list still holds, the owner included.
Changes what one person on a site's list may do — view it, or also comment on it.
path Parameters
siteIdquery Parameters
emailChanges what one person on a site's list may do — view it, or also comment on it. › Request Body
roleThe role to give: View or Comment, in any case.
Changes what one person on a site's list may do — view it, or also comment on it. › Responses
OK
emailThe address, as it is stored.
roleThe role it now has.
Mails one person on a site's list again — at most once a day per address.
path Parameters
siteIdMails one person on a site's list again — at most once a day per address. › Request Body
emailThe address on the list to mail again, in any case.
Mails one person on a site's list again — at most once a day per address. › Responses
OK
emailThe address mailed, as stored.
emailedAtWhen the mail was queued; another may be sent a day after this.