Keystone Developers
Open Keystone
API reference

Console API

SEO

6 endpoints.

GET/api/v1/admin/businesses/{business_id}/seo/actions

The site's prioritized SEO action list

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
statusquerystring | null
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_ActionsData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredActionsData
ActionsData fields
FieldTypeDescription
businessIdrequiredstring (uuid)
websiteIdrequiredstring (uuid)
actionsrequiredActionItem[]
ActionItem[] fields

ActionItem (not expanded)

metadataResponseMetadata | null
ResponseMetadata fields
FieldTypeDescription
paginationPaginationMetadata | null
PaginationMetadata fields
FieldTypeDescription
limitrequiredinteger
next_cursorstring | null
prev_cursorstring | null
has_morerequiredboolean
has_prevbooleandefault false
total_countinteger | null
status_countsobject | null
object | null fields

Map of string to integer

lifecycle_countsLifecycleCounts | null
LifecycleCounts fields
FieldTypeDescription
leadintegerdefault 0
prospectintegerdefault 0
customerintegerdefault 0
former_customerintegerdefault 0
classification_countsClassificationCounts | null
ClassificationCounts fields
FieldTypeDescription
signalobject
object fields

Nested object (not expanded)

touchobject
object fields

Nested object (not expanded)

stageobject
object fields

Nested object (not expanded)

metaResponseMeta | null
ResponseMeta fields
FieldTypeDescription
totalinteger | null
total_countinteger | null
pageinteger | null
per_pageinteger | null
  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/seo/blog/overview

Blog overview: search totals across every post, tracked keywords, per-post views

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_BlogOverviewData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredBlogOverviewData
BlogOverviewData fields
FieldTypeDescription
businessIdrequiredstring (uuid)
websiteIdrequiredstring (uuid)
generatedAtrequiredstring (date-time)
windowrequiredWindow
Window fields
FieldTypeDescription
currentrequiredDateRange
DateRange fields

DateRange (not expanded)

previousrequiredDateRange
DateRange fields

DateRange (not expanded)

totalsrequiredBlogTotals
BlogTotals fields
FieldTypeDescription
impressionsrequiredKpiTile
KpiTile fields

KpiTile (not expanded)

clicksrequiredKpiTile
KpiTile fields

KpiTile (not expanded)

keywordsrequiredBlogKeywordRow[]
BlogKeywordRow[] fields

BlogKeywordRow (not expanded)

postsrequiredobject
object fields

Map of string to PostViews

PostViews (not expanded)

coveragerequiredCoverage
Coverage fields
FieldTypeDescription
gscThroughstring (date) | null
posthogThroughstring (date) | null
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/seo/blog/posts/{blog_post_id}

Per-post performance: traffic, search, audit, speed and quality, with 30-day changes

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
blog_post_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_BlogPostPerformanceData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredBlogPostPerformanceData
BlogPostPerformanceData fields
FieldTypeDescription
blogPostIdrequiredstring (uuid)
businessIdrequiredstring (uuid)
websiteIdrequiredstring (uuid)
slugrequiredstring
pathrequiredstring
publishedOnstring (date) | null
generatedAtrequiredstring (date-time)
windowrequiredWindow
Window fields

Window, expanded above.

isNewrequiredboolean
sectionsrequiredPerfSection[]
PerfSection[] fields

PerfSection (not expanded)

queriesrequiredDrivingQuery[]
DrivingQuery[] fields

DrivingQuery (not expanded)

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/seo/scores

Current SEO scores per category, with history

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_ScoresData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredScoresData
ScoresData fields
FieldTypeDescription
businessIdrequiredstring (uuid)
websiteIdrequiredstring (uuid)
generatedAtrequiredstring (date-time)
scoresrequiredCategoryScore[]
CategoryScore[] fields

CategoryScore (not expanded)

historyrequiredobject
object fields

Map of string to ScoreHistoryPoint[]

Nested object (not expanded)

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/seo/site-health

Site health: technical audit, content review, traffic and search, latest vs previous

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_SiteHealthData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredSiteHealthData
SiteHealthData fields
FieldTypeDescription
businessIdrequiredstring (uuid)
websiteIdrequiredstring (uuid)
domainrequiredstring
generatedAtrequiredstring (date-time)
buildBuildBlock | null
BuildBlock fields
FieldTypeDescription
latestrequiredBuildSnapshot
BuildSnapshot fields

BuildSnapshot (not expanded)

previousBuildSnapshot | null
BuildSnapshot fields

BuildSnapshot (not expanded)

readsReadsBlock | null
ReadsBlock fields
FieldTypeDescription
latestrequiredQualitySnapshot
QualitySnapshot fields

QualitySnapshot (not expanded)

previousQualitySnapshot | null
QualitySnapshot fields

QualitySnapshot (not expanded)

targetQueryCountrequiredinteger
trafficTrafficBlock | null
TrafficBlock fields
FieldTypeDescription
currentrequiredTrafficWindow
TrafficWindow fields

TrafficWindow (not expanded)

previousrequiredTrafficWindow
TrafficWindow fields

TrafficWindow (not expanded)

organicCurrentrequiredTrafficWindow
TrafficWindow fields

TrafficWindow (not expanded)

organicPreviousrequiredTrafficWindow
TrafficWindow fields

TrafficWindow (not expanded)

byDevicerequiredDeviceTraffic[]
DeviceTraffic[] fields

Nested object (not expanded)

byDevicePreviousrequiredDeviceTraffic[]
DeviceTraffic[] fields

Nested object (not expanded)

visitorsSeriesrequiredSeriesPoint[]
SeriesPoint[] fields

Nested object (not expanded)

weeklyActiveWeeklyActive | null
WeeklyActive fields

WeeklyActive (not expanded)

byPageTypePageTypeShare[]default []
PageTypeShare[] fields

Nested object (not expanded)

byPageTypePreviousPageTypeShare[]default []
PageTypeShare[] fields

Nested object (not expanded)

conversionsConversionsBlock | null
ConversionsBlock fields
FieldTypeDescription
currentrequiredConversionCount[]
ConversionCount[] fields

Nested object (not expanded)

previousrequiredConversionCount[]
ConversionCount[] fields

Nested object (not expanded)

organicCurrentConversionCount[]default []
ConversionCount[] fields

Nested object (not expanded)

organicPreviousConversionCount[]default []
ConversionCount[] fields

Nested object (not expanded)

searchSearchBlock | null
SearchBlock fields
FieldTypeDescription
currentrequiredSearchWindow
SearchWindow fields

SearchWindow (not expanded)

previousrequiredSearchWindow
SearchWindow fields

SearchWindow (not expanded)

bySearchTyperequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

byDevicerequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

byCountryrequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

byAppearancerequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

byDevicePreviousrequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

byAppearancePreviousrequiredSearchSlice[]
SearchSlice[] fields

Nested object (not expanded)

issuesTrendrequiredIssueTrendPoint[]
IssueTrendPoint[] fields

IssueTrendPoint (not expanded)

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/seo/portfolio

Every site's current overall score — worst first

Parameters

NameInTypeDescription
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_PortfolioData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredPortfolioData
PortfolioData fields
FieldTypeDescription
entriesrequiredPortfolioEntry[]
PortfolioEntry[] fields

PortfolioEntry (not expanded)

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.