Kanorio

API 參考

Site

Content Delivery API: GET /site

此頁只有英文版。API 參考、Webhook 事件及變更紀錄維持英文,與程式碼中的欄位名稱、錯誤碼一致。
Base URL https://{site}/api/v1ErrorsPagination

Public site meta

GET/site
betaNo auth

Response 200

  • idstringrequired
  • namestring | nullrequired
  • descriptionstring | nullrequired
  • localestring | nullrequired
  • primaryLocalestring | null

    Primary locale code; its pages have no URL prefix

  • localesobject[]

    Published locales (primary first). Each secondary locale lives under `/{pathPrefix}/`.

  • locales[].localestringrequired

    BCP 47 locale code (`en-US`, `zh-Hant`); pass it (or `pathPrefix`) as `?locale=`

  • locales[].isPrimarybooleanrequired
  • locales[].labelstringrequired

    Language name written in that language (`English`, `Deutsch`, `Français`), for a language switcher

  • locales[].pathPrefixstring | nullrequired

    URL path prefix of this locale without slashes (`en`, `en-gb`, or a custom word); null for the primary locale, which has no prefix. Hosted pages, sitemaps and hreflang use the same prefix, so a custom frontend should route `/{pathPrefix}/…` to this locale.

  • timezonestring | nullrequired
  • currencystring | nullrequired
  • frontendMode"HOSTED" | "HEADLESS"required
  • homeUrlstring | nullrequired
  • publicVersionstring | nullrequired
  • brandobjectrequired

    Brand identity set under Site settings › Brand: the same colors, logo, fonts, corner radius and color scheme Kanorio applies to the hosted checkout, sign-in, customer account and emails. Values are resolved, so a front end can use them directly; `@kanorio/elements` applies them automatically. Changes take effect immediately, without publishing.

  • brand.displayNamestring | nullrequired
  • brand.logoobjectrequired

    The logo to show on a light background and on a dark background (the same asset when the owner uploaded only one)

  • brand.logo.lightobject | nullrequired
  • brand.logo.darkobject | nullrequired
  • brand.colorsobjectrequired
  • brand.colors.primaryobjectrequired

    Brand color for light and dark color schemes

  • brand.cornerRadius"soft" | "normal" | "sharp"required
  • brand.colorScheme"system" | "light" | "dark"required

    Color scheme the owner chose: `system` follows the visitor's device; `light` or `dark` fixes Kanorio's hosted checkout, sign-in and customer account to that scheme, and `logo` then returns that scheme's logo for both backgrounds

  • brand.radiusobjectrequired

    CSS lengths for the corner radius scale (`sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `card`, `media`, `button`); Kanorio-hosted pages expose the same values as `--site-radius-*`

  • brand.typographyobjectrequired

    Font id per locale group

  • brand.typography.bodyEnFontIdstringrequired
  • brand.typography.bodyZhHantFontIdstringrequired
  • brand.typography.bodyZhHansFontIdstringrequired
  • brand.typography.bodyJaFontIdstringrequired
  • brand.typography.bodyKoFontIdstringrequired
  • brand.fontsobject[]required

    The fonts `typography` refers to, deduplicated, with their stylesheets

  • brand.fonts[].idstringrequired

    Font id, as referenced by `typography`

  • brand.fonts[].familystringrequired

    Ready-to-use `font-family` value, fallbacks included

  • brand.fonts[].stylesheetUrlstring | nullrequired

    Stylesheet with the `@font-face` rules; null for system fonts

  • brand.fonts[].localesstring[]required

    Locales this font is used for (`en`, `zh-Hant`, `zh-Hans`, `ja`, `ko`)

  • mediaProtectionobject

    The owner's media protection settings. allowDownload: visitors may download images from the lightbox; deterrence: block right-click, drag and long-press on images and hide lightbox download and share (overrides allowDownload); keepCopyright: downloaded images keep the copyright field; watermark: a watermark is active (watermarked image URLs are already in content and assets).

  • mediaProtection.allowDownloadbooleanrequired
  • mediaProtection.keepCopyrightbooleanrequired
  • mediaProtection.deterrencebooleanrequired
  • mediaProtection.watermarkbooleanrequired
  • customerAccessobjectrequired

    Customer sign-in settings the sign-in panel needs before anyone is signed in. methods: the sign-in methods this site has turned on and the platform can provide right now, in display order (passkey, google, ..., email_code, email_link; email_code is always present); showNavEntry: whether signed-out visitors should see a sign-in entry; allowSignup: whether visitors without a purchase may register with their email.

  • customerAccess.showNavEntrybooleanrequired
  • customerAccess.allowSignupbooleanrequired
  • customerAccess.methods"passkey" | "google" | "apple" | "line" | "kakao" | "external_oidc" | "email_code" | "email_link"[]required
  • botProtectionobjectrequired

    Bot protection the site uses for anonymous forms and customer sign-in. provider is kanorio (built-in proof-of-work: fetch the challenge from GET /forms/{id}/challenge or GET /customer/auth/protection) or the third-party service the owner picked with their own keys: turnstile, recaptcha or hcaptcha. For a third-party provider, render that provider's widget with entries.<entry>.siteKey and entries.<entry>.action (forms, customer_login) and send its token as captchaToken; the server decides the provider from the site settings. recaptchaVersion is v2 (checkbox) or v3 (score) for recaptcha, otherwise null.

  • botProtection.provider"kanorio" | "turnstile" | "recaptcha" | "hcaptcha"required
  • botProtection.recaptchaVersion"v2" | "v3" | nullrequired
  • botProtection.entriesobjectrequired

    Per entry point (forms, customer_login): the widget site key and the action to pass to the widget. Empty when provider is kanorio.

  • crawlerRulesobject

    AI crawler block rules for @kanorio/sdk/edge middleware (invalidated via the ai-crawler-rules cache tag)

  • crawlerRules.blockedTokensstring[]
  • crawlerRules.listVersionstring
  • indexNowKeystring

    IndexNow key (public by protocol; served at /<key>.txt). @kanorio/sdk/edge uses it to answer the key verification file on an external storefront domain. null until the first IndexNow notification is sent.

  • listingsobject

    State of the Kanorio-managed listing pages (blog home, post category/tag/author pages, shop home, product category pages). live: served and has content, index it; empty: served but nothing to list yet, render it with robots noindex (seo.listingRobots in @kanorio/sdk does this); off: not served (hidden by the owner, or not declared in externalListings on a HEADLESS site), do not link to it. Kanorio's sitemap.xml, IndexNow notifications and llms.txt only include live listings.

  • listings.blogIndex"live" | "empty" | "off"required
  • listings.blogCategory"live" | "empty" | "off"required
  • listings.blogTag"live" | "empty" | "off"required
  • listings.blogAuthor"live" | "empty" | "off"required
  • listings.shopIndex"live" | "empty" | "off"required
  • listings.productCategory"live" | "empty" | "off"required
curl -X GET "https://{site}/api/v1/site"