get_editorial_velocity
get_editorial_velocityRead an editorial velocity analysis, poll until it is done
Returns the analysis started by POST /api/v1/tools/editorial-velocity. While status is pending or
running, call again every 5 seconds; progress gives the current stage (robots, sitemap, pages,
summary) and pagesRead out of pagesTotal. When status is failed, failureCode says why
(BLOCKED, the site refuses to be read; NO_SITEMAP; NO_DATES, pages read but none shows a readable
publication date, neither structured data, nor a date tag, nor a "Published on" mention; UNREACHABLE;
TIMEOUT; INTERNAL) and publications is null. A failed analysis is never a zero. A NO_DATES analysis may
carry sitemapCeiling, an upper bound read from the sitemap modification dates: at most total pages were
published or modified in the window. It is never a count of articles nor a pace, and the status stays failed.
When status is done, publications.total articles were published in window (12 full months, UTC),
perMonth is total / 12 and perWeek total / 52.14. ci95 is only meaningful when the analysis was sampled
(method.sampled). A total of 0 with ci95 present comes from a sample: it does not prove that the
website published nothing, and neither does a 0 with method.undecidedSections not empty (sections whose
reading stopped before a verdict, counted nowhere). Otherwise, a 0 covers what was read in full: the whole
site, or only its dated sections when method.undatedSections is not empty. A 0 with
publications.otherDatedPages above 0 means that dated pages were read, but nothing shows that they are
articles (product pages, event calendars): it adds to the meaning of the 0 above, it never replaces it.
method.inferredSections names the sections without article markup counted from the dates read in their
pages (itemprop attribute or <time> element). method.sameDaySections names the sections where at
least 80% of the pages counted share the same day: those pages are counted, the list is only a hint to check
the website (grouped publication, or dates changed in bulk). method.discovery says what the news pages
linked from the home page and the RSS or Atom feeds added to the sitemap; its articlesCounted is the part
of total that comes from addresses absent from the sitemap. When method.discovery.truncated is true, the
discovery stopped before the end and total is a minimum (a 0 is then not a proven zero, and ci95 is not an
upper bound). total is a minimum too when method.sitemapFilesFailed is above 0 (sitemap files that could
not be read, even after a second try). method.rateLimited is true when the website refused page reads and the
reading was slowed down. Editorial subdomains (newsroom, blog, news and the like, 3 at most, linked from the home page
or answering at newsroom. or blog.) are read too and counted in total (scope.hosts lists the hosts read, the main host first):
publications.byHost splits the articles counted by host, main host included, and
publications.mainHostOnly gives total, perMonth, perWeek, ci95 and monthly without the
subdomains (null when no subdomain has a counted article). In publications.bySection, the sections of a
subdomain are prefixed by its host (newsroom.example.com/press-releases). A subdomain that blocked the
reading is named in scope.hostsFailed: its articles could not be looked for, so a total of 0 is then
not a proven zero. publications.byDeclaredType splits the articles counted by the page type the website
declares itself (og:type, as the website writes it (case and accents kept, never translated); types equal but for case and accents are one row; beyond 10 rows the smallest declared types join the null row), null for no declared type; the same
split is in publications.mainHostOnly. It does not change what total counts. updates counts the articles updated more than one day
after their publication, or says why this is not measurable (DYNAMIC_DATES, dates generated when the page
is shown; SOURCES_DISAGREE, page and sitemap dates contradict each other; TOO_FEW_DATES).
When a failed analysis had been paid with tokens, billing says what became of them (tokens, the amount
charged for it, refunded, true once they were given back to the account that paid). It names no account,
and is absent for a free analysis or while the analysis is not failed.
No quota is consumed. The analysisId is random, whoever holds it can read the analysis, which is what
makes share links work. Analyses expire after 30 days. Reads that are not attributed to an account are
capped at 1000 per IP address and per UTC day, far above any legitimate polling, and crossing it returns
429 READ_RATE_LIMITED with Retry-After.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| analysisId | Yes | The analysisId returned by the creation call (22 characters). |